Moving branches to xml-security-java/branches

diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 0000000..f2f244f
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1,5 @@
+.classpath
+.project
+*.properties
+build
+bin
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
new file mode 100644
index 0000000..64ab148
--- /dev/null
+++ b/CHANGELOG.txt
@@ -0,0 +1,161 @@
+Changelog for "Apache xml-security" <http://xml.apache.org/security/>
+
+New in v1.2.1
+ * Fix the memory leak when using xpath or using ResourceResolver and not hitting 
+  	  getElementByIdUsingDOM() [http://issues.apache.org/bugzilla/show_bug.cgi?id=32836]
+ * Fix the bug with using XPath2Filter and inclusive c14n
+ * Fix the bug arrouse in reusing Canonicalizers
+ * Fix base64transformation bug [http://issues.apache.org/bugzilla/show_bug.cgi?id=33393 ]
+ * Fix the XMLsignatureInput reset() bug.
+ * Clean unused jar (xmlParserAPI.jar,etc) and check and stored new versions.
+ * generated the dist jar with version (i.e. xmlsec-1.2.1.jar instead of plain xmlsec.jar)
+ * Clean unused build*.xml files.
+
+
+##############################################################################
+# New in v1.0.3                                                   24. May 2002
+##############################################################################
+
+IMPORTANT:
+
+ - The different classes do not call Init.init() any longer. This must be done 
+   by YOU in your application. If you miss that, you'll get many 
+   AlgorithmNotRegistered exceptions...
+
+--------------------------------
+
+Summary:
+ 
+ - The software is faster. Especially canonicalization is between 
+   factor 5--80 faster than the old one.
+ 
+ - Some deprecated methods in the Canonicalizer are deleted.
+ 
+ - We support Exclusive Canonicalization
+ 
+ - We support the XPath Filter version 2.0 Draft.
+
+--------------------------------
+
+Optimizations and speed-up
+
+ - canonicalization
+   - inclusive c14n is now faster (factor between 5 and 80)
+ - transforms
+   - enveloped-signature is now faster (no XPath ops any more)
+   - base64 is now faster (no XPath ops any more)
+   - c14n is now faster (due to faster c14n algo)
+
+--------------------------------
+
+Signature package:
+
+ - The XMLSignatureInput which is used for passing node sets and octet 
+   streams into transforms and which is also the result of transforms
+   uses a java.util.Set now instead of a NodeList for the internal
+   representation of xpath node sets. This allows easier queries in the
+   form: Is node N part of the node set. 
+   
+   The implication is that you can also pass a Set which contains the nodes
+   to be canonicalized to the Canonicalizers using
+   public byte[] canonicalizeXPathNodeSet(Set xpathNodeSet)
+
+--------------------------------
+
+Canonicalizer:
+
+ - A bug (well, my understanding of c14n) is corrected regarding the
+   canonicalization of node sets. That bug related to the xml:* 
+   attributes. See xmldsig mailing list archive @ w3.org for details.
+
+ - removed are the methods
+
+   - public byte[] canonicalize(Node node)
+   - public byte[] canonicalizeDocument(Document doc)
+   - public byte[] canonicalizeSingleNode(Node rootNode)
+
+     replaced by public byte[] canonicalizeSubtree(Node node)
+
+   - public byte[] canonicalize(NodeList xpathNodeSet)
+
+     replaced by public byte[] canonicalizeXPathNodeSet(NodeList xpathNodeSet)
+   
+   - public void setXPath(Object xpath)
+   - public Object getXPath()
+   - public String getXPathString()
+   - public void setXPathNodeSet(NodeList nodeList)
+   
+     These are no longer in use. If you want to c14nize an xpath 
+     node set, select it using CachedXPathAPI and then apply 
+     canonicalizeXPathNodeSet to the node set. 
+   
+   - public void setRemoveNSAttrs(boolean remove)
+   - public boolean getRemoveNSAttrs() 
+   
+     The c14nizers do not add any attributes (namespaces or xml:*)
+     to the document, so these method make no sense.
+     
+ - The Canonicalizer now supports "Exclusive XML Canonicalization 
+   Version 1.0" <http://www.w3.org/Signature/Drafts/xml-exc-c14n>, Rev 1.58.
+   
+   For that reason, the c14n methods allow an additional String parameter 
+   for passing the inclusive namespaces.
+   
+   public byte[] canonicalizeSubtree(Node node, 
+                                     String inclusiveNamespaces)
+   public byte[] canonicalizeXPathNodeSet(NodeList xpathNodeSet, 
+                                          String inclusiveNamespaces)
+   
+   Such a string looks e.g. like this 
+   
+     String inclusiveNamespaces = "ds xenc ex #default";
+     
+   For more on exclusive c14n, see the spec. If you pass this parameter to the
+   regular (inclusive) c14nizer, you'll get a 
+   CanonicalizationException("c14n.Canonicalizer.UnsupportedOperation")
+   
+--------------------------------
+
+Transforms:
+   
+ - The exclusive c14n is also supported by the transform framework. 
+   The parameter for the inclusive namespaces is the class
+   org.apache.xml.security.transforms.params.InclusiveNamespaces
+   
+   If you want to make a Transform like this, do that:
+   
+   Document doc = ...;
+   Transforms transforms = new Transforms(doc);
+   InclusiveNamespaces incNS = new InclusiveNamespaces(doc, "ns2");
+   transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS,
+                           incNS.getElement());
+                           
+ - The XPathContainer for the XPath transform is now moved from the
+   org.apache.xml.security.c14n.helper package to 
+   org.apache.xml.security.transforms.params.XPathContainer
+
+ - The enveloped-signature transform is faster now. We don't do costly
+   XPath operations but 'simple' DOM ops.
+
+ - Base64 is faster (no XPath ops).
+
+ - The TransformXPath2Filter is now supported by the package. It can be used by
+   using the identifier Transforms.TRANSFORM_XPATH2FILTER in conjuction with the 
+   XPath2FilterContainer for passing parameters. To know what xfilter2 is, see
+   http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/ :
+
+   Document doc = ...;
+   Transforms transforms = new Transforms(doc);
+   XPath2FilterContainer x2c = 
+         // intersect
+         XPath2FilterContainer.newInstanceIntersect(doc, "//a");
+         // subtract
+         XPath2FilterContainer.newInstanceSubtract(doc, "//a");
+         // union
+         XPath2FilterContainer.newInstanceUnion(doc, "//a");
+   
+   transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                           x2c.getElement());
+   
+--------------------------------
+  
\ No newline at end of file
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..2ff94a3
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,122 @@
+XML Security v1.1.0 Released
+---------------------
+  We are proud to announce the 1.1.0 final
+  release of the XML Security package.
+
+About XML Security
+------------------
+  The XML Security project is an implementation of
+  security related XML standards. Currently, it includes
+  implementations of W3C recommendations "Canonical XML"
+  and "XML Signature Syntax and Processing".  It also
+  includes a beta implementation of "XML Encryption
+  Syntax and Processing".
+
+  Basically, this means that you can use this software
+  for creating and verifying digital signatures which
+  are expressed in XML and sign both XML and/or arbitrary
+  contents.
+
+  You can now also use the library to encrypt and decrypt
+  portions of XML documents.
+
+For more information about the XML Security project, please go to
+http://xml.apache.org/security/
+
+For more information about XML Signature, go to
+http://www.w3.org/Signature/
+
+For pointers about XML Security in general, please go to
+http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/xml_security.html
+
+---------------------------------------------------------
+
+Downloads for XML Security v1.1.0 are available at
+http://xml.apache.org/security/dist/
+
+The source distibution is available at
+http://xml.apache.org/security/dist/xml-security-src-1_1_0.zip
+http://xml.apache.org/security/dist/xml-security-src-1_1_0.zip.sig
+
+The binary distibution is available at
+http://xml.apache.org/security/dist/xml-security-bin-1_1_0.zip
+http://xml.apache.org/security/dist/xml-security-bin-1_1_0.zip.sig
+
+---------------------------------------------------------
+
+The source distibution includes
+ - JAVA source code for the library itself
+ - JAVA unit test code for the library
+ - JAVA sample code for the library
+ - test vectors for the unit tests
+
+The source distibution does _not_ include
+ - JavaDocs
+ - the required (binary JAR) libraries.
+   The libraries are available under http://xml.apache.org/ .
+   It requires
+   - Jakarta ANT (1.5 or above) as build/make tool
+   - Apache Xerces v2.0.0
+     http://xml.apache.org/dist/xerces-j/Xerces-J-bin.2.0.0.zip
+   - Apache Xalan v2.2.0 or above
+   - Apache Log4J
+   - JUnit 3.7 or above
+   - A JCE Cryptographic Service Provider.
+     The distibution uses the BounceCastle JCE as a default provider.
+     When you first start ant for compiling, the JCE JAR is downloaded
+     from http://www.bouncycastle.org/ . This hook is included to
+     circumvent US export restrictions.
+
+---------------------------------------------------------
+
+The binary distibution includes
+ - JAVA sample code for the library
+ - JAVA code for the unit tests
+ - test vectors for the unit tests
+ - Generated JavaDocs
+ - The complete library compiled
+ - All required libaries (but not the JCE which is downloaded online).
+
+---------------------------------------------------------
+
+Download of the JCE
+
+The ant make tools initiates an automated download of the BouncyCastle JCE. 
+The file is downloaded into the libs/ directory and a "bc-" is prepended 
+to the filename. This is done because we want the provider name (bc means 
+BouncyCastle) being visible in the JAR's filename. 
+
+If you are a little paranoid like all security people and don't want ant to 
+make automated downloads or your firewall doesn't permit it, look in the 
+./build.xml file for the properties called
+
+<property 
+     name="jce.download.file" 
+     value="jce-jdk13-124.jar" />
+<property 
+     name="jce.download" 
+     value="http://www.bouncycastle.org/download/${jce.download.file}" />
+<property 
+     name="lib.jce"      
+     value="${libs}/bc-${jce.download.file}" />
+
+Here you can see that the file 
+
+http://www.bouncycastle.org/download/jce-jdk13-112.jar
+
+is downloaded and stored in the location 
+
+libs/bc-jce-jdk13-112.jar
+
+If you do this by hand (pointing you favourite web browser and download it 
+yourself), simply put a "bc-" in front of the filename and put it to ./libs/, 
+then ant won't try to make a download.
+
+---------------------------------------------------------
+
+Questions and comments about the software:
+mailto:security-dev@xml.apache.org
+
+---------------------------------------------------------
+
+
diff --git a/KEYS b/KEYS
new file mode 100644
index 0000000..ad40929
--- /dev/null
+++ b/KEYS
@@ -0,0 +1,107 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGiBDxEPCgRBADeMrVI5GwYKss+WbhLYEHaDoyVHsK85zwGk5uv4cMKk4qsmrxu
+T15j/9SYHmlp9jNR7ZdzKSonVV8ME+qpWnCrwv/vKg4WuHELS8lk9FE5jXtn9MDH
+cDZllccnrRMFLJdDXJuYuYXRtBvt3ZEULUVsRwJAmFdZjrAxsEtFTdSvJQCg/x2X
+HwKkTutgVbQDrV7MUAMxP20D/Rj518EIR7zJ8+ev2lWV99RoZO/l44guwklwC3H+
+wqUhAJ898E7CQsHMOa1PsciYizl+YAQC0AQ3K9j64sj7hHD4ZNngWVOEOO7s36hl
+PTuzL2WOx76O49oCVtfxiM0DtKQolVMqN1OfiHHMFRIj1SFsruVBdEkwYKGvfVWk
+/LPiA/9Lb0fJlcQDdpGEtijnuMu2xTJMAb/Xcq6sSuZkl/Ykij64lk9BdsfcFRBr
+0Xh7KzqtADLZ8XPTJI6XZj+ytbWXXdi2Hahs4HK/y7vveErKiviYSxFhRlgpY6lV
+uiuIPENy/+wfZx3Fpdk2YDXeJIBN70FWAbmlDsvj3ZsnW1EQwLQsQ2hyaXN0aWFu
+IEdldWVyLVBvbGxtYW5uIDxnZXVlcnBAYXBhY2hlLm9yZz6JAFgEEBECABgFAjxE
+PCkICwMJCAcCAQoCGQEFGwMAAAAACgkQrc03WC8EhM0OzQCg2Pzsq+09gIsK6qTV
+quduJCHMNykAn0u+Rq2ftJQPXOwcUGvF4yxcsF54iQEcBBABAgAGBQI8RDxHAAoJ
+EE/ylwIE5/aVtAMIALcvI/B8FhjnS7RPJU1q9oCXdb5jgDVvXgFJEuDghSATxOjn
+Hrjtrsj1x9QdAY23lBDy4GKgiwwZDAy2hcmr2DL20AqdA6FAy8H1/7Cgl8MUNI2m
+Q2BjLnjuIlH9RZXhkJhUv4E7Np0IaRQMtCzW/oqu2LGRHqiq4R1ZiIhsHGfeAfrd
+2skJPTs+9SHg4dndfvueOS0mLbeOztwN5k1N2uHafFkcFCDx4vKjcn7+qnw/YaYG
+g2tsIGkwKr8dh+Yxf2Xhej7vRGgnNf1QMkvLFXiHEtx0o83GloR2bI8AFYp5ba9D
+veMXNk5SUUd5O9AOqMe1f74LMAIFtGC/K6aOCIGJAEYEEBECAAYFAjxEPFkACgkQ
+9kCJQ/wGyi3orACgiJIRnrQRN8ANs6xiKnwNdPLq6MsAoN3wyfQV5L1MV7zlO6ne
+FxdUBDBzuQINBDxEPCkQCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoB
+p1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnh
+V5JZzf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr
+5fSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4
+XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zaf
+q9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7AAICB/9LL8Uz61JXVOxZ
+C4hYgyP0SV0GgYoUiKmVbU1+/1dkiFvMV7beDJEDOKbVUurdpEKLTwO7s9YUAmp6
+6WvwtqGkCU7aHEsXMRSwSGoEXpQDHXHTwUjTtRvoBpd/LQ4t+ny1+B+p+PLt/cGJ
+RqvGHK/n9rlTb5jxzjCxRbhXqezmnJSwGG5fQD2mRtCQ9w3wgaxN/bVvxGnBgJO+
+TYo5PomNLa/24ujT4dPxKf2SFokuLJmgNRzRkaEtSV97t7lCYM05crOdcWbI2rPr
+c2FuzTig9gL4qB9QJRnpYI/VfbnsVAI+Qn66O+dPz7T2WNwj6CihodSdSxO3oo7Z
+rJsNjeOLiQBMBBgRAgAMBQI8RDwpBRsMAAAAAAoJEK3NN1gvBITNRqwAnRLnb+ng
+Bsho6M4hWqkwmdxRNw1xAJ9Jor374EYfbkYkHxejfoQUkJTmeg==
+=fPiH
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+pub  1024D/B990D401 2003-02-15 Berin Lautenbach <blautenb@apache.org>
+     Key fingerprint = 03A7 690B E75C F9BF 15FF  A362 7042 2E3D B990 D401
+sig 3       B990D401 2003-02-15   Berin Lautenbach <blautenb@apache.org>
+sig         609CD2C0 2003-02-15   Berin Lautenbach <berin@ozemail.com.au>
+sub  2048g/04284FDD 2003-02-15
+sig         B990D401 2003-02-15   Berin Lautenbach <blautenb@apache.org>
+
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5OCBQRBACt0CGpKMnjauQ5FXwshMRRA+t706lf16ANsXBpdADkQTJXby0O
+Vj/c9xzyEGi+H3ODBl6BIqMkGZKXwVFfJus8ctBkvBs1vCObzVH6xxCzVzwFo+rc
+5mdJbf3EV65roAFLG1jbLgwadEgZumj7tNYuX8fpAZkVqR0FyE4q8Nr8PwCgzc4J
+6Za6y+on5Rw61cN6vyovJZsEAKoSupBUfs945BBnK+QwfgpWRKeybF4bO27rtAVH
+fFqEjOlBIM0tTbcA4q5T+1rFKOIOqsYVb50mVBybo6n4zRXOvZmoe5fAHlyN6GDA
+zn0ozfCd3e+skB1FBkxo/x6miWqv2ks5IF1VOYZRknGfudBhUoUZY0dintohxVuA
+eL71A/4tsx5TdPsZtUp7rfmOoj9S7F8As8rJ7ijfticdg6Z50IJKhuCsS3Vgwmnz
+Zi4QSlGfbvCql38Kdwhsyx2jjR3AK0GTeq4ik1jv+HmsW//OnA8CDEljVnyVKZz+
+hVx7sakniAXAggOXSRs8WE2aYZcwTKbUqJeRd1rA7DEJ/g2GEbQmQmVyaW4gTGF1
+dGVuYmFjaCA8YmxhdXRlbmJAYXBhY2hlLm9yZz6IVwQTEQIAFwUCPk4IFAULBwoD
+BAMVAwIDFgIBAheAAAoJEHBCLj25kNQByp8AnArT68V2aV8ti5epH9wc/FrVKbiS
+AKDMztjQXlkVYjsOhh6DIYabN3I8m4hGBBARAgAGBQI+TgkbAAoJEBf9q+hgnNLA
+Q5AAn2Lyyyq/Uy3T8zclslGQUby+1VaQAKCPL28vDFp2TrX07TDkXMJqJzI0TLkC
+DQQ+Tgg2EAgAm32VA74jozy/kz39ph0rbLnpJzYxnB9ksVmxEMgtj7x8+qth7CIH
+DjopxSYCf1j4RF3sHQtlyAZafbulV3mU7xA0vDq4fVsNLRV51NFjULHxSkt/rA6C
+KbjRq2qYIeCtaqivWUwxjKo06WmDq6dCavDdqf9J8opVv7QUvXiT/vV6yBzygkr0
+T1C9Gny4jiIryUSi1eWxbKLHLh1zj/zCgOjyDbsyKHF5wefF0PzNrak+IzTwP6gj
+FSLl+DFjEZsINDR1lKiAQucm2xfqLLttAEEXhW25D3/BuD92eVXx9bpz6kw4ZB9A
+Yk+4tbrr2ly4+9PDLCZjWGDSDAGWhlGYzwADBQf9HbL9wOex+LKDlSCW1ZckRvOK
+jGwvvhr8YUDinK7B3pYs3pLOVXxd14kHryhE8iEWnCrzgLMgJxS3/ryzvOOvL5Rr
+F9B94doNvxeUzk5Cn4ppMlmhB74Jp6QbXj7rVa5LpnphdrnNxMMRiWCEjrJMC1Og
+dokRWI9hAhyAYEqQKGt/Vy8o+FVs1yM4DxK8X0L6z6OnrpVqfNBDRs2R1lTs0G/u
+LS30dsBTXn5IZAYllb2VU3ocL40e45emmLTxVSvSRDBkcULYo4ZydNR9hMVy6TfU
+Q0cZZ6tpiL+exlYb6MeOQb5lbDzCnWQ5pOW7RCjOevyf6pFV7HUgSWAcJpNl/ohG
+BBgRAgAGBQI+Tgg2AAoJEHBCLj25kNQBeA0AoJ25w7yjduC3BedW4izdUCKcDZLe
+AJsEGTqwf0MYTdebbMXoZlVStqiRBQ==
+=e1F3
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBEG1ilMRBACUX9pWnOfhIWK+aAZPydwqABQRmhBim0LqrmbqEcW/6Aaiv05H
+8+2Y88ENzhSUpoobx/mlkfi+H/sdi86J2zd26kPevykoXmPkQ+Dcj1sif7K21RIX
+b2QFoPD9lki6ffk8H38Xx/UaAz9xeyKZEBBMICUd/pFcJDwpwMa9AsGCxwCg5fBD
+8WeNuEqmV918e0UNCCfbvisD/R7iN2PrhCp3ERqGjmRM+TjgmfS8CnXinOYLNp5H
+lxgjdqy497VLEYoZgFGsG5TYyK9QmWYiQ4HdlwkSBQeZcIuhs+D/16HFXgXRTQhQ
+KN3hNOjn5vA6m6kEpkKis72Kvdn1lcWdWJNBTiXdK4O7232k1N+8pglF642M3fNB
+WzVSA/9sU5AbnU9cQ3wOitGhIONNPt76KjtNvS3AYuR+3Zo0KIaDd1Rxvfzob2xr
+t1unZRW2jd6FYVz2qtCHXG07bbkmRbttBDw0IJIPw9lkvdyF71WTZH+6U633TxLM
+3ZT+3TfcOi8fSQiWnJzASZ2Yy/ZfnG9YxmMhtuiDkAGbcR11UrQkUmF1bCBCZW5p
+dG8gR2FyY2lhIDxyYXVsQGFwYWNoZS5vcmc+iF4EExECAB4FAkG1ilMCGwMGCwkI
+BwMCAxUCAwMWAgECHgECF4AACgkQtImwQHrM6+xGlwCfVlNi4dz6bbPUyFqIZB5F
+7sKwe7YAoJ5yZ92LrG71QBp53PZu/d6F4zGwuQINBEG1imwQCACMhxnoh563xmVa
+xB4l0Zs1ZwXQ61aNJT67p+8vvGyzMQ0T2HYHt59ZyuWmV8U0kDQe4A8AVm7HnANZ
+1LyCiNM/3xLmNoZzek9dOqzBrJqtUjLXJSE81wZJzTscDdW9K6hoSIwnUYxzt0ie
+oup+Rm/BWSlSvSx35X9aFpcFM1Iru66nvolNfNgjGN4mpp2r/W3yOsW6DcapWmp0
+t891tGHU4E19DtjFmMC55eO9Vp3gxOpIP2MxICVB8GBkwMt4ecuoI++znJcBXpo+
+bvF75OaHeP9qVLy7UV1walZfO3fLO3GegI9oMiI4uvc9CYiJpBa3mBDNYr9Axl4z
+9ajJz9e3AAMFB/95RK3Ioh4u3cEE5jY7yLwSDAuqD6GjGHywqkmT6k5WOQHqy7HI
+Sjk5Aye3dyNyl5POTMPmSZn4u6lIlWSj1zbipmVF6UvlX9ei6YKTJo8pDcjSZdb6
+1vdeJd1l9taoKXHPE1u/xvNsZgH6+QjlGb1lxs0m/1qfNyzZqKPZNHXiqvVHMNH6
+vTSCqW+OO1aPnSEOcSq6NX6X9Un6n/p3WLu5eD+2eObYL0oCTMf7Idwlzo/kXDtp
+sCktwTR4pSPbXeMSaKztpWfXEz8CLQ2YIer66+b6Sbp1n+H/kPp+8aTZYs8fGZe0
+mRv4mbxIr041YpV4vLqbtPNvwMPNYcm+DHZBiEkEGBECAAkFAkG1imwCGwwACgkQ
+tImwQHrM6+wXfACgpdr9BhV7M2j5uype8R839dlGuyMAnREBnNTtKqss7+S87nyU
+KlDKaJbI
+=zQ4J
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..4bebde5
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,9 @@
+This product contains software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+It was originally based on software copyright (c) 2001, Institute for
+Data Communications Systems, <http://www.nue.et-inf.uni-siegen.de/>.
+
+The development of this software was partly funded by the European 
+Commission in the <WebSig> project in the ISIS Programme. 
+
diff --git a/README b/README
new file mode 100644
index 0000000..3ef4c44
--- /dev/null
+++ b/README
@@ -0,0 +1,2 @@
+In Version v1.0.4, there is one test case which fails (interop test for exclusive c14n). This is related to very esoteric node sets (The Y4 test vector from <http://www.w3.org/Signature/2002/02/01-exc-c14n-interop.html>). 
+
diff --git a/Readme.html b/Readme.html
new file mode 100644
index 0000000..fa1d1a1
--- /dev/null
+++ b/Readme.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+     "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+<head>
+<meta http-equiv="Refresh" content="0; URL=build/doc/html/index.html">
+<title></title>
+</head>
+<body>
+This document will redirect you to the real documenation which starts at doc/html/index.html.
+<p>
+If your browser doesn't support redirects, or you are looking at this file from the download 
+package, you will need to go to doc/html/index.html manually.
+</body>
+</html>
diff --git a/ReleaseProcess.txt b/ReleaseProcess.txt
new file mode 100644
index 0000000..eb49c5a
--- /dev/null
+++ b/ReleaseProcess.txt
@@ -0,0 +1,188 @@
+
+                          Release Instructions
+                          --------------------
+                                
+								V0.1Draft
+
+
+This document provides an outline of how to perform a release for the C or Java
+XML-Security libraries.  (Hosted at http://xml.apache.org/xml-security.)
+
+Document Authors : 
+   Berin Lautenbach
+
+NOTE: Based on ReleaseInstructions.txt from the Ant CVS
+
+Announce Release Plan
+---------------------
+
+Propose a release plan for vote.  This should set out the timetable for
+the release under ideal circumstances.  The level of bugs reported 
+can delay things. Generally, give a few weeks to "close" the source tree 
+to further changes so people can finalise contributions, etc. At this time,
+the first beta will be cut and there will be then a period of beta testing,
+usually 1 month but this should be flexible.
+
+Note that any mention of a deadline causes a flood of bug fixes, new tasks,
+etc.  This needs to be managed as best it can. Some fixes will be applied, 
+others held over. Make this clear in the release plan. The committers and 
+particularly the release manager will need to make judgement calls here. 
+Anything too "big" is likely to be held over.
+
+Create Branches in CVS
+----------------------
+    
+Once the freeze date arrives, create a branch for the release builds. You 
+will need to be comfortable in handling CVS branches with mutliple 
+merge-backs to the main branch and even selected merges from the the main 
+branch to the release branch.  
+    
+For more information on performing branching and merging, please visit
+http://www.durak.org/cvswebsites/doc/cvs_54.php#SEC54
+
+Label such branches XMLSECC_11_BRANCH (for C library branches) or
+XMLSECJ_11_BRANCH (for Java library branches).
+    
+Once the branch is setup, the version numbers in CVS are changed. On the 
+branch, the build.xml (Java) or configure.ac (C++) version becomes 1.1Beta1
+while the main branch is updated to 1.2alpha. 
+    
+Build the Archives
+------------------
+
+Ensure your GPG/PGP key is in the keys.txt file in the CVS.
+
+Export the xml-security module to a clean directory :
+
+	   cvs export xml-security
+
+Label the branch XMLSECC_11_B1 or XMLSECJ_11_B1
+
+** TODO - Create make process to build distributions and add commands here **
+
+** Java guys - what are the instructions to build the archives? **
+
+Sign the archives
+-----------------
+
+Sign the distribution files using the following simple script
+#!/bin/sh
+for i in distribution/*
+do
+     echo "Signing " $i
+     gpg -a -b --force-v3-sigs $i
+done
+
+Try to do this on Linux since the gpg signatures generated on Windows may 
+cause some PGP users problems verifying signatures even though they seem 
+OK.
+    
+Also make sure you have sent the key that you use to a public 
+keyserver.
+
+Transfer to Apache Web Site
+---------------------------
+
+The beta distribution is now ready to go. Bundle it up into a tar.gz file 
+and scp to your apache account.
+
+** Do we have a standard set of WHATSNEW/README files? The would be updated
+here **
+
+Once this is uploaded, unpack things, create the release directory, 
+something like v1.1Beta1, push the release and README files into this 
+directory.
+
+The files should go to /www/xml.apache.org/builds/xml-security/release
+on daedalus.
+
+** Is the above correct? **
+
+Address the available release tags in BugZilla. Create a new tag 1.1Beta1 
+and a 1.2alpha. Assign all existing 1.1alpha bugs to one of these release 
+labels.
+
+Test the distribtion
+--------------------
+
+Once that is done, do a test download to make sure everything is OK. A 
+common problem may be:
+
+    * the file's mime type is not recognized and is interpreted as 
+      text/plain.  Fix it by using some .htaccess magic (AddEncoding stuff)
+    * Your gz.asc files are not being displayed properly (RemoveEncoing stuff)
+
+** What tests should be done to validate archives? **
+    
+If it looks OK, announce it on security-dev. After a few days pass and 
+there are no major problems, a wider announcement is made (main xml 
+website, general@xml.apache.org, etc).
+    
+** Any other files/lists to update? **
+
+Announce beta releases at freshmeat.net (Do we have an entry?)
+
+As problems in the beta are discovered, there may be a need for
+one or more subsequent betas. The release manager makes this
+call. Each time, the versions are updated and the above process is
+repeated. Try not to have too many betas.
+
+Try to advertise the need for testing of the betas as much as possible.
+This should eliminate the need to release minor patch versions.
+    
+To monitor the number of downloads, look at the access_log
+file under /usr/local/apache2/logs
+
+When the final beta is considered OK, propose a vote on ant-dev to 
+officially adopt the latest beta as the XML-Security-C/J 1.1 release. If it is 
+passed,  (it usually does,) this would be labelled XMLSECC_11 or XMLSECJ_11
+and built in a similar fashion to the above process.
+
+BUT
+
+This time the directory you upload the files to is different and
+you'll have to do some house-keeping for the old release:
+
+** NOTE I am guessing at all directories here **
+
+    * create a directory for the old release in 
+      /www/xml.apache.org/builds/xml-security/release on daedalus.
+
+    * Move the release notes, .zip files and corresponding signatures
+      and md5 hashes of the old release from 
+      /www/www.apache.org/dist/xml-security
+      to a matching directory structure in
+      /www/xml.apache.org/builds/xml-security/release.
+
+    * remove the remaining files except for the KEYS file from
+      /www/www.apache.org/dist/xml-security.
+
+    * upload the new release files to 
+      /www/www.apache.org/dist/xml-security/[source|binary].
+
+    * Create proper -current symlinks in /www/www.apache.org/dist/xml-security/
+
+Change the links in /xdocs/bindownload.xml and /xdocs/srcdownload.xml,
+regenerate the HTML files, commit and update the site.
+
+As the mirrors may need some days to pick up the new release, you
+may want to add a note to that effect to the pages and remove it a few
+days later.
+
+Now and perhaps during previous betas any changes on the branch must 
+be merged back into the tree.
+
+At this point in time, the release is done and announcements are made. 
+
+**TODO: Identify the mailing lists where announcements are to be made.
+Also identify the webpages to which the announcements must go. **
+
+Apache mailing lists that should get the announcements:
+announce@jakarta.apache.org, announce@xml.apache.org,
+announce@apache.org and security-dev
+
+Announce release at freshmeat.net
+** Do we have an entry? **
+
+You can now reacquaint yourself with your family and friends.
+
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..9a1ba05
--- /dev/null
+++ b/TODO
@@ -0,0 +1,29 @@
+If we sign a Manifest, we have to ensure that the References inside the Manifest have correct digest values (that we do not blindly sign contents which an attacker wants us to sign). Additionally, the signed contents of such a (nested) Manifest have to be made available to the user. Currently, only the 1st level contents (what is referenced by SignedInfo) are available using XMLSignature.getSignedInfo().getSignedContent(int i). Same comments apply to sigining a ds:Reference from another Manifest or SignedInfo. 
+
+Question: What is an appropriate processing model if the user signs a ds:Manifest or a ds:Reference ? 
+Possible choices include:
+- only process the SignedInfo. Make information about signed Manifests, References or Signatures available to the user. Now it's up to the user to decide whether he follows this hint or not.
+- using the XMLSignature.setFollowNestedManifests(true) method, it can be defined that all Mianifests have to be valid, also Manifests which are referenced from Manifests. 
+- the user could define a length how many Manifests have to be followed. But this makes not much sense, cause it makes Signature something 'analog', allowing to scale whether validation fails or not.
+
+TODO for 1.2.1:
+ [X] Fix the memory leak when using xpath or using ResourceResolver and not hitting 
+  	  getElementByIdUsingDOM() [http://issues.apache.org/bugzilla/show_bug.cgi?id=32836]
+ [X] Fix the bug with using XPath2Filter and inclusive c14n
+ [X] Fix the bug arrouse in reusing Canonicalizers
+ [X] Fix base64transformation bug [http://issues.apache.org/bugzilla/show_bug.cgi?id=33393 ]
+ [X] Fix the XMLsignatureInput reset() bug.
+ [X] Clean unused jar (xmlParserAPI.jar,etc) and check and stored new versions.
+ [X] generated the dist jar with version (i.e. xmlsec-1.2.1.jar instead of plain xmlsec.jar)
+ [X] Clean unused build*.xml files.
+TODO for 1.3:
+RAUL:
+
+[ ] Remove XPath in IdResolver.
+[ ] Deferred XPath till needed.
+[ ] Integrate the SAX patch and add Signing
+[ ] More examples.
+[ ] Change Symbol table to a more efficient and simple structure
+[ ] Optimize ouputstream with native jce, nio & threads.
+[ ] Migrate to JSR105 API
+[ ] ...
\ No newline at end of file
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..7350b3f
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,943 @@
+<?xml version="1.0"?>
+<project name="Apache XML Security" default="help" basedir=".">
+    <!-- P R O P E R T Y    F I L E S -->
+    <property file="build.properties" />
+    <property file="provider.properties" />
+    <property file="proxy.properties" />
+
+
+
+
+    <!-- G L O B A L    P R O P E R T I E S -->
+	<!-- Product name and version properties -->
+    <property name="product.Name" value="Apache-XML-Security-J"/>
+    <property name="product.name" value="xml-security"/>
+    <property name="product.shortname" value="xmlsec"/>
+
+    <property name="product.version.major" value="1"/>
+    <property name="product.version.minor" value="2"/>
+    <property name="product.version.level" value="1"/>
+    <property name="product.Version" 
+			  value="${product.version.major}.${product.version.minor}.${product.version.level}"/>
+    <property name="product.version" 
+			  value="${product.version.major}.${product.version.minor}.${product.version.level}"/>
+    <property name="product_version" 
+			  value="${product.version.major}_${product.version.minor}_${product.version.level}"/>
+    <property name="year" value="2000-2005"/>
+    <property name="copyright" 
+			  value="Copyright © ${year} Apache XML Project. All Rights Reserved."/>
+
+
+    <!-- directory properties -->
+    <property name="dir.src"            value="${basedir}/src" />
+    <property name="dir.src.test"       value="${basedir}/src_unitTests" />
+    <property name="dir.src.samples"    value="${basedir}/src_samples" />
+    <property name="dir.libs"           value="${basedir}/libs" />
+    <property name="dir.data"           value="${basedir}/data" />
+    <property name="dir.docs"           value="${basedir}/doc/site" />
+    <property name="dir.build"          value="${basedir}/build" />
+    <property name="dir.build.bin"      value="${dir.build}/classes" />
+    <property name="dir.build.libs"     value="${dir.build}/libs" />
+    <property name="dir.build.test"     value="${dir.build}/test" />
+    <property name="dir.build.samples"  value="${dir.build}/samples" />
+    <property name="dir.build.docs"     value="${dir.build}/docs" />
+    <property name="dir.build.docs.xml" value="${dir.build.docs}/xml" />
+    <property name="dir.build.docs.html" value="${dir.build.docs}/html" />
+    <property name="dir.build.src"      value="${dir.build}/src" />
+    <property name="dir.build.dist"     value="${dir.build}/dist" />
+    <property name="dir.build.srcdist"  value="${dir.build.dist}/src/${product.name}-${product_version}"/>
+    <property name="dir.build.bindist"  value="${dir.build.dist}/bin/${product.name}-${product_version}"/>
+    <property name="dir.build.junit.xml"  value="${dir.build.docs.xml}/junit" />
+    <property name="dir.build.junit.html" value="${dir.build.docs.html}/junit" />
+    <property name="dir.build.javadoc"  value="${dir.build.docs.html}/javadoc" />
+    <property name="dir.build.coverage" value="${dir.build.docs.html}/coverage" />
+    <property name="dir.manifest"       value="${dir.build.bin}/META-INF"/>
+
+    <!-- library properties -->
+    <property name="lib.logging"        value="${dir.libs}/commons-logging.jar" />
+    <property name="lib.logging.api"    value="${dir.libs}/commons-logging-api.jar" />
+    <property name="lib.log4j"          value="${dir.libs}/log4j-1.2.8.jar" />
+    <property name="lib.xalan.1"        value="${dir.libs}/xalan.jar" />
+    <property name="lib.xalan.2"        value="${dir.libs}/xml-apis.jar" />
+    <property name="lib.xerces.1"       value="${dir.libs}/xercesImpl.jar" />
+    <property name="lib.jce"            value="${dir.libs}/${jce.provider.prefix}-${jce.provider.jar}" />
+    <property name="lib.style"          value="${dir.libs}/style-apachexml.jar" />
+    <property name="lib.stylebook"      value="${dir.libs}/stylebook-1.0-b3_xalan-2.jar" />
+    <property name="lib.junit"			value="${dir.libs}/junit.jar" />
+    <property name="lib.clover"			value="${dir.libs}/clover.jar" />
+
+	<!-- XML Security libraries (for bin distribution) -->
+	<property name="lib.xmlsec"         value="${dir.libs}/xmlsec.jar" />
+	<property name="lib.xmlsec.samples" value="${dir.libs}/xmlsecSamples.jar"/>
+	<property name="lib.xmlsec.tests"   value="${dir.libs}/xmlsecTests.jar" />
+
+	<!-- JAR properties -->
+	<property name="jar.library"        value="${dir.build}/xmlsec-${product.version}.jar" />
+	<property name="jar.samples"        value="${dir.build}/xmlsecSamples-${product.version}.jar" />
+	<property name="jar.tests"          value="${dir.build}/xmlsecTests-${product.version}.jar" />
+	<property name="jar.manifest"       value="${dir.manifest}/MANIFEST.MF"/>
+    
+
+    <!-- build variable properties -->
+
+
+	<!-- T A S K D E F S -->
+	<taskdef resource="clovertasks"/>
+	
+	
+
+    <!-- C O N D I T I O N A L    P R O P E R T I E S -->
+    <target name="do.build.src" >
+        <!-- global properties applies here -->
+    </target >
+
+
+
+
+    <!-- P A T H S -->
+    <path id="id.classpath.xalan" >
+        <pathelement location="${lib.xalan.1}" />
+        <pathelement location="${lib.xalan.2}" />
+    </path >
+    <path id="id.classpath.xerces" >
+        <pathelement location="${lib.xerces.1}" />
+    </path >
+    <path id="id.classpath.logging" >
+        <pathelement location="${lib.logging}" />
+        <pathelement location="${lib.logging.api}" />
+        <pathelement location="${lib.log4j}" />
+    </path >
+    <path id="id.classpath.common" >
+        <path refid="id.classpath.xalan" />
+        <path refid="id.classpath.xerces" />
+        <path refid="id.classpath.logging" />
+    </path >
+    <path id="id.classpath.crypt" >
+        <pathelement location="${lib.jce}" />
+    </path >
+    <path id="id.classpath.coverage" >
+    	<pathelement location="${lib.clover}" />
+    </path >
+    <path id="id.classpath.sig" >
+    </path >
+    <path id="id.classpath" >
+        <path refid="id.classpath.common" />
+        <path refid="id.classpath.crypt" />
+        <path refid="id.classpath.sig" />
+        <!--path refid="id.classpath.coverage" /-->
+    </path >
+    <path id="id.classpath.test" >
+        <path refid="id.classpath" />
+	<pathelement path="${lib.junit}"/>
+        <pathelement location="${dir.build.bin}" />
+        <pathelement location="${dir.build.test}" />
+        <path refid="id.classpath.coverage" />
+        <pathelement location="${lib.xmlsec}" />
+        <pathelement location="${lib.xmlsec.samples}" />
+        <pathelement location="${lib.xmlsec.tests}" />
+    </path>
+    <path id="id.classpath.samples" >
+        <path refid="id.classpath" />
+        <pathelement location="${dir.build.bin}" />
+        <pathelement location="${dir.build.samples}" />
+        <pathelement location="${lib.xmlsec}" />
+        <pathelement location="${lib.xmlsec.samples}" />
+        <pathelement location="${lib.xmlsec.tests}" />
+    </path>
+
+
+	<!-- P A T T E R N S E T S -->
+    <patternset id="id.patternset.distFiles">
+		<include name="build.xml"/>
+		<include name="INSTALL"/>
+		<include name="KEYS"/>
+		<include name="LICENSE"/>
+		<include name="NOTICE"/>
+		<include name="README"/>
+		<include name="Readme.html"/>
+		<include name="TODO"/>
+		<include name="provider.properties"/>
+		<include name="proxy.properties"/>
+    </patternset>
+
+    <patternset id="id.patternset.dataFiles">
+		<include name="data/**"/>
+		<exclude name="data/de/uni-siegen/**"/>
+		<exclude name="data/com/ibm/xss4j-20030127/**/*"/>
+    </patternset>
+
+    <patternset id="id.patternset.srcFiles">
+		<!-- for some strange reasons, I can't use ${src} but must use src -->
+		<include name="src/**/*"/>
+<!--		<include name="src/org/apache/xml/security/**/*.java"/>
+		<include name="src/org/apache/xml/security/**/*.xml"/>
+		<include name="src/org/apache/xml/security/**/*.html"/>
+		<include name="src/org/apache/xml/security/resource/**/*"/> -->
+    </patternset>
+	
+    <patternset id="id.patternset.srcSamplesFiles">
+		<include name="src_samples/org/apache/xml/security/samples/**/*"/>
+		<include name="src_samples/org/apache/xml/security/samples/**/*.html"/>
+    </patternset>
+	
+    <patternset id="id.patternset.srcUnitTestsFiles">
+		<include name="src_unitTests/org/apache/xml/security/test/**/*"/>
+		<include name="src_unitTests/org/apache/xml/security/test/**/*.html"/>
+    </patternset>
+
+    <!-- T A R G E T S -->
+
+	<!-- Welcome screen -->
+
+	<target name="init">
+		<echo message=""/>
+		<echo message="-------------------------------------------------------------------"/>
+		<echo message="--------- ${product.Name} v${product.Version} [${year}] -----------"/>
+		<echo message="-------------------------------------------------------------------"/>
+		<echo message="Building with ${ant.version}"/>
+		<echo message="Java ${java.version} located at ${java.home} "/>
+		<echo message="-------------------------------------------------------------------"/>
+		<echo message=""/>
+	</target>
+
+    <!-- environment targets -->
+    <!-- set up -->
+    <target name="env.mk.dirs" depends="init" unless="has.dirs" >
+        <mkdir dir="${dir.build}" />
+        <mkdir dir="${dir.build.bin}" />
+        <mkdir dir="${dir.build.docs}" />
+        <mkdir dir="${dir.build.test}" />
+        <mkdir dir="${dir.build.libs}" />
+        <mkdir dir="${dir.build.dist}" />
+        <mkdir dir="${dir.build.samples}" />
+        <property name="has.dirs" value="true" />
+    </target >
+
+    <!-- tear down -->
+    <target depends="init" name="env.rm.dirs" >
+        <delete dir="${dir.build}" />
+    </target >
+    
+    <target depends="init" name="env.rm.files" >
+		<delete file="signature.xml"/>
+		<delete file="axisSignature.xml"/>
+		<delete file="encryptedInfo.xml"/>
+		<delete file="decryptedInfo.xml"/>
+		<delete file="kek"/>
+		<delete>
+			<fileset dir="." includes="merlin16*.html,merlins*.xml" />
+		</delete>
+    </target >
+
+    <target depends="init" name="with.clover" >
+    	<clover-setup initstring="clover-db/coverage.db" >
+    		<fileset dir="${dir.src}" >
+		  		<include name="**/*.java" />
+		  		<exclude name="**/*Exception.java" />
+			</fileset >
+     	</clover-setup >
+    </target >
+
+    <!-- check targets -->
+    <target depends="init" name="do.check.libs.jce" >
+        <condition property="has.jce.provider" >
+            <available file="${lib.jce}" />
+        </condition >
+    </target >
+
+    <target name="do.check.libs"
+            depends="do.check.libs.jce"
+            unless="has.jce.provider" >
+        <setproxy proxyhost="${proxy.host}"
+                  proxyport="${proxy.port}" />
+        <get src="${jce.provider.source}/${jce.provider.jar}"
+             dest="${lib.jce}"
+             verbose="true" />
+        <checksum file="${lib.jce}"
+                  algorithm="${checksum.algorithm}"
+                  property="${checksum.value}"
+                  verifyproperty="jce.checksum.ok" />
+		<property name="has.jce.provider" value="true"/>
+    </target >
+
+	<target name="do.check.forrest">
+		<property environment="env"/>
+		<condition property="has.forrest">
+			<or>
+				<available filepath="${env.PATH}" file="forrest" />
+				<available filepath="${env.PATH}" file="forrest.bat" />
+			</or>
+		</condition>
+	</target>
+
+	<target name="do.check.bindist">
+		<condition property="is.bin.dist">
+			<and>
+				<available file="${lib.xmlsec}" />
+				<available file="${lib.xmlsec.samples}" />
+				<available file="${lib.xmlsec.tests}" />
+				<not>
+					<available type="dir" file="src" />
+				</not>
+			</and>
+		</condition>
+	</target>
+
+
+    <!-- B U I L D  T A R G E T S -->
+    <!-- source -->
+    <target name="build.src"
+            depends="do.check.libs,do.build.src,env.mk.dirs,do.check.bindist"
+			unless="is.bin.dist"
+            if="has.jce.provider" >
+        <javac srcdir="${dir.src}"
+               destdir="${dir.build.bin}"
+               debug="${build.compile.debug}">
+            <classpath refid="id.classpath" />
+            <include name="**/org/apache/xml/security/**/*.java" />
+            <include name="**/javax/xml/crypto/**/*.java" />
+            <include name="**/org/jcp/xml/dsig/internal/**/*.java" />
+        </javac >
+
+        <copy todir="${dir.build.bin}" >
+            <fileset dir="${dir.src}"
+                     includes="**/org/apache/xml/security/resource/*,
+                               **/org/apache/xml/security/resource/schema/*"
+                     excludes="**/org/apache/xml/security/resource/CVS,
+                               **/org/apache/xml/security/resource/schema/CVS" />
+        </copy >
+    </target >
+    
+    <!-- tests -->
+    <target name="build.test"
+    		depends="build.src"
+			unless="is.bin.dist">
+    	<javac srcdir="${dir.src.test}"
+               destdir="${dir.build.test}"
+               debug="${build.compile.debug}">
+        	<classpath refid="id.classpath.test" />
+        	<include name="**/org/apache/xml/security/**/*.java" />
+        	<include name="**/javax/xml/crypto/**/*.java" />
+        </javac>
+        <copy todir="${dir.build.test}">
+	      	<fileset dir="${dir.src.test}" includes="**/*.properties"/>
+      		<fileset dir="${dir.src.test}" includes="**/*.xml"/>
+      		<fileset dir="${dir.src.test}" includes="**/*.zip"/>
+    	</copy>
+    </target>
+
+	<!-- samples -->
+	<target name="build.samples"
+			depends="build.src"
+			unless="is.bin.dist">
+		<javac srcdir="${dir.src.samples}"
+			   destdir="${dir.build.samples}"
+			   debug="${build.compile.debug}">
+			<classpath refid="id.classpath.samples"/>
+		</javac>
+	</target>
+
+
+
+	<!-- T E S T  T A R G E T S -->  
+	<!-- big test -->
+	<target name="test"
+			depends="build.test"
+			description="Starts all Junit tests">
+	    <delete dir="${dir.build.junit.xml}"/>
+	    <delete dir="${dir.build.junit.html}"/>
+	    <mkdir dir="${dir.build.junit.xml}"/>
+	    <mkdir dir="${dir.build.junit.html}"/>
+	    <!-- The unit tests include so-called interoperability tests against
+	         cryptographic values generated using software from other vendors.
+	         This package includes many of these vectors, but not the ones from
+	         the IBM alphaWorks XML Security Suite. They are not included because
+	         IBM even has these signatures under copyright.
+	         If you want to test against IBM, download xss4j from
+	
+	         http://www.alphaworks.ibm.com/tech/xmlsecuritysuite
+	
+	         and put the files into the
+	
+	         data/com/ibm/xss4j-20030127/
+	
+	         directory. If the file enveloped-rsa.sig is found in that directory,
+	         IBM is 'magically' included in the test ;-))
+	    -->
+	    <available file="data/com/ibm/xss4j-20030127/enveloped-rsa.sig" property="ibm.available"/>
+	    <junit filtertrace="true" fork="true" printsummary="on" failureproperty="build.test.failed">
+	       <jvmarg value="-Djava.compiler=NONE"/>
+	       <sysproperty key="basedir" value="${basedir}"/>
+	       <classpath refid="id.classpath.test"/>
+	       <formatter type="xml"/>
+	       <!-- Also put output to screen -->
+	       <formatter type="plain" usefile="false"/>
+	       <batchtest fork="yes" todir="${dir.build.junit.xml}">
+	         <fileset dir="${dir.src.test}">
+	           <include name="**/*Test*.java"/>
+	           <include name="org/apache/xml/security/test/c14n/implementations/ExclusiveC14NInterop.java"/>
+	           <exclude name="org/apache/xml/security/test/*Test*.java"/>
+	           <exclude name="org/apache/xml/security/test/interop/InteropTest.java"/>
+	           <exclude name="**/TestVectorResolver.java"/>
+	           <exclude name="**/IBMTest.java"/>
+	           <exclude name="javax/xml/crypto/**"/>
+	         </fileset>
+	       </batchtest>
+	       <test if="ibm.available" name="org.apache.xml.security.test.interop.IBMTest" todir="${dir.build.junit.xml}"/>
+	    </junit>
+	    <junitreport todir="${dir.build.junit.xml}">
+	      <fileset dir="${dir.build.junit.xml}">
+	        <include name="TEST-*.xml"/>
+	      </fileset>
+	      <report format="frames" todir="${dir.build.junit.html}"/>
+	    </junitreport>
+	    <fail if="build.test.failed" message="Unit Tests Failed"/>
+	</target>
+
+	
+	<!-- Test exclusive c14n -->
+    <target name="test_exc_c14n"
+    		depends="build.test"
+    		description="Runs exclusive c14n interop (Y1, Y2, Y3, Y4)">
+       	<java classname="org.apache.xml.security.test.c14n.implementations.ExclusiveC14NInterop" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="junit">
+          	<classpath refid="id.classpath.test"/>
+       	</java>
+    </target>
+
+	<!-- Test XML Encryption -->
+    <target name="test_xenc"
+    		depends="build.test"
+    		description="Runs encryption interop and unit tests">
+		<java classname="org.apache.xml.security.test.EncryptionTest" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="junit">
+			<classpath refid="id.classpath.test"/>
+		</java>
+    </target>
+
+    <!-- Test JSR 105/XML DSig API -->
+    <target name="test_jsr105" depends="build.test"
+	    description="Runs JSR 105 interop and unit tests">
+        <delete dir="${dir.build.junit.xml}"/>
+        <delete dir="${dir.build.junit.html}"/>
+        <mkdir dir="${dir.build.junit.xml}"/>
+        <mkdir dir="${dir.build.junit.html}"/>
+        <junit filtertrace="true" fork="true" printsummary="on" 
+	       failureproperty="build.test.failed">
+            <sysproperty key="basedir" value="${basedir}"/>
+            <sysproperty key="proxyHost" value="${proxy.host}"/>
+	    <sysproperty key="proxyPort" value="${proxy.port}"/>
+	    <sysproperty key="java.util.logging.config.file" value="${basedir}/logging.properties"/>
+            <classpath refid="id.classpath.test"/>
+	    <formatter type="xml"/>
+	    <!-- Also put output to screen -->
+	    <formatter type="plain" usefile="false"/>
+	    <batchtest fork="yes" todir="${dir.build.junit.xml}">
+	        <fileset dir="${dir.src.test}">
+	            <include name="javax/xml/crypto/**/*Test.java"/>
+                </fileset>
+            </batchtest>
+        </junit>
+        <junitreport todir="${dir.build.junit.xml}">
+            <fileset dir="${dir.build.junit.xml}">
+	        <include name="TEST-*.xml"/>
+            </fileset>
+	    <report format="frames" todir="${dir.build.junit.html}"/>
+        </junitreport>
+        <fail if="build.test.failed" message="Unit Tests Failed"/>
+    </target>
+
+	<!-- S A M P L E S  T A R G E T S -->
+    <!-- XML Encryption Samples -->
+    <target name="encrypt"
+			depends="build.samples"
+			description="encrypts xml data">
+		<delete file="encryptedInfo.xml"/>
+		<delete file="kek"/>
+		<java classname="org.apache.xml.security.samples.encryption.Encrypter" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="Encrypter">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+
+	<target name="decrypt"
+			depends="build.samples" 
+			description="decrypts xml data">
+		<delete file="decryptedInfo.xml"/>
+		<java classname="org.apache.xml.security.samples.encryption.Decrypter" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="Decrypter">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+
+	<target name="encryptAndDecrypt"
+			depends="encrypt, decrypt" 
+			description="encrypts and decrypts an element's contents" />
+
+
+	<!-- Signature Samples -->
+
+	<target name="sample.generate-keys">
+		<genkey alias="test2" keyalg="DSA" keypass="xmlsecurity" keystore="data/keystoreAnt.jks" storepass="xmlsecurity" validity="2005">
+			<dname>
+				<param name="CN" value="Christian Geuer-Pollmann"/>
+				<param name="OU" value="FB12NUE"/>
+				<param name="O" value="University of Siegen"/>
+				<param name="C" value="DE"/>
+			</dname>
+		</genkey>
+	</target>
+
+	<target name="sign"
+			depends="build.samples" 
+			description="creates a signature" >
+		<delete file="signature.xml"/>
+		<java classname="org.apache.xml.security.samples.signature.CreateSignature" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="CreateSignature">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+
+	<target name="verify" 
+			depends="build.samples" 
+			description="verifies a signature">
+		<java classname="org.apache.xml.security.samples.signature.VerifySignature" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="VerifySignature">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+	
+	<target name="signAndVerify"
+			depends="sign, verify" 
+			description="creates and verifies a signature" />
+
+	<!-- Axis Signature Samples -->
+
+
+	<target name="axis-sign"
+			depends="build.samples" 
+			description="axis sign sample">
+		<echo message="Running org.apache.xml.security.samples.AxisSigner"/>
+		<java classname="org.apache.xml.security.samples.AxisSigner" 
+			  failonerror="true" fork="yes" taskname="SignAxis">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+
+	<target name="axis-verify"
+			depends="build.samples" 
+			description="axis verify sample">
+		<echo message="Running org.apache.xml.security.samples.AxisVerifier"/>
+		<java classname="org.apache.xml.security.samples.AxisVerifier" 
+			  failonerror="true" 
+			  fork="yes" 
+			  taskname="VerifyAxis">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+
+	<target depends="axis-sign, axis-verify" name="AxisSignAndVerify"/>
+
+	<!-- Mega Samples -->
+	<target name="mega-sample" 
+			depends="build.samples">
+		<echo message="Now I&apos;ll try to verify merlins example fifteen-HMAC"/>
+		<java classname="org.apache.xml.security.samples.signature.VerifyMerlinsExamplesFifteen" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+
+		<echo message=""/>
+		<echo message="Now I&apos;ll try to verify merlins example sixteen"/>
+		<java classname="org.apache.xml.security.samples.signature.VerifyMerlinsExamplesSixteen" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+
+		<echo message=""/>
+		<echo message="Now I&apos;ll try to verify merlins example twenty three"/>
+		<java classname="org.apache.xml.security.samples.signature.VerifyMerlinsExamplesTwentyThree" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+
+		<echo message=""/>
+		<echo message="Now I&apos;ll create a signature in signature.xml and verify it"/>
+		<java classname="org.apache.xml.security.samples.signature.CreateSignature" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+		<java classname="org.apache.xml.security.samples.signature.VerifySignature" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+		
+		<echo message=""/>
+		<echo message="Now I&apos;ll create a signature like merlin-16 but without XSLT"/>
+		<java classname="org.apache.xml.security.samples.signature.CreateMerlinsExampleSixteen" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+
+		<echo message=""/>
+		<echo message="Please look into log.txt, merlinsSixteenRecreated.xml and signature.xml"/>
+
+
+		<echo message=""/>
+		<echo message="Now I&apos;ll create a signature like merlin-23 but without XSLT"/>
+		<java classname="org.apache.xml.security.samples.signature.CreateMerlinsExampleTwentyThree" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+
+		<echo message=""/>
+		<echo message="Please look into log.txt, merlinsTwentyThreeRecreated.xml and signature.xml"/>
+	</target>
+
+	<target name="createEnvelope" 
+			depends="build.samples">
+		<java classname="org.apache.xml.security.samples.signature.CreateEnvelopingSignature" 
+			  fork="yes">
+			<classpath refid="id.classpath.samples"/>
+		</java>
+	</target>
+
+	<!-- JSR 105 Samples -->
+	<target name="jsr105-samples" 
+		depends="build.samples">
+	    <echo message="Generating a detached signature"/>
+	    <java classname="javax.xml.crypto.dsig.samples.GenDetached"
+	          fork="yes">
+	        <classpath refid="id.classpath.samples"/>
+	        <sysproperty key="proxyHost" value="${proxy.host}"/>
+	        <sysproperty key="proxyPort" value="${proxy.port}"/>
+	    </java>
+	    <echo message="Generating an enveloped signature"/>
+	    <java classname="javax.xml.crypto.dsig.samples.GenEnveloped"
+	          fork="yes">
+		<arg value="${dir.src.samples}/javax/xml/crypto/dsig/samples/envelope.xml"/>
+	        <classpath refid="id.classpath.samples"/>
+	    </java>
+	    <echo message="Generating an enveloping signature"/>
+	    <java classname="javax.xml.crypto.dsig.samples.GenEnveloping"
+	          fork="yes">
+	        <classpath refid="id.classpath.samples"/>
+	    </java>
+	    <echo message="Validating a signature"/>
+	    <java classname="javax.xml.crypto.dsig.samples.Validate"
+	          fork="yes">
+		<arg value="${dir.src.samples}/javax/xml/crypto/dsig/samples/envelopedSignature.xml"/>
+	        <classpath refid="id.classpath.samples"/>
+	    </java>
+	</target>
+	
+	<!-- D I S T R I B U T I O N  T A R G E T S -->
+    <!-- distribution targets -->
+
+    <target name="build.dist"       
+		depends="build.srcdist,build.bindist" />
+
+	<target name="build.srcdist" 
+			depends="clean"
+		description="Creates the source distribution" >
+		
+		<mkdir dir="${dir.build.srcdist}"/>
+
+		<copy todir="${dir.build.srcdist}">
+			<fileset dir=".">
+				<patternset refid="id.patternset.distFiles"/>
+				<patternset refid="id.patternset.srcFiles"/>
+				<patternset refid="id.patternset.srcUnitTestsFiles"/>
+				<patternset refid="id.patternset.srcSamplesFiles"/>
+				<patternset refid="id.patternset.dataFiles"/>
+				
+				<include name="ant/**/*"/>
+				<exclude name="**/CVS/**"/>
+			</fileset>
+		</copy>
+
+		<mkdir description="create an empty libs dir"
+			dir="${dir.build.srcdist}/libs"/>
+		
+		<zip basedir="${dir.build.dist}/src" 
+			zipfile="${dir.build}/${product.name}-src-${product_version}.zip"/>
+	</target>
+
+	<target name="build.bindist"
+		depends="clean,build.src,build.jar,build.docs,build.xdocs" 
+		description="Creates the binary distribution">
+
+		<mkdir dir="${dir.build.bindist}"/>
+
+		<copy todir="${dir.build.bindist}">
+			<fileset dir=".">
+				<patternset refid="id.patternset.distFiles"/>
+				<patternset refid="id.patternset.dataFiles"/>
+				<patternset refid="id.patternset.srcUnitTestsFiles"/>
+				<patternset refid="id.patternset.srcSamplesFiles"/>
+				
+				<include name="ant/**/*"/>
+				<exclude name="**/CVS/**"/>
+			</fileset>
+		</copy>
+
+		<mkdir dir="${dir.build.bindist}/libs"/>
+
+		<copy file="${lib.stylebook}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy file="${lib.stylebook}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy file="${lib.xerces.1}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy file="${lib.xalan.1}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy file="${lib.xalan.2}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy file="${lib.logging}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy file="${lib.logging.api}" 
+			todir="${dir.build.bindist}/libs"/>
+		
+		<copy description="copy xmlsec JAR" 
+			file="${jar.library}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy description="copy xmlsec sample JAR" 
+			file="${jar.samples}" 
+			todir="${dir.build.bindist}/libs"/>
+		<copy description="copy xmlsec test JAR" 
+			file="${jar.tests}" 
+			todir="${dir.build.bindist}/libs"/>
+
+		<mkdir dir="${dir.build.bindist}/doc"/>
+		<copy todir="${dir.build.bindist}/doc">
+			<fileset dir="${dir.docs}/build/site"/>
+		</copy>
+		<mkdir dir="${dir.build.bindist}/doc/Java/api" />
+		<copy todir="${dir.build.bindist}/doc/Java/api">
+			<fileset dir="${dir.build.docs.html}/javadoc"/>
+		</copy>
+
+		<zip basedir="${dir.build.dist}/bin" 
+			zipfile="${dir.build}/${product.name}-bin-${product_version}.zip"/>
+	</target>
+
+	
+	<!-- M I S C E L A N E O U S  T A R G E T S -->
+
+    <!-- documentation -->
+    <target name="build.docs">
+	<mkdir dir="${dir.build.javadoc}"/>
+	<javadoc classpathref="id.classpath"
+		 destdir="${dir.build.javadoc}">
+	    <packageset dir="${dir.src}">
+      		<include name="org/apache/xml/security/**"/>
+      		<include name="javax/xml/crypto/**"/>
+            </packageset>
+            <group title="JSR 105 Packages" packages="javax.xml.crypto*"/>
+            <group title="XMLSec Packages" packages="org.apache.xml.security*"/>
+    	</javadoc>
+    </target>
+
+	<target name="build.xdocs"
+			depends="do.check.forrest"
+			if="has.forrest">
+		<!-- Call Forrest externally -->
+		<exec executable="forrest"
+			  os="Linux"
+			  dir="${dir.docs}" />
+		<exec executable="forrest.bat"
+			  os="Windows"
+			  dir="${dir.docs}" />
+    </target>
+    
+	<target name="clover.report.html" depends="with.clover">
+		<clover-report>
+      		<current outfile="${dir.build.coverage}"
+      				 title="Apache XML-Security coverage">
+      			<fileset dir="${dir.src}">
+			  		<include name="**/*.java"/>
+			  		<exclude name="**/*Exception.java" />
+				</fileset>
+         		<format type="html"/> 
+      		</current>	 
+   		</clover-report>
+	</target>
+
+    <!-- jars -->
+	<target name="manifest">
+
+		<mkdir dir="${dir.manifest}"/>
+
+		<manifest file="${jar.manifest}" mode="replace">
+                        <attribute name="Built-By" value="${user.name}"/>
+                        <section name="${product.shortname}">
+                                <attribute name="Implementation-Title"
+                                        value="${product.Name}"/>
+                                <attribute name="Implementation-Version"
+                                        value="${product.Version} ${TODAY}"/>
+                                <attribute name="Implementation-Vendor"
+                                        value="Apache Software Foundation"/>
+                        </section>
+                </manifest>
+
+	</target>
+
+	<target name="build.jar"
+		depends="manifest,build.src,build.test,build.samples">
+
+		<!-- Main Library -->
+		<jar basedir="${dir.build.bin}" 
+			excludes="org/apache/xml/security/temp/**"
+			includes="**/LICENSE, **/NOTICE, org/apache/**, *.txt" 
+			jarfile="${jar.library}" 
+			manifest="${jar.manifest}"/>
+
+		<!-- Samples -->
+		<jar basedir="${dir.build.samples}" 
+			excludes="org/apache/xml/security/temp/**" 
+			includes="**/LICENSE, **/NOTICE, org/apache/**" 
+			jarfile="${jar.samples}" 
+			manifest="${jar.manifest}"/>
+		
+		<!-- Tests -->
+		<jar basedir="${dir.build.test}" 
+			excludes="org/apache/xml/security/temp/**" 
+			includes="**/LICENSE, **/NOTICE, org/apache/**"
+			jarfile="${jar.tests}" 
+			manifest="${jar.manifest}"/>
+
+	</target>
+
+	<target name="build.src.jar"
+		depends="manifest,build.src">
+
+		<jar basedir="${dir.build.bin}" 
+			excludes="org/apache/xml/security/temp/**"
+			includes="**/LICENSE, **/NOTICE, org/apache/**, *.txt" 
+			jarfile="${jar.library}" 
+			manifest="${jar.manifest}"/>
+
+	</target>
+
+<!--
+    <target name="build.jar"
+            depends="env.mk.dirs" >
+        <jar destfile="${dir.build.dist}/xml-security.jar"
+             basedir="${dir.build.bin}" >
+        </jar >
+    </target >
+-->
+    <!-- archive targets -->
+    <target name="build.arch"
+            depends="env.mk.dirs" >
+    </target >
+
+    <!-- aliases -->
+    <target name="build.all"        depends="env.mk.dirs,build.src,build.docs,build.test,build.samples,build.jar,build.arch" />
+
+    <target name="compile"          depends="build.src" />
+    <target name="docs"             depends="build.docs" />
+    <target name="xdocs"            depends="build.xdocs" />
+    <target name="javadoc"          depends="build.docs" />
+    <target name="jar"              depends="build.jar" />
+    <target name="dist"             depends="build.dist" />
+    <target name="clean"            depends="env.rm.dirs,env.rm.files"/>
+    <target name="gump"				depends="clean, docs, jar, test"/>
+    <target name="clover"			depends="clean, with.clover, test, clover.report.html" />
+
+    <!-- maintenance targets -->
+
+    <!-- help targets -->
+    <target depends="init" name="help" >
+        <echo message="synopsis: ant [target]" />
+        <echo message="targets:" />
+        <echo message="compile  - builds xml-security source" />
+        <echo message="docs     - creates java documentation" />
+        <echo message="xdocs    - creates website" />
+        <echo message="jar      - creates a jar file, containing the built source" />
+        <echo message="dist     - creates a distribution" />
+        <echo message="           (see ant help.dist for more information)" />
+        <echo message="clean    - resets the build environment" />
+        <echo message="test     - performs a series of tests" />
+        <echo message="           (see ant help.test for more information)" />
+        <echo message="help     - displays this help message (default)" />
+        <echo message="config   - optional configuration information" />
+        <echo message="           (see ant help.config for more information)" />
+        <echo message=""/>
+        <echo message="See also help.samples for help on building samples"/>
+    </target >
+    <target depends="init" name="help.dist" >
+        <echo message="dist:" />
+        <echo message="this target will:" />
+        <echo message="1.  build the source files," />
+        <echo message="2.  create the appropriate java documentation," />
+        <echo message="3.  create distribution jars," />
+        <echo message="4.  copy the license, copies source and" />
+        <echo message="5.  creates distribution archives" />
+    </target >
+
+    <target depends="init" name="help.test" >
+        <echo message="test			- runs all unit and interop tests" />
+        <echo message="test_exc_c14n - runs the exclusive c14n tests" />
+        <echo message="test_xenc	- does all encryption related tests" />
+        <echo message="clover		- generates clover coverage reports" />
+    </target >
+
+	<target depends="init" name="help.samples" >
+		<echo message=""/>
+		<echo message="------------- Signature Samples ----------------"/>
+		<echo message=""/>
+		<echo message="generate-keys      - generates new keys to be used by other"/>
+		<echo message="                     examples"/>
+		<echo message="sign               - runs CreateSignature sample"/>
+		<echo message="verify             - runs signature verification sample"/>
+		<echo message="signAndVerify      - runs sign and then verify"/>
+		<echo message="axis-sign          - runs axis signing sample"/>
+		<echo message="axis-verify        - runs axis verification sample"/>
+		<echo message="AxisSignAndVerify  - runs axis sign and verify"/>
+		<echo message="createEnvelope     - runs enveloping signature sample"/>
+		<echo message="mega-sample        - runs all big signature samples"/>
+		<echo message=""/>
+		<echo message="------------- Encryption Samples ----------------"/>
+		<echo message=""/>
+		<echo message="encrypt            - run encryption sample" />
+		<echo message="decrypt            - run decryption sample" />
+		<echo message="encryptAndDecrypt  - run encryption sample" />
+	</target>
+		
+    <target depends="init" name="help.config" >
+        <echo message="1.  to configure the provider setings," />
+        <echo message="    see the contents of provider.properties" />
+        <echo message="2.  to configure the proxy setings," />
+        <echo message="    see the contents of proxy.properties" />
+    </target >
+</project>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:4
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:("/usr/lib/sgml/catalog" "/usr/share/xemacs21/xemacs-packages/etc/psgml-dtds/CATALOG")
+sgml-local-ecat-files:("ECAT" "~/sgml/ECAT" "/usr/lib/sgml/ECAT" "/usr/local/lib/sgml/ECAT")
+End:
+-->
diff --git a/data/at/iaik/IXSIL.SampleSignatures.20011115.zip b/data/at/iaik/IXSIL.SampleSignatures.20011115.zip
new file mode 100644
index 0000000..1a18522
--- /dev/null
+++ b/data/at/iaik/IXSIL.SampleSignatures.20011115.zip
Binary files differ
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/anonymousReferenceSignature.firstReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/anonymousReferenceSignature.firstReference.txt
new file mode 100644
index 0000000..1147780
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/anonymousReferenceSignature.firstReference.txt
@@ -0,0 +1,3 @@
+<Anonymous xmlns="http://anonymous.com">

+  This XML file is referenced via an anonymous Reference in the XML signature.

+</Anonymous>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.firstReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.firstReference.txt
new file mode 100644
index 0000000..4b63b6f
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.firstReference.txt
@@ -0,0 +1 @@
+<dsig:Manifest xmlns="http://iaik.at#Envelope" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="manifest"><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>KQuoZseibY3bIurUFbyYhLCm9nY=</dsig:DigestValue></dsig:Reference><dsig:Reference URI="../samples/sampleXMLData.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>oUqpQ+ekAvoeCRjlMc1EXzrFJJA=</dsig:DigestValue></dsig:Reference></dsig:Manifest>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.manifest.firstReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.manifest.firstReference.txt
new file mode 100644
index 0000000..da8a841
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.manifest.firstReference.txt
@@ -0,0 +1,5 @@
+<Envelope xmlns="http://iaik.at#Envelope">

+  <DataItem Id="DataItem">

+    Some Data from IAIK

+  </DataItem>

+</Envelope>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.manifest.secondReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.manifest.secondReference.txt
new file mode 100644
index 0000000..c45f0c5
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/manifestReference.manifest.secondReference.txt
@@ -0,0 +1,3 @@
+<Sample xmlns="http://iaik.at#Sample"><DataItem Id="DataItem">

+    Some Data from IAIK

+  </DataItem></Sample>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.fifthReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.fifthReference.txt
new file mode 100644
index 0000000..e0545fd
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.fifthReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns="http://iaik.at#Envelope" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.fourthReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.fourthReference.txt
new file mode 100644
index 0000000..7ed4c72
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.fourthReference.txt
@@ -0,0 +1,3 @@
+<DataItem xmlns="http://iaik.at#Sample" Id="DataItem">

+    Some Data from IAIK

+  </DataItem>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.seventhReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.seventhReference.txt
new file mode 100644
index 0000000..da8a841
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.seventhReference.txt
@@ -0,0 +1,5 @@
+<Envelope xmlns="http://iaik.at#Envelope">

+  <DataItem Id="DataItem">

+    Some Data from IAIK

+  </DataItem>

+</Envelope>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.sixthReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.sixthReference.txt
new file mode 100644
index 0000000..e0545fd
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.sixthReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns="http://iaik.at#Envelope" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.thirdReference.txt b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.thirdReference.txt
new file mode 100644
index 0000000..230aff6
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/digestInputs/signatureTypesSignature.thirdReference.txt
@@ -0,0 +1,3 @@
+<DataItem xmlns="http://iaik.at#Envelope" Id="DataItem">

+    Some Data from IAIK

+  </DataItem>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/samples/anonymousReferenceContent.xml b/data/at/iaik/ixsil/coreFeatures/samples/anonymousReferenceContent.xml
new file mode 100644
index 0000000..707f2af
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/samples/anonymousReferenceContent.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+<Anonymous xmlns="http://anonymous.com">

+  This XML file is referenced via an anonymous Reference in the XML signature.

+</Anonymous>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/samples/sampleTextData.txt b/data/at/iaik/ixsil/coreFeatures/samples/sampleTextData.txt
new file mode 100644
index 0000000..f0074fe
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/samples/sampleTextData.txt
@@ -0,0 +1 @@
+Some text from IAIK in a file.
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/samples/sampleXMLData.xml b/data/at/iaik/ixsil/coreFeatures/samples/sampleXMLData.xml
new file mode 100644
index 0000000..a109ddb
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/samples/sampleXMLData.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>

+

+<!DOCTYPE Sample

+  [

+    <!ELEMENT Sample (DataItem) >

+    <!ELEMENT DataItem (#PCDATA) >

+    <!ATTLIST DataItem Id ID #IMPLIED>

+  ]

+>

+

+<Sample xmlns="http://iaik.at#Sample">

+  <DataItem Id="DataItem">

+    Some Data from IAIK

+  </DataItem>

+</Sample>

diff --git a/data/at/iaik/ixsil/coreFeatures/signatures/anonymousReferenceSignature.xml b/data/at/iaik/ixsil/coreFeatures/signatures/anonymousReferenceSignature.xml
new file mode 100644
index 0000000..394d636
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/signatures/anonymousReferenceSignature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>7Hfp3yTdKKBv0d7M0ozNxCu7V98=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>mU+8/j7vFJGXG6Xw/VgVRIcRQNl5LtoHV6lHNPqrHXF6SZNQxze6lXvIv/MINnAk
+oZvVWz4sMYoddP6wXaeQJwDPjzO1EQNe2Un73J/njmzZDfIJqSah1SG+zSteMR6m
+J68nKznbRTdxnOknBo+rZirXiAsPgudRR6NUyXn+D8A=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/signatures/manifestSignature.xml b/data/at/iaik/ixsil/coreFeatures/signatures/manifestSignature.xml
new file mode 100644
index 0000000..b16ae11
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/signatures/manifestSignature.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Envelope [
+    <!ATTLIST DataItem Id ID #IMPLIED>
+  ]>
+<Envelope xmlns="http://iaik.at#Envelope">
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>1kF5aUeRTi9Jul2Qz3DmbZ0Od7I=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>M2bF8w1IQvdEedQ6SB9w8zaWc+KDNigoysBviNpifB6htymPhoW+1NBboygfkmAy
+8GSsOhmQ7gbpHoljjm2QPmZmo8BIt7ZGy7izhww1WZiIQxmqczIEaiPeBcsgsxDW
+SfOh7Ev9YXFfLF4UxJ59dfTR3ZTb9CVzGf6CSG4xXJk=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference URI="../samples/sampleXMLData.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>UXcq2OOH+aMla4fb5UOnYuaY9uQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature><DataItem Id="DataItem">
+    Some Data from IAIK
+  </DataItem>
+</Envelope>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/coreFeatures/signatures/signatureTypesSignature.xml b/data/at/iaik/ixsil/coreFeatures/signatures/signatureTypesSignature.xml
new file mode 100644
index 0000000..8dd15a5
--- /dev/null
+++ b/data/at/iaik/ixsil/coreFeatures/signatures/signatureTypesSignature.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Envelope [
+    <!ATTLIST DataItem Id ID #IMPLIED>
+  ]>
+<Envelope xmlns="http://iaik.at#Envelope">
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="http://www.w3.org/TR/2000/REC-xml-20001006"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>N2sjZsKr2W1kw6UP7mcWwrz7T5I=</dsig:DigestValue></dsig:Reference><dsig:Reference URI="../samples/sampleTextData.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>VyGBEakUjlOuKT4WBI+tDm0tYe0=</dsig:DigestValue></dsig:Reference><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:iaik="http://iaik.at#Envelope">ancestor-or-self::iaik:DataItem</dsig:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>9yMFLtkwiTVLvQaCOzE6+o4HrQE=</dsig:DigestValue></dsig:Reference><dsig:Reference URI="../samples/sampleXMLData.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:iaik="http://iaik.at#Sample">ancestor-or-self::iaik:DataItem</dsig:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>RdeNc+MfZeY8uqSLq8AtQ6DBygs=</dsig:DigestValue></dsig:Reference><dsig:Reference URI="#objectId"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>3x8tHtIyVobZMQ7ZoBIHyiFU7Fk=</dsig:DigestValue></dsig:Reference><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">ancestor-or-self::dsig:Object</dsig:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>3x8tHtIyVobZMQ7ZoBIHyiFU7Fk=</dsig:DigestValue></dsig:Reference><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>KQuoZseibY3bIurUFbyYhLCm9nY=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>gCAp0wt+ZIG3+GmZA7KKXfCA5d5Qbi7GY5BhMpxVA2BxmVe9M4vmC2h+hcBzCRmH
+wjAuaIkPYxPCaiD/SSa4i27ufMNJbbxMi8AGWPRRtgfOG+/KQZrrvUQtpnxS3c16
+81ClcivlTA1wKVM7xKJOn8li/8IldJNm1ZgN8JQS8sk=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object Id="objectId">A text from IAIK</dsig:Object></dsig:Signature><DataItem Id="DataItem">
+    Some Data from IAIK
+  </DataItem>
+</Envelope>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/readme.txt b/data/at/iaik/ixsil/readme.txt
new file mode 100644
index 0000000..dc4fea5
--- /dev/null
+++ b/data/at/iaik/ixsil/readme.txt
@@ -0,0 +1,201 @@
+**************************************************************
+This file contains a description of sample sigantures produced
+with the IAIK Signature Library (IXSIL).
+
+Author: Gregor Karlinger
+Date: 15. 11. 2001
+IXSIL Build: 1010
+**************************************************************
+
+signatureAlgorithms/dSASignature.xml
+------------------------------------
+
+  Simple signature using DSA as signature algorithm.
+  DSA public key is encoded as KeyValue.
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/dSASignature.firstReference.txt".
+  
+signatureAlgorithms/rSASignature.xml
+------------------------------------
+
+  Simple signature using RSA as signature algorithm.
+  RSA public key is encoded as KeyValue.
+
+  The input used for the digest computation can be found in file
+  "../digestInputs/rSASignature.firstReference.txt".
+  
+signatureAlgorithms/hMACSignature.xml
+-------------------------------------
+
+  Simple signature using HMAC as authentication algorithm.
+  The secret key is "secret".getBytes("ASCII").
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/hMACSignature.firstReference.txt".
+
+signatureAlgorithms/hMACShortSignature.xml
+------------------------------------------
+
+  Simple signature using HMAC as authentication algorithm.
+  HMAC output length is limited to 40 bits.
+  The secret key is "secret".getBytes("ASCII").
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/hMACShortSignature.firstReference.txt".
+
+coreFeatures/signatureTypesSignature.xml
+----------------------------------------
+
+  Signature containing several References to demonstrate
+  IXSIL's ability to work with enveloping, enveloped and
+  detached signatures.
+  
+  * The first Reference refers to an external source 
+    (http) - detached signature.
+  
+  * The second Reference refers to an external source
+    (file system) - detached signature. The external file
+    is "../samples/sampleTextData.txt"
+    
+  * The third Reference refers to XML data that is a 
+    sibling of the XML Signature, but within the same
+    document - detached signature
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/signatureTypesSignature.thirdReference.txt".
+    
+  * The fourth Reference refers to an external XML file
+    and uses an XPath transform to select parts of the
+    document for signing - detached signature. The external
+    file is "../samples/sampleXMLData.xml"
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/signatureTypesSignature.fourthReference.txt".
+    
+  * The fifth Reference refers to data in an Object of the
+    signature via an ID reference - enveloping signature.
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/signatureTypesSignature.fifthReference.txt".
+    
+  * The sixth Reference refers to data in an Object of the
+    signature via an empty URI (URI="") and using an XPath
+    transform to select the data for signing - enveloping
+    signature.
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/signatureTypesSignature.sixthReference.txt".
+    
+  * The seventh Reference refers to the signature document
+    itself (URI="") and uses an enveloped signature
+    transform - enveloped signature
+  
+    The input used for the digest computation can be found in file
+    "../digestInputs/signatureTypesSignature.seventhReference.txt".
+    
+coreFeatures/manifestSignature.xml
+----------------------------------
+
+  Signature containing a Reference to a Manifest element that
+  is stored in an Object container within the Signature.
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/manifestSignature.firstReference.txt".
+
+  * The first Reference in the Manifest refers to the whole
+    signature document and uses an enveloped signature trans-
+    form to cut out the Signature element.
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/manifestSignature.manifest.firstReference.txt".
+
+  * The second Reference in the Manifest refers an external
+    resource (file system). The external file is
+    "../samples/sampleXMLData.xml".
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/manifestSignature.manifest.secondReference.txt".
+
+coreFeatures/anonymousReferenceSignature.xml
+--------------------------------------------
+
+  Signature containing an anonymous Reference, i.e. the URI
+  attribute of the Reference is missing. In such a case, the
+  application must provide the hint where to find the corres-
+  ponding data. In this case, the data can be found in file
+  "../samples/anonymousReferenceContent.xml".
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/anonymousReferenceSignature.firstReference.txt".
+
+transforms/base64DecodeSignature.xml
+------------------------------------
+
+  Signature containing a Reference to a base64 encoded file.
+  The Reference contains a Base64 transform, i.e. the file
+  will be decoded prior to digest computation. The encoded
+  file is "../samples/sampleBase64EncodedData.txt".
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/base64Signature.firstReference.txt".
+
+transforms/c14nSignature.xml
+----------------------------
+
+  Signature containing two References to an XML file. The 
+  XML file is "../samples/sampleXMLData.xml".
+  
+  * The first Reference contains a canonical XML transform,
+    that is, comments in the XML file will be removed at
+    transformation.
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/c14nSignature.firstReference.txt".
+
+  * The second Reference contains a canonical XML transform
+    with comments, that is, comments in the XML file will be
+    preserved at transformation.
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/c14nSignature.secondReference.txt".
+
+transforms/envelopedSignatureSignature.xml
+------------------------------------------
+
+  Signature containing a single Reference to the signature 
+  file itself (URI=""). The Reference contains an enveloped
+  signature transform to cut out the Signature structure
+  from the XML.
+  
+  The input used for the digest computation can be found in file
+  "../digestInputs/envelopedSignatureSignature.firstReference.txt".
+
+transforms/xPathSignature.xml
+-----------------------------
+
+  Signature containing three internal References to demonstrate
+  document subset selection.
+  
+  * The first Reference contains a reference-only URI ("#objectId").
+    This means that the XML element with its ID attribute set to the
+    value "objectId" is selected; comments will be suppressed.
+    Finally a canonical XML transfrom will be performed prior to
+    digest computation.
+    
+    The input used for the digest computation can be found in file
+    "../digestInputs/xPathSignature.firstReference.txt".
+
+  * The second Reference also contains a reference-only URI 
+    ("#xpointer(id('objectId'))"). This also means that the XML 
+    element with its ID attribute set to the value "objectId"
+    is selected; but contrary to the first Reference, this time
+    comments are preserved. Finally a canonical XML transfrom
+    (preserving comments option chosen) will be performed prior to
+    digest computation.
+
+    The input used for the digest computation can be found in file
+    "../digestInputs/xPathSignature.secondReference.txt".
+
+    
+    
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/dSASignature.firstReference.txt b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/dSASignature.firstReference.txt
new file mode 100644
index 0000000..5089f32
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/dSASignature.firstReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="object">Some text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/hMACShortSignature.firstReference.txt b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/hMACShortSignature.firstReference.txt
new file mode 100644
index 0000000..5089f32
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/hMACShortSignature.firstReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="object">Some text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/hMACSignature.firstReference.txt b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/hMACSignature.firstReference.txt
new file mode 100644
index 0000000..5089f32
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/hMACSignature.firstReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="object">Some text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/rSASignature.firstReference.txt b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/rSASignature.firstReference.txt
new file mode 100644
index 0000000..5089f32
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/digestInputs/rSASignature.firstReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="object">Some text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/signatures/dSASignature.xml b/data/at/iaik/ixsil/signatureAlgorithms/signatures/dSASignature.xml
new file mode 100644
index 0000000..9e554c9
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/signatures/dSASignature.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/><dsig:Reference URI="#object"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>3RGQeH5eHK+jJ2GxGYPhwnzbBBc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>WrfXueeZRTbdpxe3Sam+YDQWvxzragcMRH0SdiL+1zFCPQXn3NdaEA==</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:DSAKeyValue><dsig:P>gn3UnKIFaYTpg3GxNA1dcYOShbJayqOC16w4bpRAhD8KRnqodajByjtwumqXBxL2
+sZntPuxTE/OUCme71p84cilhqwI9F6EzPFIjXZ+30Q6V46Ve+bBPx8kgxXLaesPV
+DyQNu45U2p67cCERxTWC5TWFLp9ZOXmzMlDIhoOWGRc=</dsig:P><dsig:Q>+lB52vo/OrHoCm31vRbyJNj41xs=</dsig:Q><dsig:G>T731LjME8FHBfKVck4G1wX1MIFB2hTRQz9n8crLhsrFvoBBIuP8X56kK4eAYBT40
+2dVh33FMyNySsVG132ZZcGteV8MZotZYO30y0unh8WY+qqxGDc1OZ3A29/m+Cy4W
+oF1pXVuBE6kDyzhjVhq9NkpdbBVmF/oQoyCZ4dI0dxM=</dsig:G><dsig:Y>MBVHib7T0JW8iPaZT++R/2zuoc5SbalCbTHjJDMLe/GWMKzGS8s+FEJldQmZC1R+
+r6jIfAY+wjl3k+UTxRTCjqtM34wEBNvvgVHt95AOgBy/Mam9XKqx/dYLlK0jCk7T
+o/rfWtjhG2BbsJdI6r+68SM0OEBqL5bbYRxRGeWj/P0=</dsig:Y></dsig:DSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object Id="object">Some text from IAIK</dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/signatures/hMACShortSignature.xml b/data/at/iaik/ixsil/signatureAlgorithms/signatures/hMACShortSignature.xml
new file mode 100644
index 0000000..b1e0ba4
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/signatures/hMACShortSignature.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"><dsig:HMACOutputLength>40</dsig:HMACOutputLength></dsig:SignatureMethod><dsig:Reference URI="#object"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>3RGQeH5eHK+jJ2GxGYPhwnzbBBc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>Cx+HU+8=</dsig:SignatureValue><dsig:Object Id="object">Some text from IAIK</dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/signatures/hMACSignature.xml b/data/at/iaik/ixsil/signatureAlgorithms/signatures/hMACSignature.xml
new file mode 100644
index 0000000..89f6bfc
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/signatures/hMACSignature.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"><dsig:HMACOutputLength>160</dsig:HMACOutputLength></dsig:SignatureMethod><dsig:Reference URI="#object"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>3RGQeH5eHK+jJ2GxGYPhwnzbBBc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>r7UpaFBMK5q7i0H3toGvAeFJLs0=</dsig:SignatureValue><dsig:Object Id="object">Some text from IAIK</dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/signatureAlgorithms/signatures/rSASignature.xml b/data/at/iaik/ixsil/signatureAlgorithms/signatures/rSASignature.xml
new file mode 100644
index 0000000..28c384a
--- /dev/null
+++ b/data/at/iaik/ixsil/signatureAlgorithms/signatures/rSASignature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="#object"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>3RGQeH5eHK+jJ2GxGYPhwnzbBBc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>JbrOi+nMW2K3YyckOpGrmm3UaEfWALq1tuN5WJO018g+Rwteu5wt+Veni3xjZTw8
+755M8vGm7QSxnKTMnTHpH+fgMFPXpP3AcnB8CQgu31GV4L+hpslcqnOeMSQj/Wbd
+BX8TfB1Mcl8eP9P9SgomDRSB+gWTaDnsHL6qdK8lUmE=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object Id="object">Some text from IAIK</dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/digestInputs/base64Signature.firstReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/base64Signature.firstReference.txt
new file mode 100644
index 0000000..196c4d4
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/base64Signature.firstReference.txt
@@ -0,0 +1,341 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+<title>Associating Style Sheets with XML documents</title>

+<link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-REC">

+<style type="text/css">code { font-family: monospace }</style>

+</head>

+<body>

+<div class="head">

+<a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/WWW/w3c_home" alt="W3C" height="48" width="72"></a>

+<h1>Associating Style Sheets with XML documents<br>Version 1.0</h1>

+<h2>W3C Recommendation 29 June 1999</h2>

+<dl>

+<dt>This version:</dt>

+<dd>

+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629">http://www.w3.org/1999/06/REC-xml-stylesheet-19990629</a>

+<br>

+</dd>

+<dt>Latest version:</dt>

+<dd>

+<a href="http://www.w3.org/TR/xml-stylesheet">http://www.w3.org/TR/xml-stylesheet</a>

+<br>

+</dd>

+<dt>Previous version:</dt>

+<dd>

+<a href="http://www.w3.org/TR/1999/xml-stylesheet-19990428">http://www.w3.org/TR/1999/xml-stylesheet-19990428</a>

+<br>

+</dd>

+<dt>Editor:</dt>

+<dd>

+

+James Clark

+<a href="mailto:jjc@jclark.com">&lt;jjc@jclark.com&gt;</a>

+<br>

+</dd>

+</dl>

+<p class="copyright">

+<a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright">

+    Copyright</a> &nbsp;&copy;&nbsp; 1999 <a href="http://www.w3.org">W3C</a>

+    (<a href="http://www.lcs.mit.edu">MIT</a>,

+    <a href="http://www.inria.fr/">INRIA</a>,

+    <a href="http://www.keio.ac.jp/">Keio</a> ), All Rights Reserved. W3C

+    <a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Legal Disclaimer">liability,</a><a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#W3C Trademarks">trademark</a>,

+    <a href="http://www.w3.org/Consortium/Legal/copyright-documents.html">document use </a>and

+    <a href="http://www.w3.org/Consortium/Legal/copyright-software.html">software licensing </a>rules apply.

+  </p>

+<hr title="Separator for header">

+</div>

+<h2>

+<a name="abstract">Abstract</a>

+</h2>

+

+<p>This document allows a style sheet to be associated with an XML

+document by including one or more processing instructions with a

+target of <code>xml-stylesheet</code> in the document's prolog.</p>

+

+<h2>

+<a name="status">Status of this document</a>

+</h2>

+

+<p>This document has been reviewed by W3C Members and other interested

+parties and has been endorsed by the Director as a W3C <a href="http://www.w3.org/Consortium/Process/#RecsW3C">Recommendation</a>. It

+is a stable document and may be used as reference material or cited as

+a normative reference from other documents. W3C's role in making the

+Recommendation is to draw attention to the specification and to

+promote its widespread deployment. This enhances the functionality and

+interoperability of the Web.</p>

+

+<p>The list of known errors in this specifications is available at

+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata">http://www.w3.org/TR/1999/xml-stylesheet-19990629/errata</a>.</p>

+

+<p>Comments on this specification may be sent to &lt;<a href="mailto:www-xml-stylesheet-comments@w3.org">www-xml-stylesheet-comments@w3.org</a>&gt;. The archive of public

+comments is available at <a href="http://www.w3.org/Archives/Public/www-xml-stylesheet-comments">http://w3.org/Archives/Public/www-xml-stylesheet-comments</a>.</p>

+

+<p>A list of current W3C Recommendations and other technical documents

+can be found at <a href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p>

+

+<p>The Working Group expects additional mechanisms for linking style

+sheets to XML document to be defined in a future specification.</p>

+

+<p>The use of XML processing instructions in this specification should

+not be taken as a precedent.  The W3C does not anticipate recommending

+the use of processing instructions in any future specification.  The

+<a href="#rationale">Rationale</a> explains why they were used in

+this specification.</p>

+

+<p>This document was produced as part of the <a href="http://www.w3.org/XML/Activity">W3C XML Activity</a>.</p>

+

+

+<h2>

+<a name="contents">Table of contents</a>

+</h2>1 <a href="#The xml-stylesheet processing instruction">The xml-stylesheet processing instruction</a>

+<br>

+<h3>Appendices</h3>A <a href="#References">References</a>

+<br>B <a href="#rationale">Rationale</a>

+<br>

+<hr>

+

+<h2>

+<a name="The xml-stylesheet processing instruction"></a>1 The <code>xml-stylesheet</code> processing instruction</h2>

+

+<p>Style Sheets can be associated with an XML<a href="#XML">[XML10]</a>

+document by using a processing instruction whose target is

+<code>xml-stylesheet</code>.  This processing instruction follows the

+behaviour of the HTML 4.0 <code>&lt;LINK

+REL="stylesheet"&gt;</code><a href="#HTML">[HTML40]</a>.</p>

+

+<p>The <code>xml-stylesheet</code> processing instruction is parsed in

+the same way as a start-tag, with the exception that entities other

+than predefined entities must not be referenced.</p>

+

+<p>The following grammar is given using the same notation as the

+grammar in the XML Recommendation<a href="#XML">[XML10]</a>.  Symbols in the

+grammar that are not defined here are defined in the XML

+Recommendation.</p>

+

+<h5>xml-stylesheet processing instruction</h5>

+<table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td>

+<a name="NT-StyleSheetPI"></a>[1]&nbsp;&nbsp;&nbsp;</td>

+<td>StyleSheetPI</td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td>'&lt;?xml-stylesheet' (<a href="http://www.w3.org/TR/REC-xml#NT-S">S</a> <a href="#NT-PseudoAtt">PseudoAtt</a>)* <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? '?&gt;'</td>

+<td>

+</td>

+</tr>

+<tr valign="baseline">

+<td>

+<a name="NT-PseudoAtt"></a>[2]&nbsp;&nbsp;&nbsp;</td>

+<td>PseudoAtt</td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td>

+<a href="http://www.w3.org/TR/REC-xml#NT-Name">Name</a> <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? '=' <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? <a href="#NT-PseudoAttValue">PseudoAttValue</a>

+</td>

+<td>

+</td>

+</tr>

+<tr valign="baseline">

+<td>

+<a name="NT-PseudoAttValue"></a>[3]&nbsp;&nbsp;&nbsp;</td>

+<td>PseudoAttValue</td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td>('"' ([^"&lt;&amp;] | <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* '"'</td>

+<td>

+</td>

+</tr>

+<tr valign="baseline">

+<td>

+</td>

+<td>

+</td>

+<td>

+</td>

+<td>| "'" ([^'&lt;&amp;] | <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* "'")</td>

+<td>

+</td>

+</tr>

+<tr valign="baseline">

+<td>

+</td>

+<td>

+</td>

+<td>

+</td>

+<td>- (<a href="http://www.w3.org/TR/REC-xml#NT-Char">Char</a>* '?&gt;' <a href="http://www.w3.org/TR/REC-xml#NT-Char">Char</a>*)</td>

+<td>

+</td>

+</tr>

+<tr valign="baseline">

+<td>

+<a name="NT-PredefEntityRef"></a>[4]&nbsp;&nbsp;&nbsp;</td>

+<td>PredefEntityRef</td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td>'&amp;amp;' | '&amp;lt;' | '&amp;gt;' | '&amp;quot;' | '&amp;apos;'</td>

+<td>

+</td>

+</tr>

+</tbody>

+</table>

+

+<p>In <a href="#NT-PseudoAttValue">PseudoAttValue</a>, a <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> or a <a href="#NT-PredefEntityRef">PredefEntityRef</a> is interpreted in the

+same manner as in a normal XML attribute value.  The actual value of

+the pseudo-attribute is the value after each reference is replaced by

+the character it references.  This replacement is not performed

+automatically by an XML processor.</p>

+

+<p>The <code>xml-stylesheet</code> processing instruction is allowed

+only in the prolog of an XML document. The syntax of XML constrains

+where processing instructions are allowed in the prolog; the

+<code>xml-stylesheet</code> processing instruction is allowed anywhere

+in the prolog that meets these constraints.</p>

+

+<blockquote>

+<b>NOTE: </b>If the <code>xml-stylesheet</code> processing instruction

+occurs in the external DTD subset or in a parameter entity, it is

+possible that it may not be processed by a non-validating XML

+processor (see <a href="#XML">[XML10]</a>).</blockquote>

+

+<p>The following pseudo attributes are defined</p>

+

+<pre>href CDATA #REQUIRED

+type CDATA #REQUIRED

+title CDATA #IMPLIED

+media CDATA #IMPLIED

+charset CDATA #IMPLIED

+alternate (yes|no) "no"</pre>

+

+<p>The semantics of the pseudo-attributes are exactly as with

+<code>&lt;LINK REL="stylesheet"&gt;</code> in HTML 4.0, with the

+exception of the <code>alternate</code> pseudo-attribute.  If

+<code>alternate="yes"</code> is specified, then the processing

+instruction has the semantics of <code>&lt;LINK REL="alternate

+stylesheet"&gt;</code> instead of <code>&lt;LINK

+REL="stylesheet"&gt;</code>.</p>

+

+<blockquote>

+<b>NOTE: </b>Since the value of the <code>href</code> attribute is a URI

+reference, it may be a relative URI and it may contain a fragment

+identifier. In particular the URI reference may contain only a

+fragment identifier.  Such a URI reference is a reference to a part of

+the document containing the <code>xml-stylesheet</code> processing

+instruction (see <a href="#RFC2396">[RFC2396]</a>). The consequence is that the

+<code>xml-stylesheet</code> processing instruction allows style sheets

+to be embedded in the same document as the <code>xml-stylesheet</code>

+processing instruction.</blockquote>

+

+<p>In some cases, style sheets may be linked with an XML document by

+means external to the document. For example, earlier versions of HTTP

+<a href="#RFC2068">[RFC2068]</a> (section 19.6.2.4) allowed style sheets to be

+associated with XML documents by means of the <code>Link</code>

+header.  Any links to style sheets that are specified externally to the

+document are considered to occur before the links specified by the

+<code>xml-stylesheet</code> processing instructions.  This is the same

+as in HTML 4.0 (see <a href="http://www.w3.org/TR/REC-html40/present/styles.html#h-14.6">section

+14.6</a>).</p>

+

+<p>Here are some examples from HTML 4.0 with the corresponding

+processing instruction:</p>

+

+<pre>&lt;LINK href="mystyle.css" rel="style sheet" type="text/css"&gt;

+&lt;?xml-stylesheet href="mystyle.css" type="text/css"?&gt;

+

+&lt;LINK href="mystyle.css" title="Compact" rel="stylesheet"

+type="text/css"&gt;

+&lt;?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?&gt;

+

+&lt;LINK href="mystyle.css" title="Medium" rel="alternate stylesheet"

+type="text/css"&gt;

+&lt;?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium"

+type="text/css"?&gt;</pre>

+

+<p>Multiple <code>xml-stylesheet</code> processing instructions are

+also allowed with exactly the same semantics as with <code>LINK

+REL="stylesheet"</code>. For example,</p>

+

+<pre>&lt;LINK rel="alternate stylesheet" title="compact" href="small-base.css"

+type="text/css"&gt;

+&lt;LINK rel="alternate stylesheet" title="compact" href="small-extras.css"

+type="text/css"&gt;

+&lt;LINK rel="alternate stylesheet" title="big print" href="bigprint.css"

+type="text/css"&gt;

+&lt;LINK rel="stylesheet" href="common.css" type="text/css"&gt;</pre>

+

+<p>would be equivalent to:</p>

+

+<pre>&lt;?xml-stylesheet alternate="yes" title="compact" href="small-base.css"

+type="text/css"?&gt;

+&lt;?xml-stylesheet alternate="yes" title="compact" href="small-extras.css"

+type="text/css"?&gt;

+&lt;?xml-stylesheet alternate="yes" title="big print" href="bigprint.css"

+type="text/css"?&gt;

+&lt;?xml-stylesheet href="common.css" type="text/css"?&gt;</pre>

+

+

+

+<hr title="Separator from footer">

+

+<h2>

+<a name="References"></a>A References</h2>

+

+<dl>

+

+<dt>

+<a name="HTML">HTML40</a>

+</dt>

+<dd>World Wide Web

+Consortium. <i>HTML 4.0 Specification.</i> W3C Recommendation. See

+<a href="http://www.w3.org/TR/REC-html40">http://www.w3.org/TR/REC-html40</a>

+</dd>

+

+<dt>

+<a name="RFC2068">RFC2068</a>

+</dt>

+<dd>R. Fielding, J. Gettys, J. Mogul,

+H. Frystyk Nielsen, and T. Berners-Lee.  <i>Hypertext Transfer

+Protocol -- HTTP/1.1.</i>. IETF RFC 2068. See <a href="http://www.ietf.org/rfc/rfc2068.txt">http://www.ietf.org/rfc/rfc2068.txt</a>.</dd>

+

+<dt>

+<a name="RFC2396">RFC2396</a>

+</dt>

+<dd>T. Berners-Lee, R. Fielding, and

+L. Masinter.  <i>Uniform Resource Identifiers (URI): Generic

+Syntax</i>. IETF RFC 2396. See <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>.</dd>

+

+<dt>

+<a name="XML">XML10</a>

+</dt>

+<dd>World Wide Web Consortium. <i>Extensible

+Markup Language (XML) 1.0.</i> W3C Recommendation. See <a href="http://www.w3.org/TR/1998/REC-xml-19980210">http://www.w3.org/TR/1998/REC-xml-19980210</a>

+</dd>

+

+</dl>

+

+

+

+

+<h2>

+<a name="rationale"></a>B Rationale</h2>

+

+<p>There was an urgent requirement for a specification for style sheet

+linking that could be completed in time for the next release from

+major browser vendors.  Only by choosing a simple mechanism closely

+based on a proven existing mechanism could the specification be

+completed in time to meet this requirement.</p>

+

+<p>Use of a processing instruction avoids polluting the main document

+structure with application specific processing information.</p>

+

+<p>The mechanism chosen for this version of the specification is not a

+constraint on the additional mechanisms planned for future versions.

+There is no expectation that these will use processing instructions;

+indeed they may not include the linking information in the source

+document.</p>

+

+

+

+

+</body>

+</html>

diff --git a/data/at/iaik/ixsil/transforms/digestInputs/c14NSignature.firstReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/c14NSignature.firstReference.txt
new file mode 100644
index 0000000..227159f
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/c14NSignature.firstReference.txt
@@ -0,0 +1,4 @@
+<?xml-stylesheet href="doc.xsl"

+   type="text/xsl"   ?>

+<doc>Hello, world!</doc>

+<?pi-without-data?>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/digestInputs/c14NSignature.secondReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/c14NSignature.secondReference.txt
new file mode 100644
index 0000000..a0b0c46
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/c14NSignature.secondReference.txt
@@ -0,0 +1,6 @@
+<?xml-stylesheet href="doc.xsl"

+   type="text/xsl"   ?>

+<doc>Hello, world!<!-- Comment 1 --></doc>

+<?pi-without-data?>

+<!-- Comment 2 -->

+<!-- Comment 3 -->
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/digestInputs/envelopedSignatureSignature.firstReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/envelopedSignatureSignature.firstReference.txt
new file mode 100644
index 0000000..3bde443
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/envelopedSignatureSignature.firstReference.txt
@@ -0,0 +1,5 @@
+<Envelope xmlns="http://iaik.at#Envelope">

+  <DataItem>

+    Some Data from IAIK

+  </DataItem>

+</Envelope>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.firstReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.firstReference.txt
new file mode 100644
index 0000000..d660df4
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.firstReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.secondReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.secondReference.txt
new file mode 100644
index 0000000..3592529
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.secondReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId"><!--A comment from IAIK-->A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.thirdReference.txt b/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.thirdReference.txt
new file mode 100644
index 0000000..d660df4
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/digestInputs/xPathSignature.thirdReference.txt
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/samples/sampleBase64EncodedData.txt b/data/at/iaik/ixsil/transforms/samples/sampleBase64EncodedData.txt
new file mode 100644
index 0000000..1efa071
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/samples/sampleBase64EncodedData.txt
Binary files differ
diff --git a/data/at/iaik/ixsil/transforms/samples/sampleXMLData.xml b/data/at/iaik/ixsil/transforms/samples/sampleXMLData.xml
new file mode 100644
index 0000000..c2126d8
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/samples/sampleXMLData.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet   href="doc.xsl"
+   type="text/xsl"   ?>
+
+<doc>Hello, world!<!-- Comment 1 --></doc>
+
+<?pi-without-data     ?>
+
+<!-- Comment 2 -->
+
+<!-- Comment 3 -->
diff --git a/data/at/iaik/ixsil/transforms/signatures/base64DecodeSignature.xml b/data/at/iaik/ixsil/transforms/signatures/base64DecodeSignature.xml
new file mode 100644
index 0000000..c53e989
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/base64DecodeSignature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="../samples/sampleBase64EncodedData.txt"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>CFDfVk22iawglDdrEIygmWhpPrj0DyWnxLhPBSgHXp6i31oVbicHAOvThv7TyVKd
+eE6K2b5AKOErBwVncngMBmpwtJIoKOgUhgNe4DskfeSdk44OJkT63h0EJxJhUHqz
+NtBe7QrmynpbFnOedDDZwMA9/I8RU0Eq/jikz9nqNdU=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/c14nSignature.xml b/data/at/iaik/ixsil/transforms/signatures/c14nSignature.xml
new file mode 100644
index 0000000..8d0c0cb
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/c14nSignature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="../samples/sampleXMLData.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>R8S/QfGgzSmfIg0qpQthdjJQGuk=</dsig:DigestValue></dsig:Reference><dsig:Reference URI="../samples/sampleXMLData.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>IGE++R3JwgZ17hxfT3VoGmvNBjU=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>cmn28RkAxN5587v+EPof2okKiUkJivh0wKNHK9FuhbA+xUBWsucUFXrNCrug57s4
+xQFsQtXjVKPn+LGehnhvxZqd0MEK0GLndRk2dKogbtX/tc55BsyT1jRDGpeIxqNR
+OnwTleWlp9tMenLPPsa3vMrzXXUqup2A/J7/mZaNnUY=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/envelopedSignatureSignature.xml b/data/at/iaik/ixsil/transforms/signatures/envelopedSignatureSignature.xml
new file mode 100644
index 0000000..aa24b06
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/envelopedSignatureSignature.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Envelope xmlns="http://iaik.at#Envelope">
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>cWFVogsTJUrmoCbGrFoP2mE+F5U=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>l82qilvUhkstzFG8tjTY/DAlWmhMTPz6fhnaIM6qetH9/qagjtrceEwGnc8Q7G20
+laxPg+tjXa9qSHB9wUmOgu5axN3oNsncZxukCi7pmmujflMsXfJKl7jTXweYyKU5
+5tJgeJM3Mnjm4QiAE1X9Ftne4UKFFg4348RUWnlZWBE=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo></dsig:Signature><DataItem>
+    Some Data from IAIK
+  </DataItem>
+</Envelope>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml
new file mode 100644
index 0000000..c3c28b4
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="#objectId"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>Xg7huUaHvGjhk11T6cBa5jKiCAM=</dsig:DigestValue></dsig:Reference><dsig:Reference URI="#xpointer(id(&apos;objectId&apos;))"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>a1YkQDH/XGdccOaiyxOrP6AQBeM=</dsig:DigestValue></dsig:Reference><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">ancestor-or-self::dsig:Object</dsig:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>Xg7huUaHvGjhk11T6cBa5jKiCAM=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>dRM9axVQYPMd0vfzkbstaG8taNTtJA9sF9ze3/xW6AeW9KCguIjHpmG2kAuDJheZ
+RXRO9et+whWzrX8daHchUu6RDbkkL5tOBcMnyKJiPD03NRxut7AWtkFKLhhxzRds
++EA7X0uNf59UIanLlMiGh3+ROzctwyO0z8vbKqjGxYU=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>sDa5yzUv4IJmBY60GZCnkQSAhpG7tgxepi6sj3DlCzxjTtO5MNrjI9sK3WhimpNi
+NDmagzNEjxP3+x1huxL19GoIxZgr5O7E/F2IInSASVZTQsvWZlNauhRs0KZAszIS
+FchvrihILLoUf4tzaOSe6jgMEq6IkO0dWVpcFpAjXTc=</dsig:Modulus><dsig:Exponent>Aw==</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object Id="objectId"><!--A comment from IAIK-->A text from IAIK</dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.0.input b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.0.input
new file mode 100644
index 0000000..d660df4
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.0.input
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.1.input b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.1.input
new file mode 100644
index 0000000..3592529
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.1.input
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId"><!--A comment from IAIK-->A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.2.input b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.2.input
new file mode 100644
index 0000000..d660df4
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.2.input
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="objectId">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.3.input b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.3.input
new file mode 100644
index 0000000..5cde06d
--- /dev/null
+++ b/data/at/iaik/ixsil/transforms/signatures/xPathSignature.xml.3.input
@@ -0,0 +1 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">A text from IAIK</dsig:Object>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/README.txt b/data/com/phaos/phaos-xmldsig-three/README.txt
new file mode 100755
index 0000000..3155b93
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/README.txt
@@ -0,0 +1,248 @@
+Sample XML Signatures Produced Using the Phaos XML Toolkit
+
+November 26, 2002
+
+
+Contents of phaos-xmldsig-three
+===============================
+
+	signature-rsa-enveloped.xml
+	---------------------------	
+	Contains an RSA enveloped signature.
+
+
+	signature-rsa-enveloping.xml
+	----------------------------
+	Contains an RSA enveloping signature.
+
+
+	signature-rsa-detached.xml
+	--------------------------
+	Contains an RSA detached signature.
+
+
+	signature-dsa-enveloped.xml
+	---------------------------	
+	Contains a DSA enveloped signature.
+
+
+	signature-dsa-enveloping.xml
+	----------------------------
+	Contains a DSA enveloping signature.
+
+
+	signature-dsa-detached.xml
+	--------------------------
+	Contains a DSA detached signature.
+
+
+	signature-hmac-md5-c14n-enveloping.xml
+	--------------------------------------
+	Contains an enveloping MD5 HMAC signature and uses XML Canonicalization 
+	as the canonicalization method.  The HMAC secret is the ASCII encoding of
+	the word "test".
+
+
+	signature-hmac-sha1-exclusive-c14n-enveloped.xml
+	------------------------------------------------
+	Contains an enveloped SHA-1 HMAC signature and uses the Exclusive XML
+	Canonicalization canonicalization method.  The HMAC secret is the ASCII 
+	encoding of the word "test".
+
+
+	signature-hmac-sha1-exclusive-c14n-comments-detached.xml
+	--------------------------------------------------------
+	Contains a detached SHA-1 HMAC signature and uses the Exclusive XML
+	Canonicalization With Comments canonicalization method.  The HMAC secret 
+	is the ASCII encoding of the word "test".
+
+
+	signature-hmac-sha1-40-c14n-comments-detached.xml
+	-------------------------------------------------
+	Contains a detached 40-byte SHA-1 HMAC signature and uses the XML
+	Canonicalization With Comments canonicalization method.  The HMAC secret is 
+	the ASCII encoding of the word "test".
+		
+
+	signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml
+	-----------------------------------------------------------
+	Contains a detached 40 byte SHA-1 HMAC signature and uses the Exclusive
+	XML Canonicalization With Comments canonicalization method.  The HMAC secret 
+	is the ASCII encoding of the word "test".
+
+
+	signature-dsa-detached-manifest.xml
+	-----------------------------------
+	Contains a detached DSA signature with a manifest.
+
+
+	signature-rsa-detached-manifest.xml
+	----------------------------------
+	Contains a detached RSA signature with a manifest.
+
+	
+	signature-rsa-detached-b64-transform.xml
+	----------------------------------------
+	Contains a detached RSA signature with a Base64 decode transform.
+
+	
+	signature-rsa-detached-xpath-transform.xml
+	------------------------------------------
+	Contains a detached RSA signature with an XPath transform.
+
+	
+	signature-rsa-xpath-transform-enveloped.xml
+	------------------------------------------
+	Contains an RSA signature with an XPath transform that produces the
+	same result as the enveloped signature algorithm.
+
+	
+	signature-rsa-detached-xslt-transform.xml
+	------------------------------------------
+	Contains a detached RSA signature with an XSLT transformation.
+
+
+	signature-rsa-detached-x509-data.xml
+	------------------------------------
+	Contains a detached RSA signature with several X509Data subelements.
+
+
+	signature-rsa-detached-x509-data-subject-name.xml
+	------------------------------------
+	Contains a detached RSA signature with an X509SubjectName that 
+	references the subject name of the certificate stored in
+	certs/rsa-client-cert.der.
+
+
+	signature-rsa-detached-x509-data-issuer-serial.xml
+	------------------------------------
+	Contains a detached RSA signature with an X509IssuerSerial that 
+	references the issuer and serial number of the certificate stored in
+	certs/rsa-client-cert.der.
+
+
+	signature-rsa-detached-x509-data-ski.xml
+	------------------------------------
+	Contains a detached RSA signature with an X509SKI that 
+	references the Subject Key Identifier of the certificate stored in
+	certs/rsa-client-cert.der.
+
+
+	signature-rsa-detached-x509-data-client-cert.xml
+	------------------------------------
+	Contains a detached RSA signature with an X509Certificate that 
+	represents the certificate stored in certs/rsa-client-cert.der.
+
+
+	signature-rsa-detached-x509-data-cert-chain.xml
+	------------------------------------
+	Contains a detached RSA signature with two X509Certificate 
+	elements that represent the certificates stored in  
+	certs/rsa-client-cert.der and certs/rsa-ca-cert.der.
+
+
+	signature-rsa-detached-xslt-transform-retrieval-method.xml
+	------------------------------------
+	Contains a detached RSA signature with an XSLT transform and a KeyInfo 
+	element that refers to an external X.509 certificate.  The certificate 
+	is located in certs/rsa-client-cert.der.
+
+
+	signature-big.xml
+	-----------------
+	Contains a larger detached RSA signature that contains a manifest and many 
+	references that test various transformation algorithms, URI reference syntax 
+	formats, etc. The KeyInfo contains a KeyName whose value is the subject
+	name of the certificate stored in certs/rsa-client-cert.der.
+
+	
+	signature-rsa-detached-xslt-transform-bad-retrieval-method.xml
+	---------------------------------------------------------------
+	Contains a detached RSA signature with an XSLT transform and a KeyInfo 
+	element that refers to an INCORRECT external X.509 certificate. (The correct
+	X.509 certificate is located in certs/rsa-client-cert.der.)  Verification 
+	should FAIL.
+
+
+	signature-rsa-enveloped-bad-digest-val.xml
+	------------------------------------------
+	Contains an enveloped RSA signature that contains a reference with an INCORRECT
+	digest value.  Verification should FAIL.
+
+
+	signature-rsa-enveloped-bad-sig.xml
+	-----------------------------------
+	Contains an enveloped RSA signature that contains a reference that was added 
+	after the signature value was computed.  Verification should FAIL.
+
+	
+	document.xml
+	------------
+	An XML document that is referenced by some of the signature examples.
+
+
+	document-stylesheet.xml
+	-----------------------
+	The same as document.xml with the addition of an xsl-stylesheet processing
+	instruction.
+
+	
+	document.xsl
+	------------
+	An XSL stylesheet referenced by several of the signature examples and 
+	document-stylesheet.xml.
+
+
+	document.b64
+	------------
+	A Base64 encoded XML document.
+
+
+	README.txt
+	----------
+	This file.
+
+
+
+Contents of phaos-xmldsig-three/certs
+=====================================
+
+	rsa-cert.der
+	------------
+	An RSA end entity certificate issued by the CA certificate contained in
+	rsa-ca-cert.der.
+
+	enc-rsa-key.der
+	---------------
+	The RSA private key that matches rsa-cert.der, password-encrypted using
+	the PKCS#8 format. The password is "test".
+
+	dsa-cert.der
+	------------
+	An DSA end entity certificate issued by the CA certificate contained in
+	dsa-ca-cert.der.
+
+	enc-dsa-key.der
+	---------------
+	The DSA private key that matches dsa-cert.der, password-encrypted using
+	the PKCS#8 format. The password is "test".
+
+	rsa-ca-cert.der
+	---------------
+	An RSA self-signed CA certificate.
+
+	dsa-ca-cert.der
+	---------------
+	A DSA self-signed CA certificate.
+
+	crl.der
+	-------
+	A sample CRL that revokes rsa-cert.der.
+
+
+
+Joe Morgan
+Software Engineer
+Phaos Technology
+jmorgan@phaos.com	
+http://www.phaos.com/
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/crl.der b/data/com/phaos/phaos-xmldsig-three/certs/crl.der
new file mode 100755
index 0000000..c80e272
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/crl.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/dsa-ca-cert.der b/data/com/phaos/phaos-xmldsig-three/certs/dsa-ca-cert.der
new file mode 100755
index 0000000..50d738c
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/dsa-ca-cert.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/dsa-cert.der b/data/com/phaos/phaos-xmldsig-three/certs/dsa-cert.der
new file mode 100755
index 0000000..461dbf0
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/dsa-cert.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/enc-dsa-key.der b/data/com/phaos/phaos-xmldsig-three/certs/enc-dsa-key.der
new file mode 100755
index 0000000..3cfb02a
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/enc-dsa-key.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/enc-rsa-key.der b/data/com/phaos/phaos-xmldsig-three/certs/enc-rsa-key.der
new file mode 100755
index 0000000..0715b17
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/enc-rsa-key.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/rsa-ca-cert.der b/data/com/phaos/phaos-xmldsig-three/certs/rsa-ca-cert.der
new file mode 100755
index 0000000..7bd9a2c
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/rsa-ca-cert.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/certs/rsa-cert.der b/data/com/phaos/phaos-xmldsig-three/certs/rsa-cert.der
new file mode 100755
index 0000000..a6c6e5f
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/certs/rsa-cert.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmldsig-three/document-stylesheet.xml b/data/com/phaos/phaos-xmldsig-three/document-stylesheet.xml
new file mode 100755
index 0000000..e74e041
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/document-stylesheet.xml
@@ -0,0 +1,7 @@
+<?xml-stylesheet type="text/xsl" href="document.xsl"?>
+<player id="10012" bats="left" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+</player>
diff --git a/data/com/phaos/phaos-xmldsig-three/document.b64 b/data/com/phaos/phaos-xmldsig-three/document.b64
new file mode 100755
index 0000000..0b21b94
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/document.b64
@@ -0,0 +1,4 @@
+PHBsYXllciBpZD0iMTAwMTIiIGJhdHM9ImxlZnQiIHRocm93cz0icmlnaHQiPg0K
+CTwhLS0gSGVyZSdzIGEgY29tbWVudCAtLT4NCgk8bmFtZT5BbGZvbnNvIFNvcmlh
+bm88L25hbWU+DQoJPHBvc2l0aW9uPjJCPC9wb3NpdGlvbj4NCgk8dGVhbT5OZXcg
+WW9yayBZYW5rZWVzPC90ZWFtPg0KPC9wbGF5ZXI+DQo=
diff --git a/data/com/phaos/phaos-xmldsig-three/document.xml b/data/com/phaos/phaos-xmldsig-three/document.xml
new file mode 100755
index 0000000..9309c2f
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/document.xml
@@ -0,0 +1,6 @@
+<player id="10012" bats="left" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+</player>
diff --git a/data/com/phaos/phaos-xmldsig-three/document.xsl b/data/com/phaos/phaos-xmldsig-three/document.xsl
new file mode 100755
index 0000000..ed9d978
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/document.xsl
@@ -0,0 +1,45 @@
+
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict" >
+
+<xsl:strip-space elements="player name position team"/>
+<xsl:output
+   method="xml"
+   indent="no"
+   encoding="iso-8859-1"
+/>
+
+<xsl:template match="player">
+ <html>
+   <head>
+     <title>
+       <xsl:value-of select="name"/>
+     </title>
+   </head>
+   <body>
+     <xsl:apply-templates/>
+   </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="player/name">
+  <h1>
+    <xsl:apply-templates/>
+  </h1>
+</xsl:template>
+
+<xsl:template match="player/position">
+  <h2>
+    <xsl:apply-templates/>
+  </h2>
+</xsl:template>
+
+<xsl:template match="player/team">
+  <h3>
+    <xsl:apply-templates/>
+  </h3>
+</xsl:template>
+
+
+
+</xsl:stylesheet>
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-big.xml b/data/com/phaos/phaos-xmldsig-three/signature-big.xml
new file mode 100755
index 0000000..348f133
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-big.xml
@@ -0,0 +1,39 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-b64" URI="document.b64"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-xslt" URI="document-stylesheet.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="player name position team"/>
+<xsl:output encoding="iso-8859-1" indent="no" method="xml"/>
+
+<xsl:template match="player">
+ <html>
+   <head>
+     <title>
+       <xsl:value-of select="name"/>
+     </title>
+   </head>
+   <body>
+     <xsl:apply-templates/>
+   </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="player/name">
+  <h1>
+    <xsl:apply-templates/>
+  </h1>
+</xsl:template>
+
+<xsl:template match="player/position">
+  <h2>
+    <xsl:apply-templates/>
+  </h2>
+</xsl:template>
+
+<xsl:template match="player/team">
+  <h3>
+    <xsl:apply-templates/>
+  </h3>
+</xsl:template>
+
+
+
+</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2HiTcKdfZ9O83wthUFP8ISRdRXQ=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-xpath" URI="document.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">@*</dsig:XPath></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>TReY52bmpNnv+3gET3YhgJXTImk=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-0"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>Zk5dsGelTgg61hMSPfKYRRYZvr8=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-object-0" Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-0"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>BGhr3V/fMiTscUgZVMEMmeQvQpI=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-key-info" URI="#key-info"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>k08/9AdPEuZyBRJhHKyjH1px3IQ=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-key-name" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:ds="http://www.w3.org/2000/09/xmldsig#">ancestor-or-self::ds:KeyName</dsig:XPath></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>4ehoLl+KxYvqlwPGRaPcpxprLeA=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-xpointer-0" URI="#xpointer(id('reference-b64'))"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>CBCjDfHcpu7cWHr6zD0y/Y62fso=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-xpointer-1" URI="#xpointer(id('reference-object-0'))"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>RwemIyLY5WSPgXA3OZiZLhGCyTo=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>EUqZ5jMNvD/dHHi90X//yL7r7t6WpyY0fChIAaUPPXsbDHeNgzfsDe8AZYYD6klroeYJRuHXHtY1PdB5b9+XfwO3oduznLYVN3bmeLMvdYMWlw4SGYtbvyNZtovgA8qcEAQ29sQ+aA9pvCQgSKpTJF8DuYv6fKlktZtPyYh7HRk=</dsig:SignatureValue><dsig:KeyInfo Id="key-info"><dsig:KeyName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:KeyName></dsig:KeyInfo><dsig:Object Id="object-0"><dsig:Manifest Id="manifest-0"><dsig:Reference Id="reference-raw-x509-cert" Type="http://www.w3.org/2000/09/xmldsig#rawX509Certificate" URI="certs/rsa-cert.der"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>RtIlTB3BmyCRFTr7sRtOyPni0Ig=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-rfc3161" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-dsa-detached.xml b/data/com/phaos/phaos-xmldsig-three/signature-dsa-detached.xml
new file mode 100755
index 0000000..81a394b
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-dsa-detached.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/><dsig:Reference URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>IEYfZwI0+/wn9rTbJdXaIVAvjJN1vvmDDbw4X4GY1Row9OMyiI7VqA==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIDjzCCA02gAwIBAgIDHoSBMAkGByqGSM44BAMwfDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxFjAUBgNVBAMTDVRlc3QgQ0EgKERTQSkwHhcNMDIwNDI5MTkxNzUyWhcNMTIwNDI2MTkxNzUyWjCBgDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxGjAYBgNVBAMTEVRlc3QgQ2xpZW50IChEU0EpMIIBtjCCASsGByqGSM44BAEwggEeAoGBAOZZarV6NhtYOtSfFhbD9NFPXJec+3ps5Mak63uAvKVf6nU/GEZG8a7xyuwXOwV3ce2m3D+OvONg3BGdO7u3rAs5VfY84kE1rIo/XepfDa2vUUTKs9+8A8dIVD0X5lh3hFRR6UJIFJS9ZWov1I7N+n24iJ11qEd31kJ+vr46j+UvAhUAvSPQz7ak24nBo5gwSMfEXkvEblcCgYAJTKoCgSREekqtuZWcDy3e+RIQzwaTeoeZM26fFV2YFVqK2o+d/oPtJfEtFA2+4nz4EAjvRT/6K7kRSScT5DO8fZs8/0H2leX2U0FXzzDOMIL4zeRAPb4GOmz410mROOGskzKCLwo8YINuZ9Kp/4XX6cEikMiArNbFuFQwd31V8gOBhAACgYAktkcKG0v06OFikPa1Wk3j5Sun0/RH/WOaRADe9jJxJ/oYO0YPIRKMK5aXawfgTAi3fImSE3gI/AaCuuSrwfVL5TtfvqdMRqhsCYSWcGsF4Xq5q1HDCYK9WbgMIqzVck143VCWxsuKR/1omC7OOPy6fPJhlF2MxyCOEu1WN5gALaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBRsW9jwXGyEQfGGTp1+6fy5Alr2qDAJBgcqhkjOOAQDAzEAMC4CFQCLHnvOkvMdxjw3sSYgdljtiEGPTAIVALEZRsqT2ldGoOE3dUgY3LEWenhN</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (DSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>2000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (DSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>bFvY8FxshEHxhk6dfun8uQJa9qg=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-dsa-enveloped.xml b/data/com/phaos/phaos-xmldsig-three/signature-dsa-enveloped.xml
new file mode 100755
index 0000000..84e2e8a
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-dsa-enveloped.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>Hmt1KjwoXdyyroB+KfcoUEaM5NcXhwB2CbIblJHwTxek1bF1ZMqvig==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIDjzCCA02gAwIBAgIDHoSBMAkGByqGSM44BAMwfDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxFjAUBgNVBAMTDVRlc3QgQ0EgKERTQSkwHhcNMDIwNDI5MTkxNzUyWhcNMTIwNDI2MTkxNzUyWjCBgDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxGjAYBgNVBAMTEVRlc3QgQ2xpZW50IChEU0EpMIIBtjCCASsGByqGSM44BAEwggEeAoGBAOZZarV6NhtYOtSfFhbD9NFPXJec+3ps5Mak63uAvKVf6nU/GEZG8a7xyuwXOwV3ce2m3D+OvONg3BGdO7u3rAs5VfY84kE1rIo/XepfDa2vUUTKs9+8A8dIVD0X5lh3hFRR6UJIFJS9ZWov1I7N+n24iJ11qEd31kJ+vr46j+UvAhUAvSPQz7ak24nBo5gwSMfEXkvEblcCgYAJTKoCgSREekqtuZWcDy3e+RIQzwaTeoeZM26fFV2YFVqK2o+d/oPtJfEtFA2+4nz4EAjvRT/6K7kRSScT5DO8fZs8/0H2leX2U0FXzzDOMIL4zeRAPb4GOmz410mROOGskzKCLwo8YINuZ9Kp/4XX6cEikMiArNbFuFQwd31V8gOBhAACgYAktkcKG0v06OFikPa1Wk3j5Sun0/RH/WOaRADe9jJxJ/oYO0YPIRKMK5aXawfgTAi3fImSE3gI/AaCuuSrwfVL5TtfvqdMRqhsCYSWcGsF4Xq5q1HDCYK9WbgMIqzVck143VCWxsuKR/1omC7OOPy6fPJhlF2MxyCOEu1WN5gALaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBRsW9jwXGyEQfGGTp1+6fy5Alr2qDAJBgcqhkjOOAQDAzEAMC4CFQCLHnvOkvMdxjw3sSYgdljtiEGPTAIVALEZRsqT2ldGoOE3dUgY3LEWenhN</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (DSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>2000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (DSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>bFvY8FxshEHxhk6dfun8uQJa9qg=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-dsa-enveloping.xml b/data/com/phaos/phaos-xmldsig-three/signature-dsa-enveloping.xml
new file mode 100755
index 0000000..aa4a206
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-dsa-enveloping.xml
@@ -0,0 +1,6 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#DSig.Object_FXUsJKYcZCtVFl80BxBacw22"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>rXdK89trp685VfNWmSyYrLGP+5Y=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>iqsxSGtOON/M37ZczTO5EZXQrNQSO0pIPQlLysCmfOLqAoHi2MBwvA==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIDjzCCA02gAwIBAgIDHoSBMAkGByqGSM44BAMwfDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxFjAUBgNVBAMTDVRlc3QgQ0EgKERTQSkwHhcNMDIwNDI5MTkxNzUyWhcNMTIwNDI2MTkxNzUyWjCBgDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxGjAYBgNVBAMTEVRlc3QgQ2xpZW50IChEU0EpMIIBtjCCASsGByqGSM44BAEwggEeAoGBAOZZarV6NhtYOtSfFhbD9NFPXJec+3ps5Mak63uAvKVf6nU/GEZG8a7xyuwXOwV3ce2m3D+OvONg3BGdO7u3rAs5VfY84kE1rIo/XepfDa2vUUTKs9+8A8dIVD0X5lh3hFRR6UJIFJS9ZWov1I7N+n24iJ11qEd31kJ+vr46j+UvAhUAvSPQz7ak24nBo5gwSMfEXkvEblcCgYAJTKoCgSREekqtuZWcDy3e+RIQzwaTeoeZM26fFV2YFVqK2o+d/oPtJfEtFA2+4nz4EAjvRT/6K7kRSScT5DO8fZs8/0H2leX2U0FXzzDOMIL4zeRAPb4GOmz410mROOGskzKCLwo8YINuZ9Kp/4XX6cEikMiArNbFuFQwd31V8gOBhAACgYAktkcKG0v06OFikPa1Wk3j5Sun0/RH/WOaRADe9jJxJ/oYO0YPIRKMK5aXawfgTAi3fImSE3gI/AaCuuSrwfVL5TtfvqdMRqhsCYSWcGsF4Xq5q1HDCYK9WbgMIqzVck143VCWxsuKR/1omC7OOPy6fPJhlF2MxyCOEu1WN5gALaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBRsW9jwXGyEQfGGTp1+6fy5Alr2qDAJBgcqhkjOOAQDAzEAMC4CFQCLHnvOkvMdxjw3sSYgdljtiEGPTAIVALEZRsqT2ldGoOE3dUgY3LEWenhN</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (DSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>2000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (DSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>bFvY8FxshEHxhk6dfun8uQJa9qg=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="DSig.Object_FXUsJKYcZCtVFl80BxBacw22" MimeType="text/xml"><player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+</player></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-dsa-manifest.xml b/data/com/phaos/phaos-xmldsig-three/signature-dsa-manifest.xml
new file mode 100755
index 0000000..291d949
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-dsa-manifest.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>k0jMfEzvBG2Uh9H0MCqLn3OqkFVUwKIyl6VWlQbk91JzDgzMhtEyrg==</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:DSAKeyValue><dsig:P>5llqtXo2G1g61J8WFsP00U9cl5z7emzkxqTre4C8pV/qdT8YRkbxrvHK7Bc7BXdx7abcP46842DcEZ07u7esCzlV9jziQTWsij9d6l8Nra9RRMqz37wDx0hUPRfmWHeEVFHpQkgUlL1lai/Ujs36fbiInXWoR3fWQn6+vjqP5S8=</dsig:P><dsig:Q>vSPQz7ak24nBo5gwSMfEXkvEblc=</dsig:Q><dsig:G>CUyqAoEkRHpKrbmVnA8t3vkSEM8Gk3qHmTNunxVdmBVaitqPnf6D7SXxLRQNvuJ8+BAI70U/+iu5EUknE+QzvH2bPP9B9pXl9lNBV88wzjCC+M3kQD2+Bjps+NdJkTjhrJMygi8KPGCDbmfSqf+F1+nBIpDIgKzWxbhUMHd9VfI=</dsig:G><dsig:Y>JLZHChtL9OjhYpD2tVpN4+Urp9P0R/1jmkQA3vYycSf6GDtGDyESjCuWl2sH4EwIt3yJkhN4CPwGgrrkq8H1S+U7X76nTEaobAmElnBrBeF6uatRwwmCvVm4DCKs1XJNeN1QlsbLikf9aJguzjj8unzyYZRdjMcgjhLtVjeYAC0=</dsig:Y><dsig:J>ATfG1k4XSpDlWczkblMTpUkvazbCh6NH0ImOzLyjXlhRpihqtb/HBaCGWs3JzAiafW75tk57/9+vj6drV/vl44l14K5piP7VnDSADNCkBq9gCN/wM3u8w7cb8gpgTqC68I2yHzVVh4umjOrrgg==</dsig:J></dsig:DSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-hmac-md5-c14n-enveloping.xml b/data/com/phaos/phaos-xmldsig-three/signature-hmac-md5-c14n-enveloping.xml
new file mode 100755
index 0000000..2550c5d
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-hmac-md5-c14n-enveloping.xml
@@ -0,0 +1,6 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"/><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-paOGfpowMpVEz7RkFL6iWA22"><dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/><dsig:DigestValue>tQ7wVagV/v8GTSZnYYYw3g==</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>BsR9wW+N76Dg+QYMpwN5kA==</dsig:SignatureValue><dsig:Object Id="object-paOGfpowMpVEz7RkFL6iWA22" MimeType="text/xml"><player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+</player></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-40-c14n-comments-detached.xml b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-40-c14n-comments-detached.xml
new file mode 100755
index 0000000..2dbe446
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-40-c14n-comments-detached.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"><dsig:HMACOutputLength>40</dsig:HMACOutputLength></dsig:SignatureMethod><dsig:Reference URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>D8A3AYM=</dsig:SignatureValue></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml
new file mode 100755
index 0000000..212f322
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"><dsig:HMACOutputLength>40</dsig:HMACOutputLength></dsig:SignatureMethod><dsig:Reference URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>awZmh2c=</dsig:SignatureValue></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-comments-detached.xml b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-comments-detached.xml
new file mode 100755
index 0000000..05238c7
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-comments-detached.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/><dsig:Reference URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>kF7hLqyaxP0KeS7N3VereUYo3XE=</dsig:SignatureValue></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-enveloped.xml b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-enveloped.xml
new file mode 100755
index 0000000..e6d07a1
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-hmac-sha1-exclusive-c14n-enveloped.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>KOKmDJ7emm1ESMBujg88B8g/Rd8=</dsig:SignatureValue></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-b64-transform.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-b64-transform.xml
new file mode 100755
index 0000000..b744c9b
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-b64-transform.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>9BGp06kfYkpbY8LXwb6YS+UJz5A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>GbZsFzJ3pu+nmV22+gvH3DjUjw7uLQdCxr83GjtrNuBpnV3y6nqp1S5Tu7TQeRQjc7YUAXBwcq74ur4BBzqKVF3waB0zP99HH6u165g811s05lKLdw4WY3WdfA67mvDSbDCYvb6ENot7uQcEnDTyIrrsfekZTvqCX/bHwb7di34=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>gIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZU=</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.b64"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xpath-transform.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xpath-transform.xml
new file mode 100755
index 0000000..b9d032b
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xpath-transform.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>8EQLOiDYEmJDGDVTgNAcWNxr2Hg=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>dVvxMcQMshKcCJuEaqPf4gK2yQdZrEEflYIWKZ5vZ5Hxm2q98sifPFdbEH4+juo0wTbu2fqbY4U9pOGWbkZRerOh/iCtDU+pNqwrzXvmPhRIb9Ncwo7sRuy70j4jewNFhyku0PKbKuVmikZugWr+u3nS2f6CTsEp1/JzF4bwLA4=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>gIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZU=</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">@*</dsig:XPath></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>TReY52bmpNnv+3gET3YhgJXTImk=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method.xml
new file mode 100755
index 0000000..a7ead61
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>fbye4Xm//RPUTsLd1dwJPo0gPZYX6gVYCEB/gz2348EARNk/nCCch1fFfpuqAGMKg4ayVC0yWkUyE5V4QB33jaGlh9wuNQSjxs6TIvFwSsT+0ioDgVgFv0gVeasbyNL4rFEHuAWL8QKwDT9L6b2wUvJC90DmpBs9GMR2jTZIWlM=</dsig:SignatureValue><dsig:KeyInfo><dsig:RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#rawX509Certificate" URI="certs/dsa-ca-cert.der"/></dsig:KeyInfo></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method.xml
new file mode 100755
index 0000000..e093c74
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method.xml
@@ -0,0 +1,39 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>afPdOzRB6PgYpVX2GECgTBf8P30=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>ffXjlLiu+EuGKfMLhvhZb6m3ULwd1zJ7BBe48oHrGxGsEdQWLt18AyOYMFHlhRi0i2DPurR6jPJGKWhwD6uRM1c6Rb/eDlZ7FNeqI0Bzv8xA0QEZ1nLAVJBC4LAKZp3Ha+7hs+l9rKuCk9ZiSO1UDMppEd8zoTucqCiAKTOWMd8=</dsig:SignatureValue><dsig:KeyInfo><dsig:RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#rawX509Certificate" URI="certs/rsa-cert.der"/></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document-stylesheet.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="player name position team"/>
+<xsl:output encoding="iso-8859-1" indent="no" method="xml"/>
+
+<xsl:template match="player">
+ <html>
+   <head>
+     <title>
+       <xsl:value-of select="name"/>
+     </title>
+   </head>
+   <body>
+     <xsl:apply-templates/>
+   </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="player/name">
+  <h1>
+    <xsl:apply-templates/>
+  </h1>
+</xsl:template>
+
+<xsl:template match="player/position">
+  <h2>
+    <xsl:apply-templates/>
+  </h2>
+</xsl:template>
+
+<xsl:template match="player/team">
+  <h3>
+    <xsl:apply-templates/>
+  </h3>
+</xsl:template>
+
+
+
+</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2HiTcKdfZ9O83wthUFP8ISRdRXQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform.xml
new file mode 100755
index 0000000..ef2eff8
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached-xslt-transform.xml
@@ -0,0 +1,39 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>afPdOzRB6PgYpVX2GECgTBf8P30=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>ffXjlLiu+EuGKfMLhvhZb6m3ULwd1zJ7BBe48oHrGxGsEdQWLt18AyOYMFHlhRi0i2DPurR6jPJGKWhwD6uRM1c6Rb/eDlZ7FNeqI0Bzv8xA0QEZ1nLAVJBC4LAKZp3Ha+7hs+l9rKuCk9ZiSO1UDMppEd8zoTucqCiAKTOWMd8=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>gIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZU=</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document-stylesheet.xml"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="player name position team"/>
+<xsl:output encoding="iso-8859-1" indent="no" method="xml"/>
+
+<xsl:template match="player">
+ <html>
+   <head>
+     <title>
+       <xsl:value-of select="name"/>
+     </title>
+   </head>
+   <body>
+     <xsl:apply-templates/>
+   </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="player/name">
+  <h1>
+    <xsl:apply-templates/>
+  </h1>
+</xsl:template>
+
+<xsl:template match="player/position">
+  <h2>
+    <xsl:apply-templates/>
+  </h2>
+</xsl:template>
+
+<xsl:template match="player/team">
+  <h3>
+    <xsl:apply-templates/>
+  </h3>
+</xsl:template>
+
+
+
+</xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>2HiTcKdfZ9O83wthUFP8ISRdRXQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached.xml
new file mode 100755
index 0000000..22e28f6
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-detached.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>clDfKMq12I9JQp01RSzDcBro/+H8rTgaD9kgUCgvA8dEF55EessFUP6RC+KHZoNSJVGcnSKJa6Rtdi3mwS7b3zBo4pExiMLHgyi1UMViklX+MC75oU6tSDs3PP8r6BKmZqj0FNcjOh7wgJzey8nyv8UrTnQniSvZK62JYKz73sY=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val.xml
new file mode 100755
index 0000000..87cbf29
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nM52V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>fbye4Xm//RPUTsLd1dwJPo0gPZYX6gVYCEB/gz2348EARNk/nCCch1fFfpuqAGMKg4ayVC0yWkUyE5V4QB33jaGlh9wuNQSjxs6TIvFwSsT+0ioDgVgFv0gVeasbyNL4rFEHuAWL8QKwDT9L6b2wUvJC90DmpBs9GMR2jTZIWlM=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped-bad-sig.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped-bad-sig.xml
new file mode 100755
index 0000000..49dd47c
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped-bad-sig.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="ref-EZnNy6QCskkDpv7kwcMl9w22" URI=""><dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>fbye4Xm//RPUTsLd1dwJPo0gPZYX6gVYCEB/gz2348EARNk/nCCch1fFfpuqAGMKg4ayVC0yWkUyE5V4QB33jaGlh9wuNQSjxs6TIvFwSsT+0ioDgVgFv0gVeasbyNL4rFEHuAWL8QKwDT9L6b2wUvJC90DmpBs9GMR2jTZIWlM=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped.xml
new file mode 100755
index 0000000..c25709f
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloped.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>fbye4Xm//RPUTsLd1dwJPo0gPZYX6gVYCEB/gz2348EARNk/nCCch1fFfpuqAGMKg4ayVC0yWkUyE5V4QB33jaGlh9wuNQSjxs6TIvFwSsT+0ioDgVgFv0gVeasbyNL4rFEHuAWL8QKwDT9L6b2wUvJC90DmpBs9GMR2jTZIWlM=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloping.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloping.xml
new file mode 100755
index 0000000..bf8ce69
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-enveloping.xml
@@ -0,0 +1,6 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#DSig.Object_oZgpbcerGtb0YWgPcBv8Fg22"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>OLdgv4vWS4DAsiZUr41BZgppB2Q=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>eiuD94jyedzuHvhICyQ8vkeHjyhiFf1dWQEikAaf+q2edJumgz2wECVA4g8v/97Sp8f5A/97ktVAknsRxmC7JHuwTzgaz9gKvqIbCpHZLAPxovI1wA8o+YzuH1lv4RtkMv3WYqwuGm3eisnEv464H9Sa2V6L0VUHNPk8MEwDUyo=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo><dsig:Object Id="DSig.Object_oZgpbcerGtb0YWgPcBv8Fg22" MimeType="text/xml"><player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+</player></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain.xml
new file mode 100755
index 0000000..e8ea535
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509Certificate>MIICzjCCAjegAwIBAgIDAYagMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MDUyNFoXDTEwMTIzMTA1MDAwMFowfDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxFjAUBgNVBAMTDVRlc3QgQ0EgKFJTQSkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALO5BLdMI/8/geNgk2SgbklQImTtQDwhkcutAlw35rS/84Y+Ct1qBi5r8c6JRVb/oEqQSs9TBczpLnd+D7xiqJ6/JcB3R9MDg/pAVoJCrCY4oZNlkJSasYWKZo77zSuUphNEfJEVZ4SMtwxZQLHFailJHm4L30zjI2E0N2YHyi7/AgMBAAGjXjBcMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwfGADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLmNvbTAdBgNVHQ4EFgQUMwlR0HC1hlo487v3Z47eghoDMMwwDQYJKoZIhvcNAQEEBQADgYEAY+elRel/6kG/o7xNmU9CrZM1EJMh3cHoedPOHt4yHP6crj6OYZMA+C7ifHX/wvGpcwZymMPqlr3cQ7B7/h88yCVJuANTe1BQtA6nZ4Cz6Bh9Mip3n8ycuXCDbxkUd0ALQYD6SS2+awVSHVGYRmFRd9vyW1nkg9EsScaqa7XG+6A=</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert.xml
new file mode 100755
index 0000000..0a1f0b4
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial.xml
new file mode 100755
index 0000000..3b20b28
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski.xml
new file mode 100755
index 0000000..0554d86
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name.xml
new file mode 100755
index 0000000..470da21
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data.xml
new file mode 100755
index 0000000..005401a
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest-x509-data.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509Certificate>MIICzjCCAjegAwIBAgIDAYagMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MDUyNFoXDTEwMTIzMTA1MDAwMFowfDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxFjAUBgNVBAMTDVRlc3QgQ0EgKFJTQSkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALO5BLdMI/8/geNgk2SgbklQImTtQDwhkcutAlw35rS/84Y+Ct1qBi5r8c6JRVb/oEqQSs9TBczpLnd+D7xiqJ6/JcB3R9MDg/pAVoJCrCY4oZNlkJSasYWKZo77zSuUphNEfJEVZ4SMtwxZQLHFailJHm4L30zjI2E0N2YHyi7/AgMBAAGjXjBcMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwfGADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLmNvbTAdBgNVHQ4EFgQUMwlR0HC1hlo487v3Z47eghoDMMwwDQYJKoZIhvcNAQEEBQADgYEAY+elRel/6kG/o7xNmU9CrZM1EJMh3cHoedPOHt4yHP6crj6OYZMA+C7ifHX/wvGpcwZymMPqlr3cQ7B7/h88yCVJuANTe1BQtA6nZ4Cz6Bh9Mip3n8ycuXCDbxkUd0ALQYD6SS2+awVSHVGYRmFRd9vyW1nkg9EsScaqa7XG+6A=</dsig:X509Certificate><dsig:X509CRL>MIIBnjCCAQcCAQEwDQYJKoZIhvcNAQEEBQAwfDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcgWW9yazEZMBcGA1UEChMQUGhhb3MgVGVjaG5vbG9neTEUMBIGA1UECxMLRW5naW5lZXJpbmcxFjAUBgNVBAMTDVRlc3QgQ0EgKFJTQSkXDTAyMDQyOTE5MTkyOFoXDTEyMDQyNjE5MTkyOFowJDAiAgMPQkEXDTAyMDQyOTE5MTkyOFowDDAKBgNVHRUEAwoBAaAxMC8wDAYDVR0UBAUCAy3GwDAfBgNVHSMEGDAWgBQzCVHQcLWGWjjzu/dnjt6CGgMwzDANBgkqhkiG9w0BAQQFAAOBgQBAp2he5UWtQxjGt1M6cQnBtNFbG2EYfQOtXt0bWOl8vjRMcFFtCc0/eXr9TQ13F7E4E6mF6geHzjFQ/qYF5r5ytZCBusCD2DGem0HWNiWIj9FMKvhxcqCYE3FY1d79EMjbI9Du81NUFZgdQub0LbhXkEt53j1p7ff8bI1ng+vtFw==</dsig:X509CRL></dsig:X509Data></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest.xml
new file mode 100755
index 0000000..49c3000
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-manifest.xml
@@ -0,0 +1 @@
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference Id="reference-manifest" Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>NIYWGr1CiWC02cfck47Xf/UM9AA=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>E3tz123wD0lO8VwhVEBfFTsD5gc0Bplx6YtVuDM0cUJDHb5F+DiuxGugGqIt+CKUklSO2kSD7YmDeTnT+bXbbX+wokGQhKib+GhHQbYW8rckvF9KJ7Z+U1uKKGW3NyKN281Q301XDQYKrSwBK+ns4+PmVpNMB8Rfqp6jWJkX1aE=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>gIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZU=</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo><dsig:Object><dsig:Manifest Id="manifest"><dsig:Reference Id="reference-0" URI="document.xml"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>5KcCsBlhsIP4iMmHcaU2dXJPU8k=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="reference-1" URI="http://www.ietf.org/rfc/rfc3161.txt"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>eT5ZU9fkIwQ9b9XAYq+iIYnj0DQ=</dsig:DigestValue></dsig:Reference></dsig:Manifest></dsig:Object></dsig:Signature>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped.xml b/data/com/phaos/phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped.xml
new file mode 100755
index 0000000..72329b1
--- /dev/null
+++ b/data/com/phaos/phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped.xml
@@ -0,0 +1,6 @@
+<player bats="left" id="10012" throws="right">
+	<!-- Here's a comment -->
+	<name>Alfonso Soriano</name>
+	<position>2B</position>
+	<team>New York Yankees</team>
+<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><dsig:XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">count(ancestor-or-self::dsig:Signature  | here()/ancestor::dsig:Signature[1]) &gt;  count(ancestor-or-self::dsig:Signature)</dsig:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nDF2V/bzRd0VE3EwShWtsBzTEDc=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>eMfbu79eYzYilIOVlOw4r/PgJAJm4wdFhBnqxPf2OYtwtv/zHzbwvhfVQG90cYlWAdW7zaki1Om1LdPxgAb+urxb8e5gma3nxK+u/jPJ9ykQimqiOpBIpbGYOv/xFDS1XDu4LY4BITe+ZyyvUpYSFGv5X//eJ9rUyC8TJy8SNEk=</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIC0DCCAjmgAwIBAgIDD0JBMA0GCSqGSIb3DQEBBAUAMHwxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRYwFAYDVQQDEw1UZXN0IENBIChSU0EpMB4XDTAyMDQyOTE5MTY0MFoXDTEyMDQyNjE5MTY0MFowgYAxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxGTAXBgNVBAoTEFBoYW9zIFRlY2hub2xvZ3kxFDASBgNVBAsTC0VuZ2luZWVyaW5nMRowGAYDVQQDExFUZXN0IENsaWVudCAoUlNBKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAgIb6nAB9oS/AI5jIj6WymvQhRxiMlE07G4abmMliYi5zWzvaFE2tnU+RZIBgtoXcgDEIU/vsLQut7nzCn9mHxC8JEaV4D4U91j64AyZakShqJw7qjJfqUxxPL0yJv2oFiouPDjGuJ9JPi0NrsZq+yfWfM54s4b9SNkcOIVMybZUCAwEAAaNbMFkwDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3MuY29tMB0GA1UdDgQWBBQT58rBCxPmVLeZaYGRqVROnQlFbzANBgkqhkiG9w0BAQQFAAOBgQCxbCovFST25t+ryN1RipqozxJQcguKfeCwbfgBNobzcRvoW0kSIf7zi4mtQajDM0NfslFF51/dex5Rn64HmFFshSwSvQQMyf5Cfaqv2XQ60OXq6nAFG6WbHoge6RqfIez2MWDLoSB6plsjKtMmL3mcybBhROtX5GGuLx1NtfhNFQ==</dsig:X509Certificate><dsig:X509IssuerSerial><dsig:X509IssuerName>CN=Test CA (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509IssuerName><dsig:X509SerialNumber>1000001</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>CN=Test Client (RSA),OU=Engineering,O=Phaos Technology,L=New York,ST=New York,C=US</dsig:X509SubjectName><dsig:X509SKI>E+fKwQsT5lS3mWmBkalUTp0JRW8=</dsig:X509SKI></dsig:X509Data></dsig:KeyInfo></dsig:Signature></player>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmlenc-3/Readme.txt b/data/com/phaos/phaos-xmlenc-3/Readme.txt
new file mode 100644
index 0000000..5d11ee2
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/Readme.txt
@@ -0,0 +1,52 @@
+This directory contains the following files:
+
+ Readme.txt   -- This file.
+ 
+ payment.xml  -- A sample XML file.
+
+ key.txt      -- Keys for decrypting the encrypted XML files enc-*-*-*-*.xml.
+
+ dh-priv-key.der
+             -- Diffie-Hellman private key encoded in PKCS#8 PrivateKeyInfo formate.
+		This key can be used to decrypt the files enc-*-*-ka-dh.xml.
+ rsa-priv-key.der 
+	     -- RSA private key encoded in PKCS#8 PrivateKeyInfo formate.
+		This key can be used to decrypt the files enc-*-*-kt-*.xml.
+
+ enc-*-*-*-*.xml
+              -- XML document obtained by encrypting and replacing part of the
+                 sample payment.xml. The data encryption key is in turn
+                 encrypted.
+
+                 Each file has the form: enc-A-B-C-D.xml, where:
+                 
+                 A indicates the type of the data encrypted. This includes:
+
+                     element = The CreditCard element.
+                     content = The content of the CreditCard element
+                               (multiple elements).
+                     text =    The content of the Number element (text node).
+
+                 B indicates the data encryption algorithm.
+
+                 C indicates the key encryption protocols:
+                     kt = key transport
+                     kw = key wrap
+                     ka = key agreement
+
+                 D indicates the key encryption algorithm.
+
+bad-*-enc-*-*-*-*.xml
+		-- some "screw-up" samples
+
+The sample encrypted XML files are produced from Phaos XML toolkit.
+
+Jiandong Guo
+Phaos Technology
+http://www.phaos.com
+
+jguo@phaos.com
+
+
+
+
diff --git a/data/com/phaos/phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml b/data/com/phaos/phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml
new file mode 100644
index 0000000..b715657
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-tripledes-key</ds:KeyName>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>HgVuHoXxBQWD9fvi0gt9TanywZ5lJokM/12fcMG6gRoMjsCPulH+4A==</CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        yUMIHkj5EETckjZ59fpda4+m4YLCrkJsnuRz+Q3e5sP+VvHKRH1kdeGkXw3kYURV
+	JM3nQjGl2egW80oUxSykQD2F9iDoIjNhLSgIbyuse64oo/5/v9IiaUpSvrAocwLP
+	AzFIUmOrxmIagAkRGDOeMR8tdHLD6g84dQj4O/aGfwhL/2wUo/l+7onrbmsd6pVI
+	fjNyvXm+eITuyUnkDTHrCR+dfb2sHaQ3g3McgyfP6ZjI/L50SPJZ/w==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/dh-priv-key.der b/data/com/phaos/phaos-xmlenc-3/dh-priv-key.der
new file mode 100644
index 0000000..6aaa277
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/dh-priv-key.der
Binary files differ
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-content-3des-kw-aes192.xml b/data/com/phaos/phaos-xmlenc-3/enc-content-3des-kw-aes192.xml
new file mode 100644
index 0000000..4771f01
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-content-3des-kw-aes192.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192"/>
+          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+            <ds:KeyName>my-aes192-key</ds:KeyName>
+          </ds:KeyInfo>
+          <CipherData>
+            <CipherValue>5+GpVUQNTAT3uY8pPedEg/PpftiX+fJsTCun+fgmIz0=</CipherValue>
+          </CipherData>
+          <ReferenceList>
+            <DataReference URI="#ED"/>
+          </ReferenceList>
+        </EncryptedKey>
+      </ds:KeyInfo>
+      <CipherData>
+        <CipherValue>
+	  QBWlf/iYDXKbBWf0Pu3Bgzt5oLBwIs4NKPb/I0SxDYVnDc34i7tZG5UzHlztsWlX
+	  udfbIW9l7k5WVdy9bfXZWrp6sXamBedUQTrr+z4v4u2jWaUyqEioLe7h36QeoU23
+          QvkOzRO9AiWm/QCCzePZ3Frp4LM9lXOE
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-content-aes128-kw-3des.xml b/data/com/phaos/phaos-xmlenc-3/enc-content-aes128-kw-3des.xml
new file mode 100644
index 0000000..7958d57
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-content-aes128-kw-3des.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes"/>
+          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+            <ds:KeyName>my-3des-key</ds:KeyName>
+          </ds:KeyInfo>
+          <CipherData>
+            <CipherValue>/PZvvn42E9dmMUZ8KCY6B5XtLaaIaG4X5YNDwgV5Vlo=</CipherValue>
+          </CipherData>
+          <ReferenceList>
+            <DataReference URI="#ED"/>
+          </ReferenceList>
+        </EncryptedKey>
+      </ds:KeyInfo>
+      <CipherData>
+        <CipherValue>
+           rINpr0HonGcKnnf/vYx8N3gnd+1rb+zwH1vnfjyt+bOoSU72w/QqniT71/GxtFFx
+           gwE0/arABVa1r8/PMRerWqyParMnpwIRq6dzQHKb5SqiqFEYPRZhytTGZFXN39oG
+           YZkSINOli5paMwTWrq6hDSPRozKvfEqhuI0VgZU4OLM=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml b/data/com/phaos/phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml
new file mode 100644
index 0000000..86a787b
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-content-aes192-kw-aes256.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc"/>
+      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256"/>
+          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+            <ds:KeyName>my-aes256-key</ds:KeyName>
+          </ds:KeyInfo>
+          <CipherData>
+            <CipherValue>IbnoS1cvuIFIGB46jj1V1FGftc92irrCwcC7BoBvxwQ=</CipherValue>
+          </CipherData>
+          <ReferenceList>
+            <DataReference URI="#ED"/>
+          </ReferenceList>
+        </EncryptedKey>
+      </ds:KeyInfo>
+      <CipherData>
+        <CipherValue>
+          /RDTbL2ce9Ca+2GS0FLJbFMXcpEvDLlW5RnpeKLe+pIO1lNpxsi40/tsqCVauD66
+          FOCaXkKPcQYaeHVtD4jnE/OHZYFVJ8zS8z4I7nDg44R1e9ZJ9xN3kAEub1T2MdeK
+          SVxPrhksHOWTwxFbPul9YRaNsrmi9a0XN4ggudJu+Rw=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml b/data/com/phaos/phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml
new file mode 100644
index 0000000..3f77c81
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
+      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <ds:RetrievalMethod Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey" URI="#EK"/>
+        <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
+          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+            <ds:KeyName>my-rsa-key</ds:KeyName>
+            <ds:X509Data>
+              <ds:X509Certificate>
+                  MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              	  CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                  U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                  IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                  MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+                  CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+                  MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+                  BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+                  AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+                  Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+                  xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+                  ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+                  +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+                  W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+                  HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+                  ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+                  OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+                  WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+                  p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+                  O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+                  kKO/vB9Ay64Rt88XbLnnGns=
+              </ds:X509Certificate>
+            </ds:X509Data>
+	  </ds:KeyInfo>
+          <CipherData>
+            <CipherValue>
+              Vc7VOXgJDlw/oQ0hOvIaBKsGiOwyvIArzkhd2W7mZBQyeFlkJlxZQdnPGGg4kJE9
+              EGWeMWQZ0XavJy+xA9Z+PlIFqkpPHUXyos9jZZNniRxEtl6tLce2ReSVah+y8Lb3
+              3xSNSm+O9k2B42yP3Osrj175KNMSMLLM2ZuA0iq28aP7v7DmtDY7VNp0n+O4nJUM
+              Eyy4RO0jmtXctt3jUfpCmGkqy42/LG6F5h1kluyfszjHvi/9lD5LEkCl2Y/3az+j
+              2vLuuXM45z6ef14Dlgsh7eJtqp3bRT0Tpp4JvBWMiuDZaV1zUcZq7q80lNMvXucb
+              mSrSmlXn2lWPttfTrcjXrw==
+            </CipherValue>
+          </CipherData>
+          <ReferenceList>
+            <DataReference URI="#ED"/>
+          </ReferenceList>
+        </EncryptedKey>
+      </ds:KeyInfo>
+      <CipherData>
+        <CipherValue>
+          p5MMs6F765jIUqOj5rH1vAro0Rx4/PLIoEOXCOWaEGbEdCHh0m86zifozutcmoBA
+          xy1SuxmJjtFDO32f/bpuDhdzFDgLrlVIcXrNeHGgken6NryC2n1NdGS9CiYsyaPF
+          B5CWEkx3Prtbak6S20z3XZTJltOdoqzeNOn8/IDavLA=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-3des-ka-dh.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-ka-dh.xml
new file mode 100644
index 0000000..ec75a1a
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-ka-dh.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <AgreementMethod Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+        <KA-Nonce>YWJjZGU=</KA-Nonce>
+        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+          <OriginatorKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+                CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+                CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+                BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+                SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA
+                uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+                X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+                IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+                G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+                UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+                yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+                GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+                TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+                1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw
+                LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ
+                V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp
+                jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD
+                BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI
+   		6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI
+ 		e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8
+		wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7
+		oMfGG8PmU+sbN9sNXtIzOA==
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </OriginatorKeyInfo>
+        <RecipientKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+		CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+		U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+		IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+		MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+		CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+		BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+		SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA
+		uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+		X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+		IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+		G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+		UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+		yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+		GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+		TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+		1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM
+		KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb
+		it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p
+		dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD
+		AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV
+		6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl
+		eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j
+		YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4
+		rDa/YKrmL5K6S9GSF27rx40=
+	    </ds:X509Certificate>
+	  </ds:X509Data>
+        </RecipientKeyInfo>
+      </AgreementMethod>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        BsIAtHyqE+foVEU2B8EoSAErEMjuunlXygmu+BC6SN+mYGFEsQ/frVzgiKBo2yRe
+        bbnuUqAwDx03wS4zqmW5lD1C6bm/9tUSSv8HcNr7vRqrx3tRQ51y6y5xRbhjK6Zi
+        vKHDXwZpxY4CnhfUwbtTSZisjNn/eV6UYxZdz2zmTxAJXAPI1dVFiPdqhljXhlDE
+        tVAt/1f+//u1D782NMCuPVUt09Mtbf0pcFJhtoCmx84NVT3XwK+2Tg==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml
new file mode 100644
index 0000000..2772fbd
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa1_5.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+            bYDE3XSjELiEW/rX08ZQUcG1dK1l1uSw14EKhIHbwrM8DFZKF4fBaPXxG/91mkOA
+            cs3q0LZESrqHGVrm9UvqL48utkNrR56ud60FhIgSBgdKE/9qTMjrSCX1Vw7xfhJH
+	    Fc4tD3vjhALLaO3SUT8esPQKPK4gEWYMNzdpyNQuD0mrLiQ/SnHuHKzBmSjjgKkk
+            xFcFVdiPT/XAhEZcuvkOyLMYgPN55slcnRzckOEq6zOcu8Ww6/2dG0a0TRioFeHW
+            ecqmW8jawxxOVnVVSdDNlqwYWpM+2XxgYuSifsDwkwaNwVAM/xXgj05ZPr49powT
+            1nZJ5cARCmW5zLh6aNpQng==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        LBisCaY4C+s7h8LjVpi8++dCzxxM2P7jR+rw+W0bVZz/YNfG9Q4Id/GkTlcYP/aT
+        WNJfNVhip8KD6QiQqjsRkaF81w8Uam1lVXz8X2Gc6Rsx5L7j+1OblmB6VLPuIwBJ
+	wImjNiEX4RhrS4TfxF/zIq0sLT2DCHdHI752VCnZ8ulVKDnamCZUvT95YqlcCYnc
+	VWAOV5fYH3YvtZ6S/zpTEKW79dnGQZL8od5aJsRrid5fq49X/5KtMw==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml
new file mode 100644
index 0000000..2cce7a1
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+        </EncryptionMethod>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+	  <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+            ZF0JPSfv75/8M+O2O/xi+8N1b9KT94a4l1D1Q65hnX6F00t+wAWZSkcDUoD/y2/E
+	    RKGUyuQwsG6l58e4MwYpmDI4RhHrUYLCQBacAehqVZhwNxv99L7ANsqrZJoT7N0k
+	    ER9MbmuIZGb4qisLDfZtzIGKKUUiA3ARfQny4MUxFovSmVUF2OjqSBXUVV/PjMLi
+            fVTVyqCMv08YwmM4abj33tKOEMtiZqAa09lUIpnCUzq2IAShSRNBzWIHe+ndoB6G
+            2p6ufk0TuRidwdQZkZwTW/2PjK1x7KejaqADWaOIImKhSBMpGzkVfDuv8aAFXOtf
+            +LV67Ov6hJAt7FB65tE9Hg==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        kY6scZxpyRXQbaDZp+LbuvSFYgmI3pQrfsrCVt3/9sZzpeUTPXJEatQ5KPOXYpJC
+        Gid01h/T8PIezic0Ooz/jU+r3kYMKesMYiXin4CXTZYcGhd0TjmOd4kg1vlhE8kt
+        WLC7JDzFLPAqXbOug3ghmWunFiUETbGJaF5V4AHIoZrYP+RS3DTLgJcATuDeWyOd
+        ueqnLefXiCDNqgSTsK4OyNlX0fpUJgKbL+Mhf5vsqxyIqDsS/p6cRA==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml
new file mode 100644
index 0000000..29c9730
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+          <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+        </EncryptionMethod>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+	  <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+              Y97gGuJRx1Vt31KHkKJfJCh/7XSSQxMH8rF+GAlnEMd4fq8+sL92XBMtLiLiNeWC
+	      VNaiBorxZrqIW9xPAcOdvN1v1QIxlhf8LtiFyBMWKQm9i61t64cJC2ZRCdT8nPxy
+              Qt+fvUXGpLn0LA4cHyMukeLPO4EUQY8whunVXkuSgTKjJICxYKF8HNYsHUr1/fyy
+              QL2PW1/UfyEpSBJAZMg+TQFuBSCbAuWbFK2AgSupV5NIppBNU/eRhArReeuAgzSu
+              nY9dX1ofdZs8GzvuV8tfcBHzT/h59MPYMxl4sZrl/0NeMQ0ewZhX3yygebgyzZNP
+              4TB4QzQZHRoXNIPUs0vkfA==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+         3Bg5VZK+B/FETt4rT4baIJ4jFKBraqxPnltaSNC672NTcMxBlWG5omCGsbL31gAe
+         BDNelmi+3OmqhPLYYsbNOSl6O7YKoP6JvbXVcUcwWwsjEt9Fm6PTrTMy+vp+bgFM
+         J8L0WCwyPXnCl/DJS99eaGSG518ynfM/cEmDUINFatT8PX55B4Pd+o1BWkmVxg+E
+         jOgiai7L35HCOTpiBwLUUErvvulujk9iFW5ZvqkgIDLOlDLfx4/V9A==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml
new file mode 100644
index 0000000..3cdc2a1
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+          <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+        </EncryptionMethod>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+            bJVDvrtv578zcv3L/pK2YCCJtvMTDupUJB5+ZNlr6QjWolttow3QRrYHXj/W00SX
+            lGMdqRuJOkn575Xq3PHO1smO5cxWl5j7sTzVSAkzx/Z5xqiMhrFV+lBWOA/vp437
+            mEyGUxDrlE3E2NwvKCn8ovP3OrLIz3TVzy3U16hm0yriWcIZAQEpCQsSLxtPWVXt
+            +MMVvn/9y1CLAZh6dHBVHipp/mpf2X2ki4XuHvCRvaAB0fynB3mVbOUAi/NYR65o
+            u5BOfeS7HgTkWpo/XTa7e/XpkGsShodOm4ixJ+wKSNsMgNXivYmtghQR79x8H0+J
+            lMeTf3dYtV3RUJvi5n1CRA==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        HkxiYRptVjgbv1UjUpyAYp/ty8vBgGgQY/Zr+0tz5Z8W16gp7kvHxAIcyL3E81yO
+        7G54qhvQS4Ie1Et+j9/XEgBL8RdF8TdBnQ5PlPaoW0ckIV/f8gIxxGU0akjciUSG
+        iXHKL059fdr46aDFLYtwniNiJYG16eG/FFhlDdplWIK+FkaTEMMADEG78Dryle+A
+        DTl1V63WGBpS73k21hag/Mwv2xw5HUasmP1RFuLX4JCxcZAwJrPzoA==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kw-3des.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kw-3des.xml
new file mode 100644
index 0000000..dad2ccc
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-3des-kw-3des.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-tripledes-key</ds:KeyName>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>HgVuHoXxBQWD9fvi0gt9TanywZ5lJokM/12fcMG6gRoMjsCPulH+4A==</CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        yUMIHkj5EETckjZ59fpda4+m4YLCrkJsnuRz+Q3e5sP+VvHKRH1kdeGkXw3kYURV
+	JM3nQjGl2egW80oUxSykQD2F9iDoIjNhLSgIbyuse64oo/5/v9IiaUpSvrAocwLP
+	AzFIUmOrxmIagAkRGDOeMR8tdHLD6g84dQj4O/aGfwhL/2wUo/l+7onrbmsd6pVI
+	fjNyvXm+eITuyUnkDTHrCR+dfb2sHaQ3g3McgyfP6ZjI/L50SPJZ/w==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-ka-dh.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-ka-dh.xml
new file mode 100644
index 0000000..4672de7
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-ka-dh.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <AgreementMethod Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+        <KA-Nonce>YWJjZGU=</KA-Nonce>
+        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+        <OriginatorKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+                CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+                CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+                BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+                SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA
+                uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+                X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+                IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+                G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+                UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+                yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+                GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+                TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+                1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw
+                LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ
+                V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp
+                jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD
+                BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI
+   		6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI
+ 		e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8
+		wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7
+		oMfGG8PmU+sbN9sNXtIzOA==
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </OriginatorKeyInfo>
+        <RecipientKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+		CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+		U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+		IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+		MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+		CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+		BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+		SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA
+		uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+		X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+		IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+		G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+		UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+		yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+		GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+		TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+		1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM
+		KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb
+		it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p
+		dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD
+		AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV
+		6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl
+		eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j
+		YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4
+		rDa/YKrmL5K6S9GSF27rx40=
+	    </ds:X509Certificate>
+	  </ds:X509Data>
+        </RecipientKeyInfo>
+      </AgreementMethod>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        2+4oM3TFfOQ5JMIvRbTk3SbeWqbSVAhMb9zT+3BatcUJuhxzzXtLKEzkfPT09iTP
+        NmwEoUysB5uETmQ49Fd/0l21QjUmctAaCBIbWSrP4f3K2SUGxjKNZE4Pes+8DwiT
+        H1cak+3qT0zbqFa6rXcdLxS/ucxJOPMJV9ZCE4SkvFt2ZME8uRevFEYIqp/HInFZ
+        OjY9Lf8+hHOXVOVqrMObx7/CFzm0AS2aL4WmyfGM3zyUN1BF3nS4zzVOHNfIFopX
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml
new file mode 100644
index 0000000..ff5816e
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+            cCxxYh3xGBTqlXbhmKxWzNMlHeE28E7vPrMyM5V4T+t1Iy2csj1BoQ7cqBjEhqEy
+	    Eot4WNRYsY7P44mWBKurj2mdWQWgoxHvtITP9AR3JTMxUo3TF5ltW76DLDsEvWlE
+            uZKam0PYj6lYPKd4npUULeZyR/rDRrth/wFIBD8vbQlUsBHapNT9MbQfSKZemOuT
+            UJL9PNgsosySpKrX564oQw398XsxfTFxi4hqbdqzA/CLL418X01hUjIHdyv6XnA2
+            98Bmfv9WMPpX05udR4raDv5X8NWxjH00hAhasM3qumxoyCT6mAGfqvE23I+OXtrN
+            lUvE9mMjANw4zweCHsOcfw==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        u2vogkwlvFqeknJ0lYTBZkWS/eX8LR1fDPFMfyK1/UY0EyZfHvbONfDHcC/HLv/f
+        aAOOO2Y0GqsknP0LYT1OznkiJrzx134cmJCgbyrYXd3Mp21Pq3rs66JJ34Qt3/+I
+        EyJBUSMT8TdT3fBD44BtOqH2op/hy2g3hQPFZul4GiHBEnNJL/4nU1yad3bMvtAB
+        mzhx80lJvPGLcruj5V77WMvkvZfoeEqMq4qPWK02ZURsJsq0iZcJDi39NB7OCiON
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml
new file mode 100644
index 0000000..e8ec21f
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+          <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+        </EncryptionMethod>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+            W6N0IhRF2AdgfzzkZSp/u1kH5KmH8L4W8k4mdNMboLsYgnBUV3lsRvoFrVTXluMV
+            DtXY1ju7aAEUJP9eMRU676kvRR5nSVuAbWCAejgkHMtGShJHU1s/JMzbu3iaxsuy
+	    PosT7/iafinNIXumvqLM/WQl9KbsmcWoAmJISbK1+WJ2kahrXNav4+7vMJq90BOP
+            l8bXIzeKIsps7OGwEvrFaJ5RzVjZXi9SDXXD1vd6tJBcCfcZ347Mat1tZkR3cYrC
+            MhDdte3gYGUQLzUlMYucvWz1slzTX3rYea/vhgA+OLOpdZxwM4igx1d8j5jjmo8F
+            R1rxwd0G4NHA1bZ6TOy/IA==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        YjIkLPqklVVN1faEsX1t5EXXxdlW3B0rKoZsT5DtaS+pChdcceQV605clJ8YEhOj
+	EhM0oCGf855bQVWp7J3TJqUFlxahREEWCfEvsIUzy/wNMHV6Z/mTFkQUWnrO3C3D
+	SC6rTglijkPp592Sh1Cb6HTD60Nc/Myn3QLnwlSj+30x3uTUiAVEL+xduAnppCR1
+	vhRsB3yw32TjRfZt1b+UURRzCts5oLrVAu9SSrmgJI+vUX9gsRgvwkmsi4AAq38a
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml
new file mode 100644
index 0000000..aa6f0ff
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kw-aes128.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128"/>
+          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+            <ds:KeyName>my-aes128-key</ds:KeyName>
+          </ds:KeyInfo>
+          <CipherData>
+            <CipherValue>GPl6bneL1jKl0/lGnf9gejlYHRI6XxFz</CipherValue>
+          </CipherData>
+          <ReferenceList>
+             <DataReference URI="#ED"/>
+          </ReferenceList>
+        </EncryptedKey>
+      </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        AbJmB4dsNP5svH3n260KeHFFqRoXaBoDYIqtrhXHE0t1TvJaGtvwjJt2pgM8Yffc
+	xKyOLWJljv+FraXUZFnW+VJloMTAXQ8DyeR8ds1sj6X7hT62RFIKm0DvggdBAh9d
+	tpeF6fwtOeUUCmidna7im7SLh9a9/CKTBb9RqDzKXQ+Sai6knJPZHtX/yF6ZedgX
+	GOUFLX3EdzwVgJ3jnKcB/LZjapsPrRs+6lMdck26aRizWJBHYpY86gWWnu+Ob+/k
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml
new file mode 100644
index 0000000..2b376a1
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes128-kw-aes256.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-aes256-key</ds:KeyName>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>ic+Om6/3ZKcThVN3iv9lUEankNkDv3Et</CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        T+1ay9FMWTWWnoPYUhVHMA2SNV2w9OirluWOrMSZvRUC8mQHmYfKcuD9WshrgtVd
+	dnsiPobRS+Q0DJgfX8CtfjJ3wtQ2DXX9GFgV8662G0hZEjQ4SGgWhxtQEusjVFSl
+	Uw4/pxmECD5O6K7N9PwnlYwMm9teksvfWcG5xir+w4k24cc9njLj5Yd0uX2o5Nj1
+	sjjNFzbw5cQ4Fx3KSG2HGwnnC/+5/xyoX1eJgdOxdKQvR8uSMmyIcTPGVtRAzH3l
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-ka-dh.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-ka-dh.xml
new file mode 100644
index 0000000..d722ccd
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-ka-dh.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <AgreementMethod Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+      <KA-Nonce>YWJjZGU=</KA-Nonce>
+      <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+        <OriginatorKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+                CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+                CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+                BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+                SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA
+                uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+                X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+                IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+                G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+                UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+                yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+                GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+                TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+                1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw
+                LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ
+                V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp
+                jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD
+                BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI
+   		6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI
+ 		e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8
+		wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7
+		oMfGG8PmU+sbN9sNXtIzOA==
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </OriginatorKeyInfo>
+        <RecipientKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+		CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+		U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+		IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+		MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+		CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+		BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+		SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA
+		uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+		X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+		IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+		G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+		UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+		yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+		GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+		TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+		1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM
+		KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb
+		it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p
+		dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD
+		AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV
+		6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl
+		eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j
+		YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4
+		rDa/YKrmL5K6S9GSF27rx40=
+	    </ds:X509Certificate>
+	  </ds:X509Data>
+        </RecipientKeyInfo>
+      </AgreementMethod>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        jg5SecwV6R7dluAMEUsPwWmrTc236XCF8xEVEV7cyEJDfTmdk6BNX4w5BKfFDfOP
+        ph4t428f9HI3WIg48BVY8DDaYOReo0a3BKcIoiDjo80V5eZdAQdlWLOecKmD339+
+        gqxeBIdJkmQyIpKqDM2NAlqcKM0p+utAn5M8fUosBBO7boJ8i/lnOvDrkqiELHQy
+        ZZZKgWsYoIZNKPq1Fd6AUVBAIod3ruMfZYVfXL5G2S1jYa8JNcwp2MU32SIuSIxL
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml
new file mode 100644
index 0000000..ecad1eb
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+          <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+        </EncryptionMethod>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-rsa-key</ds:KeyName>
+          <ds:X509Data>
+            <ds:X509Certificate>
+              MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+              U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+              IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+              MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+              CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+              MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+              BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+              AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+              Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+              xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+              ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+              +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+              W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+              HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+              ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+              OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+              WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+              p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+              O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+              kKO/vB9Ay64Rt88XbLnnGns=
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>
+            ELSmG8oo52p2ANjbCRJDV0K6M/3W+1b+3A1c07oNWdxeUerdUBarYe5BQingndIv
+            y4qfD9hGif8AmY0IXuLWptmZYx8TlHLSYw7TUfLxYMVLzUVtDgrPAqXStNcpJK/l
+            0INMurXU+xnvDXpQEcCthh6C8AWxvXDVKW+8Ud8vLYkGGNVgtEPtdAybx2WptfzJ
+            TSYvkRr0VEjDJSg9ZPSJLCeOwQZ9+YvP9F9E556EHK5A476fAgeNL3uefsZ4Yo4Q
+            1UANOvSBtY2ro8xOj6PyBI/5RiW9AVUQd+5UiPq1/jWSoKTFaWib4xr5WhI4dQlc
+            nkYU3EYhmST4pokqevZplw==
+          </CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        WeFDc5EMzI4i77yhGpY2Ae+5VvbPSdnrmXvlRrntz5v6snRmVxtSAXJQgJiouER8
+	BNVTiMdB/YcpzOeWLAEfEZG1PswYFsmkYd9QCvGpv1oXisv9Cv8uR9BBmz/ylOmX
+	pBCfU38i0fR90JOkGMjwtlkNTwPwOsG5EFRch8jx/wk6qaj6qojJOA21IlFsTKFA
+	ugZ3uZeDFPNBJMSVnLudyMFrQYWT14ji/aFETqhQxwlHkgrx1WDN26tBN/9Q6aTZ
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml
new file mode 100644
index 0000000..d3cc630
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes192-kw-aes192.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-aes192-key</ds:KeyName>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>iuZvvGBWScikHld9TtNIOz0Sm7Srg5AcxOBMA8qIvQY=</CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+     <CipherData>
+      <CipherValue>
+        /zILD8Eq5vvZK7A+XJaHzoXVqPkk91sOunyhqj+yFA6ZJquaFSUz3A/aQ8AkTrVS
+	/rGiNCXDOfmpIab6DRH5deOG0RNxDQvtSiAmM+Beb+Aas5WJ9UNKk1ff8sBdgznl
+	9u8ApmELFPj5u2ucOdCOGS+Re708aSI6SGmqUEJusoXLWJSSD0gE1xW1hmukrTaR
+	p8kkchaNNTM+x4gLbq3sSsfncnCo9E/MpeQqQfBPL7r92UwvUMY/DEVz0BbKLomG
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes256-ka-dh.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes256-ka-dh.xml
new file mode 100644
index 0000000..221665f
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes256-ka-dh.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <AgreementMethod Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+        <KA-Nonce>YWJjZGU=</KA-Nonce>
+        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+          <OriginatorKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjDCCA/WgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+                CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                MzAyMjUwNDBaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+                CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+                BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+                SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJDMIIBuAYHKoZIzj4CATCCAasCgYEA
+                uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+                X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+                IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+                G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+                UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+                yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+                GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+                TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+                1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GEAAKBgFWw
+                LyYO4IPxJsbaQQsJ4K1xTjPSjTMmvG4fpKA+S1BGz8FI1SPACb2/YYCrmjoWNvkQ
+                V6NTQ+eji6TGA7ET85c4AcRZtxOi3gSP5Kq2A3E9dUouikhrKSHFb+Nx420CXmtp
+                jxBu+qUTb7AMrRCus8maHwU9PdKQbZxoDFOLArJHo00wSzAPBgNVHQ8BAf8EBQMD
+                BwgAMBkGA1UdEQQSMBCBDnRlY2hAcGhhb3Mub3JnMB0GA1UdDgQWBBTfky/d+/wI
+   		6zicN4uDl0PSAyRNnTANBgkqhkiG9w0BAQQFAAOBgQA+2cWsAZ9a44ttBX1Z3eMI
+ 		e0GgduXErBt9xsv2Sy6fS/6CyyJm3tpthuT2WMZmu6E+ceBLkFU+TnxnEf/NrSj8
+		wtQt/wVHacaSZMcwUDv/uTUxrtIZUJ7A7VxcAvbnLE5fQqKhF6QT5irtbE2Ryvd7
+		oMfGG8PmU+sbN9sNXtIzOA==
+            </ds:X509Certificate>
+          </ds:X509Data>
+        </OriginatorKeyInfo>
+        <RecipientKeyInfo>
+          <ds:X509Data>
+            <ds:X509Certificate>
+                MIIEjTCCA/agAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+		CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+		U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+		IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+		MzAyMjUyNTNaFw0xMDAxMDEwNTAwMDBaMIGMMQswCQYDVQQGEwJVUzELMAkGA1UE
+		CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEOMAwGA1UEChMFUGhhb3MxFDASBgNV
+		BAsTC0hlYWQgT2ZmaWNlMRcwFQYDVQQDEw5ESCBUZXN0IENsaWVudDEdMBsGCSqG
+		SIb3DQEJARYOdGVjaEBwaGFvcy5vcmcwggJEMIIBuAYHKoZIzj4CATCCAasCgYEA
+		uavat7i6NOpnRObdx7Gz38h8xkgmv20XUaj1JjfvMAQfQFMHeshGhY2Q0mwvJ1Of
+		X/kZ4cMbSYUywh3WAY6zQs8W2uxg8GeduCLebNQGTaHVFVmrJMQawlV1bIMQ+kDi
+		IQNR/FPqSNHKD2Q9/uoGD5d2l4KP3qH8dv5HOT8fCwUCgYBxunqmUuKZFTNKJhH9
+		G6UINlI/Xr9jPesj5/I8fpWgxZxsgkzksqisDCslZ09uZTATrGFTF3fk6kNhx25s
+		UCtYHHK1HzQmsLMu2BWNBQrkLC+Mkd3d39UdNduPW4kCMpcdoHAh+zTqAH2QkKJm
+		yxc/x0LevkSUk8rX8DFa3y152QIVAL+Eo4gPL339dk7inq87PnR1PWuHAm0A+C9E
+		GPDSphFaPWO5LQTNflJ0l9IGjcNFGrJX0imWrjM2q6bGYz0ZK4cJhcX12YZOjR52
+		TZh3cy6yAJG470i65nlz5/3ESWFHsMO0COrDi/Ca5RfMrYGcc8hrydzFlT1zqMFa
+		1yuqQKVsGwXcMBwDFgCZ/hqLAtBi6dyv6Ky+OfXfXgJBPhQCAgNPA4GFAAKBgQCM
+		KtnMyjT9G1LKTZoN7rHwIO08D5j1YYIscsQDc+q4ny5WEFo+wEmOqxGcE9JrRdeb
+		it6cT8F7TWWzeDJUyaXFEi4E1panCBCL1crqS/HbY8VH/zzhT+5L232LchsoYa1p
+		dqxxLHW8RrOax4RLVrcIOPcW4x3Ggk0ANYQhR6kNmqNNMEswDwYDVR0PAQH/BAUD
+		AwcIADAZBgNVHREEEjAQgQ50ZWNoQHBoYW9zLm9yZzAdBgNVHQ4EFgQUHddBJmfV
+		6MD3FTbVmHcLFN6QFAcwDQYJKoZIhvcNAQEEBQADgYEAKZl9P/ZmIrwHp3BTfBHl
+		eFBk9CbhK14FObMGWSkfjqipb5snXBPE3uPBrvP1StisPRsK/y1OZfcjjkA6ht0j
+		YWp9lohNDTlc/NOKGOQSCpntqr+wQhc6l16jezqR7sKv2eHBFGs0V7HCrEe2mTP4
+		rDa/YKrmL5K6S9GSF27rx40=
+	    </ds:X509Certificate>
+	  </ds:X509Data>
+        </RecipientKeyInfo>
+      </AgreementMethod>
+     </ds:KeyInfo>
+     <CipherData>
+       <CipherValue>
+	 aXXD/Yz+ENFF/uop7z9RwfeVfdFteZwcxMILahK/NKF58LMsUKcr0C9jk5IkMZqJ
+         m+bszCs5O61zLI/iJcKFUU2VrokeTuYUP2BZMoxL7q0zqUs7bIwm61IEmU0ghtAT
+         5jSGCbZLPfz3SRe3de023098UbTg+xC/zLslLxBvEtuZh/rNIoNlCA1WwUNV7oRG
+         tFoqxzDDh/hyBJzSMAw/S/efNORn4Bbfqu4WjO5bN8wxCi1ATFtAmhSVh3c6t1/U
+       </CipherValue>
+     </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml b/data/com/phaos/phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml
new file mode 100644
index 0000000..9730db8
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-element-aes256-kw-aes256.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
+    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256"/>
+        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+          <ds:KeyName>my-aes256-key</ds:KeyName>
+        </ds:KeyInfo>
+        <CipherData>
+          <CipherValue>IMwdsyg89IZ4Txf1SYYZNKUOKuYdDoIi/zEKXCjj4j9PM6BdkZligA==</CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="#ED"/>
+        </ReferenceList>
+      </EncryptedKey>
+    </ds:KeyInfo>
+    <CipherData>
+      <CipherValue>
+        sKcjsnw0spmr+iFPf2FWILKQz32+8DvSGm6WTtmMd9syqY/+BIubjH3PS7ROuGY6
+	xaotStXfOXm5fE4R3Haqw/04gfV4jJU3vIZZHYj9blDIn602YtqI+xti2zZOhGZ4
+	9gssg7m8ZOJ28yfbQfNw97RdwQiSnIU/Bh87xQJRDK0/M3fOHylMUTH7xMMbQu5m
+	rhYj49kNpnVK7XyP7jCek0lT2ei7KYdKaxD/Jm/xWPxaxyS2C8q9bku5HMsEKJOn
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-text-3des-kw-aes256.xml b/data/com/phaos/phaos-xmlenc-3/enc-text-3des-kw-aes256.xml
new file mode 100644
index 0000000..b972f1d
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-text-3des-kw-aes256.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <Number><EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+              <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+              <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+                  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256"/>
+                  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:KeyName>my-aes256-key</ds:KeyName>
+                  </ds:KeyInfo>
+                  <CipherData>
+                    <CipherValue>
+                      jOvQe4SxDqEMvAHcmb3Z+/Uedj23pvL6BRQsl2sjJlQ=
+                    </CipherValue>
+                  </CipherData>
+                  <ReferenceList>
+                    <DataReference URI="#ED"/>
+                  </ReferenceList>
+                </EncryptedKey>
+              </ds:KeyInfo>
+              <CipherData>
+                 <CipherValue>
+                    tY3V4h8kopDTZXb80BoqEWH7/nWryHZhU504S1ZRPLw=
+                 </CipherValue>
+              </CipherData>
+            </EncryptedData></Number>
+    <Issuer>Bank of the Internet</Issuer>
+    <Expiration Time="04/02"/>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml b/data/com/phaos/phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml
new file mode 100644
index 0000000..a380abb
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-text-aes128-kw-aes192.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <Number><EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+              <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
+              <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+                  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192"/>
+                  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:KeyName>my-aes192-key</ds:KeyName>
+                  </ds:KeyInfo>
+                  <CipherData>
+                    <CipherValue>PeDwjnCsg6xWzs3SmzUtc2nyUz28nGu7</CipherValue>
+                  </CipherData>
+                  <ReferenceList>
+                    <DataReference URI="#ED"/>
+                  </ReferenceList>
+                </EncryptedKey>
+              </ds:KeyInfo>
+              <CipherData>
+                <CipherValue>6hfMgI39JG5aIId4ZxZkXLGSGVcC7Wu4yOSdkC4H3NJ50pMdcZI2c38YoFHpFZFS</CipherValue>
+              </CipherData>
+            </EncryptedData></Number>
+    <Issuer>Bank of the Internet</Issuer>
+    <Expiration Time="04/02"/>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml b/data/com/phaos/phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml
new file mode 100644
index 0000000..46f5844
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <Number><EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+              <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc"/>
+              <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+                  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
+                    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                     <ds:KeyName>my-rsa-key</ds:KeyName>
+          	     <ds:X509Data>
+            	       <ds:X509Certificate>
+                         MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              	         CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                         U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                         IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                         MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+                         CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+                         MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+                         BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+                         AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+                         Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+                         xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+                         ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+                         +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+                         W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+                         HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+                         ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+                         OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+                         WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+                         p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+                         O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+                         kKO/vB9Ay64Rt88XbLnnGns=
+                       </ds:X509Certificate>
+                     </ds:X509Data>
+                   </ds:KeyInfo>
+                   <CipherData>
+                     <CipherValue>
+                        fiDteajx7IJTorLOQoMiXyblOh3zNix23qAy0hcKKP1/7OeLDT1hEnrXkKVvG83h
+                        No3WF89VPuZGuGeEIJl4xcMklHItcI370NmGjCgKI5GQS/6yxMr4mEbiUL2X8Ycy
+                        wVa2GUV9qFlkv6C8OnFpCUqBgJOjbUAu9pQ3OWa35Nv8tKqyaphPUaQtPc8ZMehS
+                        cLHtkYKeByWqz5Djp11rklDp4v1QSeDWEn9zCKkaFiD0DZRtqpnTzwjj1tZsDNp8
+                        mbps2mAlqnU0L+EsR+8KTRh5vzmxueM+lsLkGH2Rusy2qi/GqmF/NiwyTBdokWoM
+                        Vd9qzUAODGnwGzf7ymyVKg==
+                     </CipherValue>
+                   </CipherData>
+                   <ReferenceList>
+                     <DataReference URI="#ED"/>
+                   </ReferenceList>
+                 </EncryptedKey>
+               </ds:KeyInfo>
+               <CipherData>
+                 <CipherValue>
+                    hg1h2JBeLhLq1QxPKsOQUE/ThbnjAdFCfQYKeqO1ipbi6lTZr5XPP3XsIybze0nX
+                 </CipherValue>
+               </CipherData>
+             </EncryptedData></Number>
+    <Issuer>Bank of the Internet</Issuer>
+    <Expiration Time="04/02"/>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml b/data/com/phaos/phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml
new file mode 100644
index 0000000..a44829f
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <Number><EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+	      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
+		<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+		  <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+ 		    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+  		      <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+                    </EncryptionMethod>
+	        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                  <ds:KeyName>my-rsa-key</ds:KeyName>
+          	     <ds:X509Data>
+            	       <ds:X509Certificate>
+                         MIIDzTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCVVMx
+              	         CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlNYW5oYXR0YW4xFTATBgNVBAoTDExhdmEg
+                         U3VwcmVtZTEUMBIGA1UECxMLSGVhZCBPZmZpY2UxFDASBgNVBAMTC1JTQSBUZXN0
+                         IENBMSMwIQYJKoZIhvcNAQkBFhR0ZWNoQGxhdmFzdXByZW1lLm9yZzAeFw0wMjAx
+                         MzExNjI5NDNaFw00MzAyMjUxNjI5NDNaMIGWMQswCQYDVQQGEwJVUzELMAkGA1UE
+                         CBMCTlkxEjAQBgNVBAcTCU1hbmhhdHRhbjEVMBMGA1UEChMMTGF2YSBTdXByZW1l
+                         MRQwEgYDVQQLEwtIZWFkIE9mZmljZTEUMBIGA1UEAxMLUlNBIFRlc3QgQ0ExIzAh
+                         BgkqhkiG9w0BCQEWFHRlY2hAbGF2YXN1cHJlbWUub3JnMIIBIjANBgkqhkiG9w0B
+                         AQEFAAOCAQ8AMIIBCgKCAQEAgj3TOyUtgg99oEfsm8h9JTZBxUkzYkXVUOHxIwnk
+                         Fwp4y9ZnrGja/j+kpRyKvYP5CkNdq0e58/r7GLXj45iqd03XjsFNTdjy4OIOgf7J
+                         xMG7z+hEB1LT2swTs10GILFWPByRl3/BEsnekLZdoqNoJrvnttVkxgu3x80Ji3/A
+                         ZD8Ub/kBGOSPyu6pn3OdnMTc5q4r1qUe985lQzCZvCMw6AoGeCyJodNu2MbveNeH
+                         +YPjRgLCQfzvOFRq+9qMtE8XfUJZdNhPZhgdsOGf8uJauTcIHbAyw7BhxPy6RikW
+                         W5yiWUmBya+7t4y1TQJzham/0y0zU3TAA7b/rDrU7xmNPwIDAQABoyQwIjAPBgNV
+                         HRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwDQYJKoZIhvcNAQEEBQADggEB
+                         ADELWZjFLPjSjGeOaeUwH/mEOP+l/nTtxe07IWAQL4kvb4wsiUsM1EkPptcBQsym
+                         OYgFhf3Elqma84bbOyp85y/iQnjpqWWJ73TFXSWZamSIhYb4Gk+dQuwFI+zD3B2y
+                         WwqghaAHDzxtzROLUBjo+97Y6ng6V5zjmtdGOFwNXwWhf3Y+MjnErtBIKYao8NJO
+                         p6di80w82+s6Ot+CLVvVobLhxS/y8yWplATRiQnI5ij/WTLML+tiU5aes0c9abaf
+                         O7i9j1iTuZsDT3f96ia0RSLsXSGij737QKc3ZM8lSxBWfepWYO+G+IRgr1q9IUDa
+                         kKO/vB9Ay64Rt88XbLnnGns=
+                       </ds:X509Certificate>
+                     </ds:X509Data>
+                   </ds:KeyInfo>
+                   <CipherData>
+                     <CipherValue>
+                       FCMw2HiQoGdINvvQYoMdRH0fE5oM9i3E9D4IRx9nwvnZLbA/Oi5snoKYEjYQ8ALK
+                       QxYkGKhHtvwsUpVyxA9wGxbNP19Qt1yJIthG6mHUrGTcN9iYvY85FacG3NQWmdMh
+                       HjqmylWZAqY4b+qDHczciqzT9i/M3AVct8RrgfVL/MgYyo1WLM0n+svRtc+GFYu6
+                       QupE5bV1UFb/x3FaQtlzm6fIin+BSThCPKfnanj5Z1rAZsi7Wo9TiK610DKh9zXx
+                       ONfiLcv9fpoHxpsEzCvAp+RUzLTuqxsLR1rdOveQLy/lTx9eClK8YepzlQIaXiOY
+                       y0UqwPAQnEjuVzOmT3CsrQ==
+                     </CipherValue>
+                   </CipherData>
+                   <ReferenceList>
+                     <DataReference URI="#ED"/>
+                   </ReferenceList>
+                 </EncryptedKey>
+               </ds:KeyInfo>
+               <CipherData>
+                 <CipherValue>
+                   DpNYC0Np5hHaQAUyHWpM3MQ99wkDFtGRc7TywqxmhI4sJKDXM5SRjVlKf6st5wOz
+                 </CipherValue>
+               </CipherData>
+             </EncryptedData></Number>
+    <Issuer>Bank of the Internet</Issuer>
+    <Expiration Time="04/02"/>
+  </CreditCard>
+</PaymentInfo>
diff --git a/data/com/phaos/phaos-xmlenc-3/key.txt b/data/com/phaos/phaos-xmlenc-3/key.txt
new file mode 100644
index 0000000..d08983a
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/key.txt
@@ -0,0 +1,117 @@
+This file contains keys to decrypt the sample xml documents: enc-*-*-*-*.xml.
+
+All the keys are expressed in hex string. 
+
+The symmetric keys (Triple DES Key, AES-128 Key, AES-192 Key, AES-256 Key) are 
+key wrap keys. They can be used to decrypt the EncryptedKey element in the files: enc-*-*-kw-*.xml.
+
+The RSA Private Key is for decrypting the EncryptedKey element in the files: enc-*-*-kt-*.xml.
+
+The Diffie-Hellman Private Key is the Recipient's private key which can be used to derive
+the data decryption key for the EncryptedData element in the files: enc-*-*-ka-dh.xml.
+
+#Triple DES Key (identified by the key name = my-3des-key):
+#----------------------------------------------------------
+c8 8f 89 d5 fd e9 b9 80 04 46 32 1c 4f ab df 83 a4 62 b6 62 97 f2 70 f4
+
+#AES-128 Key (identified by the key name = my-aes128-key):
+#---------------------------------------------------------
+d3 5f b2 b9 0d a1 b8 f4 b5 f9 0b f4 2c 7f b3 69
+
+#AES-192 Key (identified by the key name = my-aes192-key):
+#---------------------------------------------------------
+22 57 ee 4b 8d 0b bd 2b 55 53 43 23 f1 e3 eb ac 61 d5 84 06 f8 f3 2f be
+
+#AES-256 Key (identified by the key name = my-aes256-key):
+#---------------------------------------------------------
+66 16 78 bf 74 65 c1 39 42 10 ea 48 ac 77 cb 29 5c 89 38 10 ed 10 93 8e 40 36 
+ad ff 8c 51 d5 b0
+
+#RSA Private Key:
+#----------------
+
+#Modulus:
+82 3d d3 3b 25 2d 82 0f 7d a0 47 ec 9b c8 7d 25 36 41 c5 49 33 62 45 d5 50 e1 
+f1 23 09 e4 17 0a 78 cb d6 67 ac 68 da fe 3f a4 a5 1c 8a bd 83 f9 0a 43 5d ab 
+47 b9 f3 fa fb 18 b5 e3 e3 98 aa 77 4d d7 8e c1 4d 4d d8 f2 e0 e2 0e 81 fe c9
+c4 c1 bb cf e8 44 07 52 d3 da cc 13 b3 5d 06 20 b1 56 3c 1c 91 97 7f c1 12 c9
+de 90 b6 5d a2 a3 68 26 bb e7 b6 d5 64 c6 0b b7 c7 cd 09 8b 7f c0 64 3f 14 6f
+f9 01 18 e4 8f ca ee a9 9f 73 9d 9c c4 dc e6 ae 2b d6 a5 1e f7 ce 65 43 30 99
+bc 23 30 e8 0a 06 78 2c 89 a1 d3 6e d8 c6 ef 78 d7 87 f9 83 e3 46 02 c2 41 fc
+ef 38 54 6a fb da 8c b4 4f 17 7d 42 59 74 d8 4f 66 18 1d b0 e1 9f f2 e2 5a b9
+37 08 1d b0 32 c3 b0 61 c4 fc ba 46 29 16 5b 9c a2 59 49 81 c9 af bb b7 8c b5
+4d 02 73 85 a9 bf d3 2d 33 53 74 c0 03 b6 ff ac 3a d4 ef 19 8d 3f
+
+#Public Expotent
+01 00 01
+
+#Exponent
+52 be 3c 88 82 e2 1a 93 04 d8 e3 58 ea cf c0 d1 f7 5a 69 a0 4b c8 cf 5c ea 79 e0
+dc c5 d7 e6 db 7c 4a e3 f8 11 8c bc 34 72 f2 83 03 53 11 7b da a8 2e 8c 3f d8 dd
+c6 a7 59 07 25 e7 96 1c d3 8f e0 20 66 4d 60 73 68 b5 45 31 d8 cd b5 b5 32 0f 72
+e6 6f 45 68 f1 b2 2e 7b 20 b8 ff 0c 79 90 b0 9c 97 f9 d7 2a 0e db 84 ec a5 3b 76 
+d9 70 bf 26 7c 92 85 91 a4 e8 3d 61 90 ca 2e 9a 35 9b 61 13 d1 18 f2 34 49 bd 7e
+fb 7a 9b 76 70 49 ac 00 f5 8b b4 c5 25 6f 54 8b a4 34 89 7b 7a 29 90 cc 16 1e 19
+0c 06 c2 13 20 32 8c 9b 41 68 f0 20 ea 67 6e f7 11 7d 3f e2 02 1f 67 fc 0c 97 72 
+3b 4e 30 6c 16 86 27 e3 7a 5f 94 d5 73 0c 86 b7 0b de 60 39 c5 bf a0 19 0a 59 ed
+34 e8 4d f9 8e 10 97 95 0a 1f 41 44 aa 60 9e 21 f8 25 50 a5 86 24 ce 78 de 15 4c
+b6 58 83 f0 46 98 64 e3 ac 46 4a 5f 81
+
+#Prime 1
+8a 00 d7 b6 c1 27 b3 df 90 56 c4 0a 62 89 48 fc 61 34 11 d9 1d d4 e9 32 1b 0d 75 
+37 76 08 30 d3 73 3a 8b 5c 0c aa 14 d3 f2 6d d6 12 3b 35 a5 91 82 2f 7f 2f 2a 61
+98 43 3f 74 16 8d 9e b3 56 e8 63 c8 11 34 a3 51 0f 45 b8 ad 8b cb 09 0d 52 23 36
+0f e5 05 b0 b9 6a 10 9e 12 e7 4f fb 91 d5 ce 0b 7b 7d ae 6f 6d 88 83 f2 ab 02 4a
+37 14 66 c8 00 0a 7e 24 5b 62 21 2d aa a4 79 cd d1 97 70 11
+
+#Prime 2
+f1 9a 06 c5 37 17 23 ba 6a 9a 45 9c 23 ce ec 88 78 6d 87 58 c5 08 6b f7 10 cc 00 
+78 8c b8 b6 4e 07 06 4c 63 66 80 72 fe 15 36 9b 1b e2 60 f8 6e 14 43 e3 25 32 84 
+6e 24 11 79 b5 4b c1 a4 c9 c6 ce 78 dd d7 86 43 5b 21 75 51 d3 d7 4d 39 c3 21 b2
+86 e2 15 5d 80 b9 e9 78 6e fb c0 76 cb 7d ba e7 4f d7 c1 14 d2 51 7c 4f fd e4 3e 
+41 bd 8c 78 33 d9 d1 78 29 1e 15 3b e1 96 b8 17 cd 76 78 4f
+
+#Prime exponent 1
+01 37 0a af 28 3a 32 42 38 a2 1a ed c0 7a 56 f3 29 e3 ec 78 4d e3 ee fd aa f1 4e 
+63 e3 9d 24 d8 e7 bd cf 36 4b 42 40 16 b1 9e b7 f0 c7 26 ac c3 80 32 ec da bc 73
+c9 84 66 0d 9e 99 36 99 7b 9d 66 2b 7f c3 47 e0 d1 d2 9a 52 a4 d5 6f c9 f7 3c 2a
+20 af b2 82 20 cf c7 3f ad 08 ee 52 57 b1 5b 34 0c ad 49 98 df 8d 01 24 64 cf 0b
+5a 3a ca c0 de 07 39 9f 16 52 e1 d9 e6 13 b6 a2 d2 42 94 11
+
+#Prime exponent 2
+47 c0 ff 11 c3 72 d3 e1 a1 97 7f e5 07 9d 85 12 62 f1 e4 a8 b0 9b f7 b4 c1 00 55 
+83 78 07 c3 dd 18 a8 fe 36 e7 52 6e d4 97 68 48 58 d7 bb 05 0d 6c 67 5d 26 c7 02
+1d 40 7c 52 82 77 55 d2 78 67 21 f0 08 8e 99 d0 fe 27 5f 77 f5 f0 77 32 bf ec 4c
+c9 e8 37 5f e8 4f 82 33 6c 58 a3 de 72 e5 00 bc de f4 be 81 95 1e 7e 07 ca f6 6c
+ff ca 3e a6 99 24 c3 ac f9 ea 71
+
+#CrtCoffieient:
+75 5e b2 85 d4 5c 52 b4 81 83 a7 bc 43 67 f5 a2 be cb 79 8c e2 eb 15 a3 7f 54 51 
+8e a3 ce 81 fe 95 07 fc 62 32 61 7a 46 76 4a b9 15 33 2b d8 9e 46 70 21 b4 31 49
+4d 2d 67 3d b7 d5 2c f4 ac 01 2c f1 01 a1 90 19 d6 77 02 c1 c3 e2 3a 74 de 30 b2 
+2a d0 5a 3c a7 43 cd e5 6b ae b2 18 3d cc 99 e0 e0 5e a0 55 94 bf 39 43 12 d1 1c
+a8 97 37 38 dc 29 35 66 a5 ee 78 4a 11 b6 ff 02 3a 85 9a 98
+
+
+#Diffie-Hellman Private Key:
+#---------------------------
+
+#Prime P
+b9 ab da b7 b8 ba 34 ea 67 44 e6 dd c7 b1 b3 df c8 7c c6 48 26 bf 6d 17 51 a8 f5 
+26 37 ef 30 04 1f 40 53 07 7a c8 46 85 8d 90 d2 6c 2f 27 53 9f 5f f9 19 e1 c3 1b 
+49 85 32 c2 1d d6 01 8e b3 42 cf 16 da ec 60 f0 67 9d b8 22 de 6c d4 06 4d a1 d5
+15 59 ab 24 c4 1a c2 55 75 6c 83 10 fa 40 e2 21 03 51 fc 53 ea 48 d1 ca 0f 64 3d
+fe ea 06 0f 97 76 97 82 8f de a1 fc 76 fe 47 39 3f 1f 0b 05
+
+#Generator G
+71 ba 7a a6 52 e2 99 15 33 4a 26 11 fd 1b a5 08 36 52 3f 5e bf 63 3d eb 23 e7 f2 
+3c 7e 95 a0 c5 9c 6c 82 4c e4 b2 a8 ac 0c 2b 25 67 4f 6e 65 30 13 ac 61 53 17 77
+e4 ea 43 61 c7 6e 6c 50 2b 58 1c 72 b5 1f 34 26 b0 b3 2e d8 15 8d 05 0a e4 2c 2f
+8c 91 dd dd df d5 1d 35 db 8f 5b 89 02 32 97 1d a0 70 21 fb 34 ea 00 7d 90 90 a2
+66 cb 17 3f c7 42 de be 44 94 93 ca d7 f0 31 5a df 2d 79 d9
+
+#Prime Q
+bf 84 a3 88 0f 2f 7d fd 76 4e e2 9e af 3b 3e 74 75 3d 6b 87
+
+#Private Key Value
+6d 27 17 0e c9 ff b3 29 8e 12 2c 1f a7 a8 48 64 42 f2 12 b3
diff --git a/data/com/phaos/phaos-xmlenc-3/payment.xml b/data/com/phaos/phaos-xmlenc-3/payment.xml
new file mode 100644
index 0000000..e7b50c7
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/payment.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+  <Name>John Smith</Name>
+  <CreditCard Currency="USD" Limit="5,000">
+    <Number>4019 2445 0277 5567</Number>
+    <Issuer>Bank of the Internet</Issuer>
+    <Expiration Time="04/02"/>
+  </CreditCard>
+</PaymentInfo>
\ No newline at end of file
diff --git a/data/com/phaos/phaos-xmlenc-3/rsa-priv-key.der b/data/com/phaos/phaos-xmlenc-3/rsa-priv-key.der
new file mode 100644
index 0000000..0a1e4b2
--- /dev/null
+++ b/data/com/phaos/phaos-xmlenc-3/rsa-priv-key.der
Binary files differ
diff --git a/data/com/pothole/xmldsig/xml-stylesheet.txt b/data/com/pothole/xmldsig/xml-stylesheet.txt
new file mode 100644
index 0000000..1efa071
--- /dev/null
+++ b/data/com/pothole/xmldsig/xml-stylesheet.txt
Binary files differ
diff --git a/data/com/pureedge/LeaveRequest.xfd b/data/com/pureedge/LeaveRequest.xfd
new file mode 100644
index 0000000..2e50ec8
--- /dev/null
+++ b/data/com/pureedge/LeaveRequest.xfd
@@ -0,0 +1,4130 @@
+<?xml version="1.0"?>

+<XFDL version="4.0.1">

+	<vfd_title>SF71</vfd_title>

+	<vfd_author>Thomas Mohr</vfd_author>

+	<vfd_revision>4/6/98</vfd_revision>

+	<vfd_date>4/6/98</vfd_date>

+	<saveformat>application/x-xfdl</saveformat>

+	<transmitformat>application/x-xfdl</transmitformat>

+	<formid content="array">

+		<version>1.0.0</version>

+	</formid>

+	<page sid="PAGE1">

+		<vfd_pagesize>letter</vfd_pagesize>

+		<vfd_pagedpi>120</vfd_pagedpi>

+		<vfd_printsize>8.0;10.5</vfd_printsize>

+		<label>PAGE1</label>

+		<bgcolor content="array">

+			<ae>235</ae>

+			<ae>235</ae>

+			<ae>235</ae>

+		</bgcolor>

+		<fontinfo content="array">

+			<ae>Courier</ae>

+			<ae>9</ae>

+			<ae>plain</ae>

+		</fontinfo>

+		<label sid="LABEL1">

+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>14</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+			<size content="array">

+				<ae>61</ae>

+				<ae>1</ae>

+			</size>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>3</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>874</ae>

+					<ae>34</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>79</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>1.  NAME</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>100</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>218</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>(Last, First, Middle Initial)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>385</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>85</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>170</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>3.  ORGANIZATION</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>248</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>4.  TYPE OF LEAVE/ABSENCE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>32</ae>

+					<ae>155</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>236</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>(Check appropriate box(es) below.)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>270</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>From:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>163</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Date</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>352</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>To:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>From:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>430</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>163</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Time</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>513</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>To:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>134</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>46</ae>

+				</ae>

+			</itemlocation>

+			<value>Total
+Hours</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>186</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Accrued Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>232</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Restored Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>278</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Advance Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>323</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Accured Sick Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>368</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Advance Sick Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>409</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Purpose:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>142</ae>

+					<ae>410</ae>

+				</ae>

+			</itemlocation>

+			<value>Medical/dental/optical Examination of requesting employee</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>45</ae>

+				<ae>1</ae>

+			</size>

+		</label>

+		<label sid="LABEL22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>535</ae>

+					<ae>410</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>46</ae>

+					<ae>24</ae>

+				</ae>

+			</itemlocation>

+			<value>Other</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>142</ae>

+					<ae>435</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>439</ae>

+					<ae>42</ae>

+				</ae>

+			</itemlocation>

+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>204</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Compensatory Time Off</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>535</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>180</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Other Paid Absence</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>556</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>158</ae>

+					<ae>24</ae>

+				</ae>

+			</itemlocation>

+			<value>(Specify in Remarks)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>593</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Leave Without Pay</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>676</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>215</ae>

+					<ae>46</ae>

+				</ae>

+			</itemlocation>

+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>677</ae>

+					<ae>183</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>214</ae>

+					<ae>126</ae>

+				</ae>

+			</itemlocation>

+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL30">

+			<value>I hereby invoke my</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>700</ae>

+					<ae>322</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>191</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL31">

+			<value>entitlement Family and</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>342</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>216</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL32">

+			<value>Medical Leave for:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>364</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>215</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL33">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>403</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>181</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>Birth/Adoption/Foster Care</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL34">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>426</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>182</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL35">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>483</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>184</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>Serious Health Condition of Self</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL36">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>537</ae>

+				</ae>

+			</itemlocation>

+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>26</ae>

+				<ae>5</ae>

+			</size>

+		</label>

+		<label sid="LABEL37">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>630</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>6.  REMARKS:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL38">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>747</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>170</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>7.  CERTIFICATION:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL39">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>178</ae>

+					<ae>747</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>715</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL40">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>767</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>873</ae>

+					<ae>66</ae>

+				</ae>

+			</itemlocation>

+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL41">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>841</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>230</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>EMPLOYEE SIGNATURE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL42">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>597</ae>

+					<ae>841</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>58</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>DATE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL43">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>877</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>335</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>8.  OFFICAL ACTION ON REQUEST:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL44">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>41</ae>

+					<ae>897</ae>

+				</ae>

+			</itemlocation>

+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>53</ae>

+				<ae>1</ae>

+			</size>

+		</label>

+		<label sid="LABEL45">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>388</ae>

+					<ae>875</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>APPROVED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL46">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>638</ae>

+					<ae>875</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>DISAPPROVED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL47">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>941</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>112</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>SIGNATURE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL48">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>597</ae>

+					<ae>940</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>58</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>DATE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL49">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>970</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>PRIVACY ACT STATEMENT</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL50">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>996</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>873</ae>

+					<ae>134</ae>

+				</ae>

+			</itemlocation>

+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL51">

+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>7</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>18</ae>

+					<ae>1140</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>875</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL52">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>18</ae>

+					<ae>1168</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>422</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL53">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>438</ae>

+					<ae>1168</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>454</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<justify>right</justify>

+		</label>

+		<line sid="LINE1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>82</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>218</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>263</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>311</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>354</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>398</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>530</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>578</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>626</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>743</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>867</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>967</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>1164</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1133</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>51</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>892</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1133</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>266</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>349</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>220</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>430</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>266</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>220</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>265</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>673</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>494</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>349</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE30">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE31">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>591</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<field sid="FIELD1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>58</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>489</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>John Q. Public</value>

+		</field>

+		<field sid="FIELD2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>537</ae>

+					<ae>58</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>123</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>123456789</value>

+		</field>

+		<field sid="FIELD3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>109</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>872</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>PureEdge Solutions Inc.</value>

+		</field>

+		<check sid="CHECK1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>191</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>277</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>322</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>79</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>367</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>121</ae>

+					<ae>412</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>121</ae>

+					<ae>438</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>519</ae>

+					<ae>412</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>495</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD30">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD31">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD32">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD33">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD34">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD35">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD36">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD37">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD38">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>591</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD39">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD40">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD41">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD42">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD43">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>680</ae>

+					<ae>326</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<check sid="CHECK13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>404</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<check sid="CHECK14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>428</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<check sid="CHECK15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>485</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<field sid="FIELD44">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>42</ae>

+					<ae>657</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>846</ae>

+					<ae>57</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK10.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</format>

+			<value></value>

+		</field>

+		<field sid="FIELD45">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>42</ae>

+					<ae>712</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>846</ae>

+					<ae>31</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK8.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</format>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK8.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<value></value>

+		</field>

+		<button sid="BUTTON1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>250</ae>

+					<ae>839</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>346</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<type>signature</type>

+			<signature>SIGNATURE1</signature>

+			<signer></signer>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<borderwidth>0</borderwidth>

+			<signitemrefs content="array">

+				<ae>omit</ae>

+				<ae>PAGE1.CHECK16</ae>

+				<ae>PAGE1.CHECK17</ae>

+				<ae>PAGE1.FIELD47</ae>

+				<ae>PAGE1.BUTTON2</ae>

+				<ae>SIGNATURE2</ae>

+				<ae>PAGE1.FIELD48</ae>

+			</signitemrefs>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<value content="compute">

+				<cval></cval>

+				<compute>

+					signer

+				</compute>

+			</value>

+		</button>

+		<field sid="FIELD46">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>655</ae>

+					<ae>840</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>155</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<editstate>readonly</editstate>

+			<value content="compute">

+				<cval></cval>

+				<compute>

+					(BUTTON1.value != "") ? "*" : ""

+				</compute>

+			</value>

+			<format content="array">

+				<ae>date</ae>

+				<ae>optional</ae>

+				<presentation>MM-DD-YY</presentation>

+			</format>

+		</field>

+		<check sid="CHECK16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>362</ae>

+					<ae>873</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<radio_behaviour content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK17.value == "on") ? set("value", "off") : ""

+				</compute>

+			</radio_behaviour>

+			<value></value>

+		</check>

+		<check sid="CHECK17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>604</ae>

+					<ae>873</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<radio_behaviour content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK16.value == "on") ? set("value", "off") : ""

+				</compute>

+			</radio_behaviour>

+			<value></value>

+		</check>

+		<field sid="FIELD47">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>41</ae>

+					<ae>917</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>770</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<Format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK17.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</Format>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK17.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<borderwidth>0</borderwidth>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<value></value>

+		</field>

+		<button sid="BUTTON2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>132</ae>

+					<ae>939</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>466</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<type>signature</type>

+			<signature>SIGNATURE2</signature>

+			<signer></signer>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<value content="compute">

+				<cval></cval>

+				<compute>

+					signer

+				</compute>

+			</value>

+			<borderwidth>0</borderwidth>

+		</button>

+		<field sid="FIELD48">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>656</ae>

+					<ae>940</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>155</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<editstate>readonly</editstate>

+			<value content="compute">

+				<cval></cval>

+				<compute>

+					(BUTTON2.value != "") ? "*" : ""

+				</compute>

+			</value>

+			<format content="array">

+				<ae>date</ae>

+				<ae>optional</ae>

+				<presentation>MM-DD-YY</presentation>

+			</format>

+		</field>

+		<spacer sid="vfd_spacer">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>960</ae>

+					<ae>1260</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</spacer>

+	</page>

+</XFDL>
\ No newline at end of file
diff --git a/data/com/pureedge/LeaveRequest.xml b/data/com/pureedge/LeaveRequest.xml
new file mode 100644
index 0000000..242f4d8
--- /dev/null
+++ b/data/com/pureedge/LeaveRequest.xml
@@ -0,0 +1,4000 @@
+<?xml version="1.0"?>

+<XFDL version="4.0.1">

+	<vfd_title>SF71</vfd_title>

+	<vfd_author>Thomas Mohr</vfd_author>

+	<vfd_revision>4/6/98</vfd_revision>

+	<vfd_date>4/6/98</vfd_date>

+	<saveformat>application/x-xfdl</saveformat>

+	<transmitformat>application/x-xfdl</transmitformat>

+	<formid content="array">

+		<version>1.0.0</version>

+	</formid>

+	<page sid="PAGE1">

+		<vfd_pagesize>letter</vfd_pagesize>

+		<vfd_pagedpi>120</vfd_pagedpi>

+		<vfd_printsize>8.0;10.5</vfd_printsize>

+		<label>PAGE1</label>

+		<bgcolor content="array">

+			<ae>235</ae>

+			<ae>235</ae>

+			<ae>235</ae>

+		</bgcolor>

+		<fontinfo content="array">

+			<ae>Courier</ae>

+			<ae>9</ae>

+			<ae>plain</ae>

+		</fontinfo>

+		<label sid="LABEL1">

+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>14</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+			<size content="array">

+				<ae>61</ae>

+				<ae>1</ae>

+			</size>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>3</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>874</ae>

+					<ae>34</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>79</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>1.  NAME</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>100</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>218</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>(Last, First, Middle Initial)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>385</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>85</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>170</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>3.  ORGANIZATION</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>248</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>4.  TYPE OF LEAVE/ABSENCE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>32</ae>

+					<ae>155</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>236</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>(Check appropriate box(es) below.)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>270</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>From:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>163</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Date</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>352</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>To:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>From:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>430</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>163</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Time</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>513</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>To:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>134</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>46</ae>

+				</ae>

+			</itemlocation>

+			<value>Total

+Hours</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>186</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Accrued Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>232</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Restored Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>278</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Advance Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>323</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Accured Sick Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>368</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Advance Sick Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>409</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Purpose:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>142</ae>

+					<ae>410</ae>

+				</ae>

+			</itemlocation>

+			<value>Medical/dental/optical Examination of requesting employee</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>45</ae>

+				<ae>1</ae>

+			</size>

+		</label>

+		<label sid="LABEL22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>535</ae>

+					<ae>410</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>46</ae>

+					<ae>24</ae>

+				</ae>

+			</itemlocation>

+			<value>Other</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>142</ae>

+					<ae>435</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>439</ae>

+					<ae>42</ae>

+				</ae>

+			</itemlocation>

+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>204</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Compensatory Time Off</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>535</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>180</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Other Paid Absence</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>556</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>158</ae>

+					<ae>24</ae>

+				</ae>

+			</itemlocation>

+			<value>(Specify in Remarks)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>593</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Leave Without Pay</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>676</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>215</ae>

+					<ae>46</ae>

+				</ae>

+			</itemlocation>

+			<value>5. FAMILY AND

+	MEDICAL LEAVE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>677</ae>

+					<ae>183</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>214</ae>

+					<ae>126</ae>

+				</ae>

+			</itemlocation>

+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL30">

+			<value>I hereby invoke my</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>700</ae>

+					<ae>322</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>191</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL31">

+			<value>entitlement Family and</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>342</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>216</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL32">

+			<value>Medical Leave for:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>364</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>215</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL33">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>403</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>181</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>Birth/Adoption/Foster Care</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL34">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>426</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>182</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL35">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>483</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>184</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>Serious Health Condition of Self</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL36">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>537</ae>

+				</ae>

+			</itemlocation>

+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>26</ae>

+				<ae>5</ae>

+			</size>

+		</label>

+		<label sid="LABEL37">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>630</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>6.  REMARKS:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL38">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>747</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>170</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>7.  CERTIFICATION:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL39">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>178</ae>

+					<ae>747</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>715</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL40">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>767</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>873</ae>

+					<ae>66</ae>

+				</ae>

+			</itemlocation>

+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL41">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>841</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>230</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>EMPLOYEE SIGNATURE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL42">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>597</ae>

+					<ae>841</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>58</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>DATE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL43">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>877</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>335</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>8.  OFFICAL ACTION ON REQUEST:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL44">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>41</ae>

+					<ae>897</ae>

+				</ae>

+			</itemlocation>

+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>53</ae>

+				<ae>1</ae>

+			</size>

+		</label>

+		<label sid="LABEL45">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>388</ae>

+					<ae>875</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>APPROVED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL46">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>638</ae>

+					<ae>875</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>DISAPPROVED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL47">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>941</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>112</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>SIGNATURE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL48">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>597</ae>

+					<ae>940</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>58</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>DATE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL49">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>970</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>PRIVACY ACT STATEMENT</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL50">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>996</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>873</ae>

+					<ae>134</ae>

+				</ae>

+			</itemlocation>

+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.

+

+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL51">

+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>7</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>18</ae>

+					<ae>1140</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>875</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL52">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>18</ae>

+					<ae>1168</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>422</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>NSN 7540-000-753-5067

+PREVIOUS EDITION MAY BE USED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL53">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>438</ae>

+					<ae>1168</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>454</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>STANDARD FORM 71 (Rev. 12-97)

+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<justify>right</justify>

+		</label>

+		<line sid="LINE1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>82</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>218</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>263</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>311</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>354</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>398</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>530</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>578</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>626</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>743</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>867</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>967</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>1164</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1133</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>51</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>892</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1133</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>266</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>349</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>220</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>430</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>266</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>220</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>265</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>673</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>494</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>349</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE30">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE31">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>591</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<field sid="FIELD1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>58</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>489</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>John Q. Public</value>

+		</field>

+		<field sid="FIELD2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>537</ae>

+					<ae>58</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>123</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>123456789</value>

+		</field>

+		<field sid="FIELD3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>109</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>872</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>PureEdge Solutions Inc.</value>

+		</field>

+		<check sid="CHECK1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>191</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>277</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>322</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>79</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>367</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>121</ae>

+					<ae>412</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>121</ae>

+					<ae>438</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>519</ae>

+					<ae>412</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>495</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD30">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD31">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD32">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD33">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD34">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD35">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD36">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD37">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD38">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>591</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD39">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD40">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD41">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD42">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD43">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>680</ae>

+					<ae>326</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<check sid="CHECK13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>404</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<check sid="CHECK14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>428</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<check sid="CHECK15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>485</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<field sid="FIELD44">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>42</ae>

+					<ae>657</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>846</ae>

+					<ae>57</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK10.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</format>

+			<value></value>

+		</field>

+		<field sid="FIELD45">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>42</ae>

+					<ae>712</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>846</ae>

+					<ae>31</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK8.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</format>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK8.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<value></value>

+		</field>

+		<button sid="BUTTON1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>250</ae>

+					<ae>839</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>346</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<type>signature</type>

+			<signature>SIGNATURE1</signature>

+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<borderwidth>0</borderwidth>

+			<signitemrefs content="array">

+				<ae>omit</ae>

+				<ae>PAGE1.CHECK16</ae>

+				<ae>PAGE1.CHECK17</ae>

+				<ae>PAGE1.FIELD47</ae>

+				<ae>PAGE1.BUTTON2</ae>

+				<ae>SIGNATURE2</ae>

+				<ae>PAGE1.FIELD48</ae>

+			</signitemrefs>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<value content="compute">

+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>

+				<compute>

+					signer

+				</compute>

+			</value>

+		</button>

+		<signature sid="SIGNATURE1">

+			<signformat>application/x-xfdl; signengine="CryptoAPI"</signformat>

+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>

+			<signature>PAGE1.BUTTON1</signature>

+			<signitemrefs content="array">

+				<ae>omit</ae>

+				<ae>PAGE1.CHECK16</ae>

+				<ae>PAGE1.CHECK17</ae>

+				<ae>PAGE1.FIELD47</ae>

+				<ae>PAGE1.BUTTON2</ae>

+				<ae>SIGNATURE2</ae>

+				<ae>PAGE1.FIELD48</ae>

+			</signitemrefs>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fullname>PureEdge Solutions Inc., Public Level 1 Service Offering CA, www.verisign.com/repository/CPS Incorp. by Ref.,LIAB.LTD(c)96, Customer - CustomerService, Customer Info2 - PureEdge, (cs) John M. Boyer, jboyer@pureedge.com</fullname>

+		</signature>

+		<field sid="FIELD46">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>655</ae>

+					<ae>840</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>155</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<editstate>readonly</editstate>

+			<value content="compute">

+				<cval>05-08-02</cval>

+				<compute>

+					(BUTTON1.value != "") ? "*" : ""

+				</compute>

+			</value>

+			<format content="array">

+				<ae>date</ae>

+				<ae>optional</ae>

+				<presentation>MM-DD-YY</presentation>

+			</format>

+		</field>

+		<spacer sid="vfd_spacer">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>960</ae>

+					<ae>1260</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</spacer>

+	</page>

+</XFDL>

diff --git a/data/com/pureedge/LeaveRequest_signed.xfd b/data/com/pureedge/LeaveRequest_signed.xfd
new file mode 100644
index 0000000..eda7e75
--- /dev/null
+++ b/data/com/pureedge/LeaveRequest_signed.xfd
@@ -0,0 +1,4198 @@
+<?xml version="1.0"?>

+<XFDL version="4.0.1">

+	<vfd_title>SF71</vfd_title>

+	<vfd_author>Thomas Mohr</vfd_author>

+	<vfd_revision>4/6/98</vfd_revision>

+	<vfd_date>4/6/98</vfd_date>

+	<saveformat>application/x-xfdl</saveformat>

+	<transmitformat>application/x-xfdl</transmitformat>

+	<formid content="array">

+		<version>1.0.0</version>

+	</formid>

+	<page sid="PAGE1">

+		<vfd_pagesize>letter</vfd_pagesize>

+		<vfd_pagedpi>120</vfd_pagedpi>

+		<vfd_printsize>8.0;10.5</vfd_printsize>

+		<label>PAGE1</label>

+		<bgcolor content="array">

+			<ae>235</ae>

+			<ae>235</ae>

+			<ae>235</ae>

+		</bgcolor>

+		<fontinfo content="array">

+			<ae>Courier</ae>

+			<ae>9</ae>

+			<ae>plain</ae>

+		</fontinfo>

+		<label sid="LABEL1">

+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>14</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+			<size content="array">

+				<ae>61</ae>

+				<ae>1</ae>

+			</size>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>3</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>874</ae>

+					<ae>34</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>79</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>1.  NAME</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>100</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>218</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>(Last, First, Middle Initial)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>35</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>385</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>85</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>170</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>3.  ORGANIZATION</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>248</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>4.  TYPE OF LEAVE/ABSENCE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>32</ae>

+					<ae>155</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>236</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>(Check appropriate box(es) below.)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>270</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>From:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>163</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Date</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>352</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>To:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>From:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>430</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>163</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Time</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>513</ae>

+					<ae>158</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>48</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>To:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>134</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>46</ae>

+				</ae>

+			</itemlocation>

+			<value>Total
+Hours</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>186</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Accrued Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>232</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Restored Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>278</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Advance Annual Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>323</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Accured Sick Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>368</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>205</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Advance Sick Leave</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>409</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Purpose:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>142</ae>

+					<ae>410</ae>

+				</ae>

+			</itemlocation>

+			<value>Medical/dental/optical Examination of requesting employee</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>45</ae>

+				<ae>1</ae>

+			</size>

+		</label>

+		<label sid="LABEL22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>535</ae>

+					<ae>410</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>46</ae>

+					<ae>24</ae>

+				</ae>

+			</itemlocation>

+			<value>Other</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>142</ae>

+					<ae>435</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>439</ae>

+					<ae>42</ae>

+				</ae>

+			</itemlocation>

+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>204</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Compensatory Time Off</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>535</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>180</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Other Paid Absence</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>556</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>158</ae>

+					<ae>24</ae>

+				</ae>

+			</itemlocation>

+			<value>(Specify in Remarks)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>9</ae>

+				<ae>plain</ae>

+				<ae>italic</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>64</ae>

+					<ae>593</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>Leave Without Pay</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>676</ae>

+					<ae>135</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>215</ae>

+					<ae>46</ae>

+				</ae>

+			</itemlocation>

+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>677</ae>

+					<ae>183</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>214</ae>

+					<ae>126</ae>

+				</ae>

+			</itemlocation>

+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL30">

+			<value>I hereby invoke my</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>700</ae>

+					<ae>322</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>191</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL31">

+			<value>entitlement Family and</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>342</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>216</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL32">

+			<value>Medical Leave for:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>364</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>215</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL33">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>403</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>181</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>Birth/Adoption/Foster Care</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL34">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>426</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>182</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL35">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>708</ae>

+					<ae>483</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>184</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+			<value>Serious Health Condition of Self</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL36">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>675</ae>

+					<ae>537</ae>

+				</ae>

+			</itemlocation>

+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>26</ae>

+				<ae>5</ae>

+			</size>

+		</label>

+		<label sid="LABEL37">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>630</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>6.  REMARKS:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL38">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>747</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>170</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>7.  CERTIFICATION:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL39">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>178</ae>

+					<ae>747</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>715</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL40">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>767</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>873</ae>

+					<ae>66</ae>

+				</ae>

+			</itemlocation>

+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL41">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>841</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>230</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>EMPLOYEE SIGNATURE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL42">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>597</ae>

+					<ae>841</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>58</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>DATE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL43">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>877</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>335</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>8.  OFFICAL ACTION ON REQUEST:</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL44">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>41</ae>

+					<ae>897</ae>

+				</ae>

+			</itemlocation>

+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<size content="array">

+				<ae>53</ae>

+				<ae>1</ae>

+			</size>

+		</label>

+		<label sid="LABEL45">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>388</ae>

+					<ae>875</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>APPROVED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL46">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>638</ae>

+					<ae>875</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>192</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>DISAPPROVED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL47">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>941</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>112</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>SIGNATURE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL48">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>597</ae>

+					<ae>940</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>58</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<value>DATE</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>11</ae>

+				<ae>bold</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL49">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>970</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>26</ae>

+				</ae>

+			</itemlocation>

+			<value>PRIVACY ACT STATEMENT</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>10</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<justify>center</justify>

+		</label>

+		<label sid="LABEL50">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>996</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>873</ae>

+					<ae>134</ae>

+				</ae>

+			</itemlocation>

+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL51">

+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>7</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>18</ae>

+					<ae>1140</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>875</ae>

+					<ae>22</ae>

+				</ae>

+			</itemlocation>

+		</label>

+		<label sid="LABEL52">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>18</ae>

+					<ae>1168</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>422</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+		</label>

+		<label sid="LABEL53">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>438</ae>

+					<ae>1168</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>454</ae>

+					<ae>38</ae>

+				</ae>

+			</itemlocation>

+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<justify>right</justify>

+		</label>

+		<line sid="LINE1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>82</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>218</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>263</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>311</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>354</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>398</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>406</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>530</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>578</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>657</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>626</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>743</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>867</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>967</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>1164</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>876</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>17</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1133</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>51</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>892</ae>

+					<ae>32</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1133</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>266</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>349</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>220</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>430</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>266</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>179</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>220</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>265</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>673</ae>

+					<ae>133</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>494</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>268</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>349</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE30">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>510</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<line sid="LINE31">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>591</ae>

+					<ae>484</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>143</ae>

+				</ae>

+			</itemlocation>

+		</line>

+		<field sid="FIELD1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>20</ae>

+					<ae>58</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>489</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>John Q. Public</value>

+		</field>

+		<field sid="FIELD2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>537</ae>

+					<ae>58</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>123</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>123456789</value>

+		</field>

+		<field sid="FIELD3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>19</ae>

+					<ae>109</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>872</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<value>PureEdge Solutions Inc.</value>

+		</field>

+		<check sid="CHECK1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>191</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>188</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK1.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK1.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK1.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>231</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK2.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK2.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK2.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK3">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>277</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD18">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>276</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK3.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK3.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK3.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK4">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>322</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD19">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD20">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD21">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>79</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD22">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD23">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>321</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK4.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK4.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK4.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK5">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>367</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD24">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD25">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD26">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>431</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD27">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD28">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>593</ae>

+					<ae>366</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK5.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK5.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK5.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK6">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>121</ae>

+					<ae>412</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK7">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>121</ae>

+					<ae>438</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK8">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>519</ae>

+					<ae>412</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value>off</value>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK5.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+		</check>

+		<check sid="CHECK9">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>495</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD29">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD30">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD31">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD32">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD33">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>498</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK9.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK9.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK9.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK10">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD34">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD35">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD36">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD37">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD38">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>543</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK10.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK10.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK10.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK11">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>28</ae>

+					<ae>591</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<field sid="FIELD39">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>269</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD40">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>350</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>date</ae>

+				<ae>case_insensitive</ae>

+				<ae>optional</ae>

+				<template content="array">

+					<ae>##-##-##</ae>

+				</template>

+				<presentation>MM-DD-YY</presentation>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<fontinfo content="array">

+				<ae>Courier</ae>

+				<ae>8</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</field>

+		<field sid="FIELD41">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>432</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>78</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD42">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>511</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>80</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<justify>center</justify>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>time</ae>

+				<ae>short</ae>

+				<ae>optional</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<field sid="FIELD43">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>592</ae>

+					<ae>590</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>81</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK11.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<check_off content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK11.value == "off") ? set("value", "") : ""

+				</compute>

+			</check_off>

+			<format content="array">

+				<ae>float</ae>

+				<ae>optional</ae>

+				<range content="array">

+					<ae>0</ae>

+					<ae>9999.9999</ae>

+				</range>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						((CHECK11.value == "on") ? "mandatory" : "optional")

+					</compute>

+				</ae>

+			</format>

+			<borderwidth>0</borderwidth>

+			<value></value>

+		</field>

+		<check sid="CHECK12">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>680</ae>

+					<ae>326</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<value></value>

+		</check>

+		<check sid="CHECK13">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>404</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<check sid="CHECK14">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>428</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<check sid="CHECK15">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>689</ae>

+					<ae>485</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>15</ae>

+					<ae>14</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>10</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<active content="compute">

+				<cval>off</cval>

+				<compute>

+					(CHECK12.value == "on") ? "on" : "off"

+				</compute>

+			</active>

+			<editstate content="compute">

+				<cval>readwrite</cval>

+				<compute>

+					(value == "on") ? "readonly" : "readwrite"

+				</compute>

+			</editstate>

+			<radio_check content="compute">

+				<cval></cval>

+				<compute>

+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""

+				</compute>

+			</radio_check>

+			<value></value>

+		</check>

+		<field sid="FIELD44">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>42</ae>

+					<ae>657</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>846</ae>

+					<ae>57</ae>

+				</ae>

+			</itemlocation>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<borderwidth>0</borderwidth>

+			<format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK10.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</format>

+			<value></value>

+		</field>

+		<field sid="FIELD45">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>42</ae>

+					<ae>712</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>846</ae>

+					<ae>31</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK8.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</format>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK8.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<value></value>

+		</field>

+		<button sid="BUTTON1">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>250</ae>

+					<ae>839</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>346</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<type>signature</type>

+			<signature>SIGNATURE1</signature>

+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<borderwidth>0</borderwidth>

+			<signitemrefs content="array">

+				<ae>omit</ae>

+				<ae>PAGE1.CHECK16</ae>

+				<ae>PAGE1.CHECK17</ae>

+				<ae>PAGE1.FIELD47</ae>

+				<ae>PAGE1.BUTTON2</ae>

+				<ae>SIGNATURE2</ae>

+				<ae>PAGE1.FIELD48</ae>

+			</signitemrefs>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<value content="compute">

+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>

+				<compute>

+					signer

+				</compute>

+			</value>

+		</button>

+		<signature sid="SIGNATURE1">

+			<signformat>application/x-xfdl; signengine="CryptoAPI"</signformat>

+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>

+			<signature>PAGE1.BUTTON1</signature>

+			<signitemrefs content="array">

+				<ae>omit</ae>

+				<ae>PAGE1.CHECK16</ae>

+				<ae>PAGE1.CHECK17</ae>

+				<ae>PAGE1.FIELD47</ae>

+				<ae>PAGE1.BUTTON2</ae>

+				<ae>SIGNATURE2</ae>

+				<ae>PAGE1.FIELD48</ae>

+			</signitemrefs>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fullname>PureEdge Solutions Inc., Public Level 1 Service Offering CA, www.verisign.com/repository/CPS Incorp. by Ref.,LIAB.LTD(c)96, Customer - CustomerService, Customer Info2 - PureEdge, (cs) John M. Boyer, jboyer@pureedge.com</fullname>

+			<mimedata>

+			    MIIGwQYJKoZIhvcNAQcCoIIGsjCCBq4CAQExCzAJBgUrDgMCGg

+			    UAMAsGCSqGSIb3DQEHAaCCBOUwggThMIIESqADAgECAhAt+fF1

+			    uHjAkbisgXnU882+MA0GCSqGSIb3DQEBBAUAMIHoMSAwHgYDVQ

+			    QKExdQdXJlRWRnZSBTb2x1dGlvbnMgSW5jLjEfMB0GA1UECxMW

+			    VmVyaVNpZ24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybX

+			    Mgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9S

+			    UEEgKGMpMDAxMjAwBgNVBAsTKUNsYXNzIDEgQ0EgLSBPblNpdG

+			    UgSW5kaXZpZHVhbCBTdWJzY3JpYmVyMTIwMAYDVQQDEylQdXJl

+			    RWRnZSBTb2x1dGlvbnMgSW5jLiBMZXZlbCAxIFB1YmxpYyBDQT

+			    AeFw0wMjA0MTEwMDAwMDBaFw0wMzA0MTEyMzU5NTlaMIIBITEg

+			    MB4GA1UEChQXUHVyZUVkZ2UgU29sdXRpb25zIEluYy4xKzApBg

+			    NVBAsUIlB1YmxpYyBMZXZlbCAxIFNlcnZpY2UgT2ZmZXJpbmcg

+			    Q0ExRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG

+			    9yeS9DUFMgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTYx

+			    IzAhBgNVBAsUGkN1c3RvbWVyIC0gQ3VzdG9tZXJTZXJ2aWNlMS

+			    IwIAYDVQQLFBlDdXN0b21lciBJbmZvMiAtIFB1cmVFZGdlMRsw

+			    GQYDVQQDExIoY3MpIEpvaG4gTS4gQm95ZXIxIjAgBgkqhkiG9w

+			    0BCQEWE2pib3llckBwdXJlZWRnZS5jb20wgZ8wDQYJKoZIhvcN

+			    AQEBBQADgY0AMIGJAoGBANXasH9cwstipYtI3NFUxoYa7TbFQd

+			    b9zbJrEDdxilyMqOu5juymN65D1GA6VZKpzkZqJsletEOTWm2w

+			    ruHrjEY66bHdJbaU9Mg50iBMZ43DmivBVM9Nmoy7me1oxqtGPf

+			    tnwDBpArCmiNizadTrSMRuWelWeZl+4MasTwKNZiNRAgMBAAGj

+			    ggFOMIIBSjAJBgNVHRMEAjAAMIGsBgNVHSAEgaQwgaEwgZ4GC2

+			    CGSAGG+EUBBwEBMIGOMCgGCCsGAQUFBwIBFhxodHRwczovL3d3

+			    dy52ZXJpc2lnbi5jb20vQ1BTMGIGCCsGAQUFBwICMFYwFRYOVm

+			    VyaVNpZ24sIEluYy4wAwIBARo9VmVyaVNpZ24ncyBDUFMgaW5j

+			    b3JwLiBieSByZWZlcmVuY2UgbGlhYi4gbHRkLiAoYyk5NyBWZX

+			    JpU2lnbjALBgNVHQ8EBAMCBaAwEQYJYIZIAYb4QgEBBAQDAgeA

+			    MG4GA1UdHwRnMGUwY6BhoF+GXWh0dHA6Ly9vbnNpdGVjcmwudm

+			    VyaXNpZ24uY29tL1B1cmVFZGdlU29sdXRpb25zSW5jUHVibGlj

+			    TGV2ZWwxU2VydmljZU9mZmVyaW5nQ0EvTGF0ZXN0Q1JMLmNybD

+			    ANBgkqhkiG9w0BAQQFAAOBgQCHWDaw/f2q9lyP5lKr97kk9CQ4

+			    4sYrmZUO1WisuZPppcMEmoo7SNst0sKB1DJ64/aMXeftqsSRHH

+			    BoZ5DhjpUKs3mUlCWaqLtd79XUbJTBp4LNohhbMgucfY92Si2K

+			    UuAYBMZK2ve46BSJHxI75nAHnuxDlum/LlqlCuRY8iQWLzGCAa

+			    QwggGgAgEBMIH9MIHoMSAwHgYDVQQKExdQdXJlRWRnZSBTb2x1

+			    dGlvbnMgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTm

+			    V0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBz

+			    Oi8vd3d3LnZlcmlzaWduLmNvbS9SUEEgKGMpMDAxMjAwBgNVBA

+			    sTKUNsYXNzIDEgQ0EgLSBPblNpdGUgSW5kaXZpZHVhbCBTdWJz

+			    Y3JpYmVyMTIwMAYDVQQDEylQdXJlRWRnZSBTb2x1dGlvbnMgSW

+			    5jLiBMZXZlbCAxIFB1YmxpYyBDQQIQLfnxdbh4wJG4rIF51PPN

+			    vjAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIGAylDT/o/8Pi

+			    isiKr/q3CbyF1udDd6k20PXXZgbLyWPM+B5O3YGSjMP0S0O6ua

+			    2pGF/Kj/SDtfhdVdh0a37my6P1a6mn5OS9KesXKAE5zPxuxY3l

+			    W9t8XX6GgSpssc8UTylww6VqkvvxxyBpKa3ORG6bCz4XiNkUFM

+			    t21ciuzjvpw=

+			</mimedata>

+		</signature>

+		<field sid="FIELD46">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>655</ae>

+					<ae>840</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>155</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<editstate>readonly</editstate>

+			<value content="compute">

+				<cval>05-08-02</cval>

+				<compute>

+					(BUTTON1.value != "") ? "*" : ""

+				</compute>

+			</value>

+			<format content="array">

+				<ae>date</ae>

+				<ae>optional</ae>

+				<presentation>MM-DD-YY</presentation>

+			</format>

+		</field>

+		<check sid="CHECK16">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>362</ae>

+					<ae>873</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<radio_behaviour content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK17.value == "on") ? set("value", "off") : ""

+				</compute>

+			</radio_behaviour>

+			<value></value>

+		</check>

+		<check sid="CHECK17">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>604</ae>

+					<ae>873</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>22</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<fontinfo content="array">

+				<ae>Helvetica</ae>

+				<ae>18</ae>

+				<ae>plain</ae>

+			</fontinfo>

+			<radio_behaviour content="compute">

+				<cval></cval>

+				<compute>

+					(CHECK16.value == "on") ? set("value", "off") : ""

+				</compute>

+			</radio_behaviour>

+			<value></value>

+		</check>

+		<field sid="FIELD47">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>41</ae>

+					<ae>917</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>770</ae>

+					<ae>23</ae>

+				</ae>

+			</itemlocation>

+			<Format content="array">

+				<ae>string</ae>

+				<ae content="compute">

+					<cval>optional</cval>

+					<compute>

+						(CHECK17.value == "on") ? "mandatory" : "optional"

+					</compute>

+				</ae>

+			</Format>

+			<editstate content="compute">

+				<cval>readonly</cval>

+				<compute>

+					(CHECK17.value == "on") ? "readwrite" : "readonly"

+				</compute>

+			</editstate>

+			<borderwidth>0</borderwidth>

+			<scrollhoriz>wordwrap</scrollhoriz>

+			<scrollvert>fixed</scrollvert>

+			<value></value>

+		</field>

+		<button sid="BUTTON2">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>132</ae>

+					<ae>939</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>466</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<type>signature</type>

+			<signature>SIGNATURE2</signature>

+			<signer></signer>

+			<format content="array">

+				<ae>string</ae>

+				<ae>mandatory</ae>

+			</format>

+			<signoptions content="array">

+				<ae>omit</ae>

+				<ae>triggeritem</ae>

+			</signoptions>

+			<fontinfo content="array">

+				<ae>Times</ae>

+				<ae>8</ae>

+				<ae>bold</ae>

+			</fontinfo>

+			<value content="compute">

+				<cval></cval>

+				<compute>

+					signer

+				</compute>

+			</value>

+			<borderwidth>0</borderwidth>

+		</button>

+		<field sid="FIELD48">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>656</ae>

+					<ae>940</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>155</ae>

+					<ae>27</ae>

+				</ae>

+			</itemlocation>

+			<borderwidth>0</borderwidth>

+			<editstate>readonly</editstate>

+			<value content="compute">

+				<cval></cval>

+				<compute>

+					(BUTTON2.value != "") ? "*" : ""

+				</compute>

+			</value>

+			<format content="array">

+				<ae>date</ae>

+				<ae>optional</ae>

+				<presentation>MM-DD-YY</presentation>

+			</format>

+		</field>

+		<spacer sid="vfd_spacer">

+			<itemlocation content="array">

+				<ae content="array">

+					<ae>absolute</ae>

+					<ae>960</ae>

+					<ae>1260</ae>

+				</ae>

+				<ae content="array">

+					<ae>extent</ae>

+					<ae>1</ae>

+					<ae>1</ae>

+				</ae>

+			</itemlocation>

+		</spacer>

+	</page>

+</XFDL>
\ No newline at end of file
diff --git a/data/com/rsasecurity/bdournaee/certj201_enveloped.xml b/data/com/rsasecurity/bdournaee/certj201_enveloped.xml
new file mode 100644
index 0000000..1706c78
--- /dev/null
+++ b/data/com/rsasecurity/bdournaee/certj201_enveloped.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FOO xmlns="http://www.foo.org/foo">
+foo
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+    <Reference URI="">
+      <Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+        <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <DigestValue>1wFIlW0si1FB2G8Ak7LdC9YWZuE=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>oAhBlLby9ysCpZZ3A+APjRX6Pf763RwgBxv5MBUfPrBgO9w9ZUCmaVNm8s3VmcoBxCzA+yaHMw0X

+wi8YdLtfvQ==</SignatureValue><KeyInfo>
+    <KeyValue>
+    <RSAKeyValue>
+        <Modulus>19GikKwZG8NFt6TRwnD1zUbj7dIp5WYj8gqk4KUIio7pd9//vVnPzF2QLBUjb2PK6DJf0kZkUpHv

+7RwklU9snQ==</Modulus>
+        <Exponent>EQ==</Exponent>
+      </RSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+</Signature></FOO>
\ No newline at end of file
diff --git a/data/com/rsasecurity/bdournaee/certj201_enveloping.xml b/data/com/rsasecurity/bdournaee/certj201_enveloping.xml
new file mode 100644
index 0000000..65467e9
--- /dev/null
+++ b/data/com/rsasecurity/bdournaee/certj201_enveloping.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+    <Reference URI="#envelopedData">
+      <Transforms><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <DigestValue>ikRJTZzM7uWpaXtmIcJyTwmt8Qw=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>dDA7vm8Kss5sLocYMg/lWdUDYVsfTQJ8QfmALKDFr3BrARmBZBqAOVffS2Xw/dlYeQBfUWPINv7/

+ciYjUz0xCg==</SignatureValue><KeyInfo>
+    <KeyValue>
+    <RSAKeyValue>
+        <Modulus>uHlPl0BIKYNLN6c22IYwxJYYFV6g8Oxk7ZlyiqFi/DRbDW3e5b5QBNxUof0QMaCfgYGYQshtTtQH

+2Ft5PAFZ0Q==</Modulus>
+        <Exponent>EQ==</Exponent>
+      </RSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+<dsig:Object Id="envelopedData" xmlns="" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><FOO xmlns="http://www.foo.org/foo">
+foo
+</FOO></dsig:Object></Signature>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/Readme.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/Readme.txt
new file mode 100644
index 0000000..f332286
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/Readme.txt
@@ -0,0 +1,22 @@
+Gregor Karlinger <gregor.karlinger@iaik.at>'s exclusive
+c14n[1] examples[2] dumped in an XML Signature[3], thereby
+undoing their usefulness as standalone exclusive c14n
+examples, but simplifying their testing. All errors are
+my own. Version 2.
+
+. iaikTests.example?.xml - Gregor's examples (*)
+. signature.xml - Signature representing the examples
+. signature.tmpl - Signature template
+. c14n-?.txt - Intermediate c14n output
+
+(*) I ran perl -pi -e 's/foo.com/example.org/g' on the files.
+
+[1] http://www.w3.org/TR/2002/CR-xml-exc-c14n-20020212
+[2] http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002JanMar/0259.html
+[3] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+http://www.baltimore.com/
+
+Thursday, April 18, 2002
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-0.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-0.txt
new file mode 100644
index 0000000..c5bd6dd
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-0.txt
@@ -0,0 +1,3 @@
+<Parent xml:foo="bar" xml:fool="barbar" xml:lang="en" xml:space="default">
+    <GrandChild xml:foo="barbarossa" xml:fool="barbar" xml:lang="ge" xml:space="preserve"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-1.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-1.txt
new file mode 100644
index 0000000..f41ece6
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-1.txt
@@ -0,0 +1,3 @@
+<Parent xml:foo="bar" xml:fool="barbar">
+    <GrandChild xml:space="preserve"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-2.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-2.txt
new file mode 100644
index 0000000..61a48d3
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-2.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-3.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-3.txt
new file mode 100644
index 0000000..61a48d3
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-3.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-4.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-4.txt
new file mode 100644
index 0000000..c42a3c9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-4.txt
@@ -0,0 +1,3 @@
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns="http://bar.com/default" xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild xmlns:ns1="http://example.org/ns1"></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-5.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-5.txt
new file mode 100644
index 0000000..ab188e6
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-5.txt
@@ -0,0 +1,3 @@
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-6.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-6.txt
new file mode 100644
index 0000000..d9c810d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-6.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-7.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-7.txt
new file mode 100644
index 0000000..d9c810d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-7.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-8.txt b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-8.txt
new file mode 100644
index 0000000..2e1117c
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/c14n-8.txt
@@ -0,0 +1,82 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>ayC7IAjulu8Ujs1l7IOkr09X9Lo=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>tYcPYeXWUpBwCJKaPHpnT+oc7FQ=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>+9y4JHXxsQSJitQS+qdtKd7P5LE=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>HLOhaTrExlTg9ARVdOhHdm1DAKk=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+          <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ns2"></InclusiveNamespaces>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example1.xml b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example1.xml
new file mode 100644
index 0000000..83fd594
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example1.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild" -->
+
+<!-- Result C14N:
+<Parent xml:foo="bar" xml:fool="barbar" xml:lang="en" xml:space="default">
+    <GrandChild xml:foo="barbarossa" xml:fool="barbar" xml:lang="ge" xml:space="preserve"></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation C14N:
+1. Parent inherts xml:lang and xml:space since it is an orphan node.
+2. Parent has explicitly declared attributes xml:foo and xml:fool.
+3. GrandChild inherts xml:foo from its Child ancestor.
+4. GrandChild inherits xml:fool from its Parent ancestor.
+5. GrandChild inherits xml:lang from its Child ancestor.
+6. GrandChild has explicitly declared attribute xml:space.
+-->
+
+<!-- Result EC14N:
+<Parent xml:foo="bar" xml:fool="barbar">
+    <GrandChild xml:space="preserve"></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation EC14N:
+1. Only those attributes in the xml namespace are rendered, which are
+   explicitely declared in the attribute axis of an element.
+-->
+
+<GrandParent xml:lang="en" xml:space="default">
+  <Parent xml:foo="bar" xml:fool="barbar">
+    <Child xml:foo="barbarossa" xml:lang="ge">
+      <GrandChild xml:space="preserve"/>
+    </Child>
+  </Parent>
+</GrandParent>
+
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example2.xml b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example2.xml
new file mode 100644
index 0000000..31e3058
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example2.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild" -->
+<!-- additionalNSPrefixes="default http://example.org" -->
+
+<!-- Result C14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation C14N:
+1. The xmlns="" of Parent is not rendered, although it is explicitly declared.
+   This is because Parent has no output parent with a default namespace decla-
+   ration that is in the node set.
+2. The xmlns="" of GrandChild is not rendered, although it is explicitly
+   declared. This is because GrandChild has no output parent with a default
+   namespace declaration that is in the node set.
+-->
+
+<!-- Result EC14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation EC14N:
+See Annotation C14N.
+-->
+
+<GrandParent>
+  <Parent xmlns="">
+    <Child xmlns="http://example.org">
+      <GrandChild xmlns=""/>
+    </Child>
+  </Parent>
+</GrandParent>  
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example3.xml b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example3.xml
new file mode 100644
index 0000000..5176974
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example3.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild" -->
+<!-- additionalNSPrefixes="default http://example.org/default ns1 http://example.org/ns1" -->
+
+<!-- Result C14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns="http://bar.com/default" xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild xmlns:ns1="http://example.org/ns1"></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
+ -->
+
+<!-- Annotation C14N:
+1. The default namespace node is rendered for Parent, since it is
+   inherited from GrandParent.
+2. The ns1 namespace node is rendered for the first GrandChild, since
+   it is inherited from Child.
+3. The default namespace node is not rendered for the first GrandChild,
+   since the output parent of GrandChild (Parent) has the same namespace
+   node with the same value, which is in the node set.
+4. The ns1 namespace node is rendered for the second GrandChild (same as 2).
+5. The default namespace node is rendered for the second GrandChild,
+   since it is explicitly declared, and has a different value than that of
+   Parent.
+6. The ns1 namespace node is rendered for the third GrandChild (same as 2).   
+7. The default namespace node is not rendered for the third GrandChild 
+   (same as 3).
+8. The ns1 namespace node is rendered for the fourth GrandChild (same as 2).   
+9. The default namespace node is not rendered fourth the third GrandChild 
+   (same as 3).
+-->
+
+<!-- Result EC14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild> 
+  </Parent>    
+-->
+
+<!-- Annotation EC14N:
+1. The default namespace node is rendered for Parent, since it is visibly
+   utilized by Parent.
+2. The ns1 namespace attribute is rendered for the first GrandChild, since it
+   is visibly utilized by GrandChild.
+3. The default namespace node is not rendered for the first GrandChild, since
+   it is not visibly utilized.
+4. The ns1 namespace attribute is rendered for the second GrandChild, since it
+   is visibly utilized by GrandChild.
+5. The default namespace node is not rendered for the second GrandChild, since
+   it is not visibly utilized by GrandChild. The Gender attribute is in no
+   namespace.
+6. The ns1 namespace node is not rendered for the third GrandChild, since it
+   is not visibly utilized.
+7. The default namespace node is not rendered for the third GrandChild. It is
+   visibly utilized, but the same namespace node with the same value has already
+   been rendered in Parent (an output parent of GrandChild).
+8. The default namespace node is not rendered for the fourth GrandChild, since
+   it is not visibly utilized.
+9. The ns1 namespace node is rendered for the fourth GrandChild, since it is
+   visibly utilized by the ns1:Gender attribute of GrandChild.
+-->
+
+<GrandParent xmlns="http://example.org/default">
+  <Parent>
+    <Child xmlns:ns1="http://example.org/ns1">
+      <ns1:GrandChild/>
+      <ns1:GrandChild xmlns="http://bar.com/default" Gender="male"/>
+      <GrandChild/>
+      <GrandChild ns1:Gender="male"/>
+    </Child>
+  </Parent>
+</GrandParent>  
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example4.xml b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example4.xml
new file mode 100644
index 0000000..aedbbf9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/iaikTests.example4.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild" -->
+<!-- additionalNSPrefixes="ns1 http://example.org/ns1" -->
+
+<!-- InlusiveNamespacePrefixList="ns2" -->
+
+<!-- Result C14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+ -->
+
+<!-- Annotation C14N:
+1. The namespace nodes ns1 und ns2 are rendered for GrandChild, since
+   they are both in scope for GrandChild and in the output node set.   
+-->
+
+<!-- Result EC14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+-->
+
+<!-- Annotation EC14N:
+1. The namespace node ns1 is rendered for GrandChild since it is visibly
+   utilized by GrandChild.
+2. The namespace node ns2 is rendered since it is on the 
+   InlusiveNamespacePrefixList and is therefore treated as in C14N mode.
+-->
+
+<GrandParent>
+  <Parent>
+    <Child xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2">
+      <ns1:GrandChild/>
+    </Child>
+  </Parent>
+</GrandParent>  
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.tmpl b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.tmpl
new file mode 100644
index 0000000..b492833
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.tmpl
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+          <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ns2" />
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+  </SignedInfo>
+  <SignatureValue />
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.xml b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.xml
new file mode 100644
index 0000000..b774ff8
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>ayC7IAjulu8Ujs1l7IOkr09X9Lo=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>tYcPYeXWUpBwCJKaPHpnT+oc7FQ=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1" xmlns:default="http://example.org/default">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>+9y4JHXxsQSJitQS+qdtKd7P5LE=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1" xmlns:default="http://example.org/default">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>HLOhaTrExlTg9ARVdOhHdm1DAKk=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+          <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ns2" />
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    NkRZexf7MJKmcBEGqorF3JHl6ewlZcghwbRWg96ae7Ob9118U73HVw==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+        </P>
+        <Q>
+          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+        </Q>
+        <G>
+          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+        </G>
+        <Y>
+          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+    <X509Data>
+      <X509SubjectName>
+        CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+      </X509SubjectName>
+      <X509IssuerSerial>
+        <X509IssuerName>
+          CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509IssuerName>
+        <X509SerialNumber>1017788370348</X509SerialNumber>
+      </X509IssuerSerial>
+      <X509Certificate>
+        MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+        MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+        czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+        Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+        8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+        MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+        YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+        2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+        A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+        4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+        R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+        ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+        lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+        Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+      </X509Certificate>
+      <X509Certificate>
+        MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+        MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+        MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+        3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+        0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+        w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+        nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+        t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+        451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+        PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+        NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+        4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+        MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+        gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/Readme.txt
new file mode 100644
index 0000000..1ba1cd9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/Readme.txt
@@ -0,0 +1,3 @@
+untested exclusive c14n example signature + c14n output
+merlin@baltimore.ie
+mon jan 14 2002
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-0.txt
new file mode 100644
index 0000000..f88f1ab
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-0.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz xmlns:bar="urn:bar">
+        
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-1.txt
new file mode 100644
index 0000000..16815e3
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-1.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns="urn:foo" xmlns:bar="urn:bar" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz>
+        
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-2.txt b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-2.txt
new file mode 100644
index 0000000..ccd9534
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-2.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz xmlns:bar="urn:bar">
+        <!--  comment -->
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-3.txt b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-3.txt
new file mode 100644
index 0000000..0adfc73
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-3.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns="urn:foo" xmlns:bar="urn:bar" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz>
+        <!--  comment -->
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-4.txt b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-4.txt
new file mode 100644
index 0000000..37f3303
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/c14n-4.txt
@@ -0,0 +1,36 @@
+<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:CanonicalizationMethod>
+      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></dsig:SignatureMethod>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>7yOTjUu+9oEhShgyIIXDLjQ08aY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default"></InclusiveNamespaces>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>09xMy0RTQM1Q91demYe/0F6AGXo=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"></dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>ZQH+SkCN8c5y0feAr+aRTZDwyvY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default"></InclusiveNamespaces>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>a1cTqBgbqpUt6bMJN4C6zFtnoyo=</dsig:DigestValue>
+      </dsig:Reference>
+    </dsig:SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/exc-signature.xml b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/exc-signature.xml
new file mode 100644
index 0000000..e805940
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-exc-c14n-one/exc-signature.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Foo xmlns:bar="urn:bar" xmlns="urn:foo" xml:space="preserve">
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+    <dsig:SignedInfo>
+      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>7yOTjUu+9oEhShgyIIXDLjQ08aY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>09xMy0RTQM1Q91demYe/0F6AGXo=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" />
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>ZQH+SkCN8c5y0feAr+aRTZDwyvY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>a1cTqBgbqpUt6bMJN4C6zFtnoyo=</dsig:DigestValue>
+      </dsig:Reference>
+    </dsig:SignedInfo>
+    <dsig:SignatureValue>
+      Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+    </dsig:SignatureValue>
+    <dsig:KeyInfo>
+      <dsig:KeyValue>
+        <dsig:DSAKeyValue>
+          <dsig:P>
+            8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+            nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+            L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+          </dsig:P>
+          <dsig:Q>
+            mFf8DiMVNFXy0vag9oNGNW/g4u0=
+          </dsig:Q>
+          <dsig:G>
+            g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+            apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+            wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+          </dsig:G>
+          <dsig:Y>
+            j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+            B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+            7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+          </dsig:Y>
+        </dsig:DSAKeyValue>
+      </dsig:KeyValue>
+    </dsig:KeyInfo>
+    <dsig:Object Id="to-be-signed">
+      <bar:Baz>
+        <!--  comment -->
+      </bar:Baz>
+    </dsig:Object>
+  </dsig:Signature>
+</Foo>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/Readme.txt
new file mode 100644
index 0000000..6f06b13
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/Readme.txt
@@ -0,0 +1,37 @@
+Example Signatures[1]
+
+[1] http://www.w3.org/Signature/Drafts/xmldsig-core/Overview.html
+
+This is an exercise over some key information types, interop
+of which is required for certain standardisation processes.
+
+. signature-keyname.xml
+. signature-retrievalmethod-rawx509crt.xml
+. signature-x509-crt-crl.xml
+. signature-x509-crt.xml
+. signature-x509-is.xml
+. signature-x509-ski.xml
+. signature-x509-sn.xml
+. certs/*.crt
+
+To resolve the key associated with the KeyName in `signature-keyname.xml'
+you must perform a cunning transformation from the name `Xxx' to the
+certificate that resides in the directory `certs/' that has a subject name
+containing the common name `Xxx'. The transformation from this key name to
+the filename under which the certificate is stored `certs/xxx.crt' is a
+trade secret encryption process, the circumvention of which may expose
+you to civil and criminal prosecution under the DMCA and other applicable
+laws.
+
+To resolve the key associated with the X509Data in `signature-x509-is.xml',
+`signature-x509-ski.xml' and `signature-x509-sn.xml' you need to resolve
+the identified certificate from those in the `certs' directory.
+
+In `signature-x509-crt-crl.xml' an X.509 CRL is present which has revoked
+the X.509 certificate used for signing. So verification should be
+qualified.
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Tuesday, May 15, 2001
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/badb.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/badb.crt
new file mode 100644
index 0000000..e51df2d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/badb.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/balor.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/balor.crt
new file mode 100644
index 0000000..05cccd9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/balor.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/bres.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/bres.crt
new file mode 100644
index 0000000..e386885
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/bres.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/lugh.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/lugh.crt
new file mode 100644
index 0000000..bb955d9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/lugh.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/macha.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/macha.crt
new file mode 100644
index 0000000..bc57061
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/macha.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/morigu.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/morigu.crt
new file mode 100644
index 0000000..a2b2757
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/morigu.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/nemain.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/nemain.crt
new file mode 100644
index 0000000..1360597
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/nemain.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/nocertifiacte.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/nocertifiacte.crt
new file mode 100644
index 0000000..6f06b13
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs/nocertifiacte.crt
@@ -0,0 +1,37 @@
+Example Signatures[1]
+
+[1] http://www.w3.org/Signature/Drafts/xmldsig-core/Overview.html
+
+This is an exercise over some key information types, interop
+of which is required for certain standardisation processes.
+
+. signature-keyname.xml
+. signature-retrievalmethod-rawx509crt.xml
+. signature-x509-crt-crl.xml
+. signature-x509-crt.xml
+. signature-x509-is.xml
+. signature-x509-ski.xml
+. signature-x509-sn.xml
+. certs/*.crt
+
+To resolve the key associated with the KeyName in `signature-keyname.xml'
+you must perform a cunning transformation from the name `Xxx' to the
+certificate that resides in the directory `certs/' that has a subject name
+containing the common name `Xxx'. The transformation from this key name to
+the filename under which the certificate is stored `certs/xxx.crt' is a
+trade secret encryption process, the circumvention of which may expose
+you to civil and criminal prosecution under the DMCA and other applicable
+laws.
+
+To resolve the key associated with the X509Data in `signature-x509-is.xml',
+`signature-x509-ski.xml' and `signature-x509-sn.xml' you need to resolve
+the identified certificate from those in the `certs' directory.
+
+In `signature-x509-crt-crl.xml' an X.509 CRL is present which has revoked
+the X.509 certificate used for signing. So verification should be
+qualified.
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Tuesday, May 15, 2001
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-keyname.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-keyname.xml
new file mode 100644
index 0000000..76f7731
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-keyname.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    KTe1H5Hjp8hwahNFoUqHDuPJNNqhS1U3BBBH5/gByItNIwV18nMiLq4KunzFnOqD
+    xzTuO0/T+wsoYC1xOEuCDxyIujNCaJfLh+rCi5THulnc8KSHHEoPQ+7fA1VjmO31
+    2iw1iENOi7m//wzKlIHuxZCJ5nvolT21PV6nSE4DHlA=
+  </SignatureValue>
+  <KeyInfo>
+    <KeyName>Lugh</KeyName>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-retrievalmethod-rawx509crt.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-retrievalmethod-rawx509crt.xml
new file mode 100644
index 0000000..633c170
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-retrievalmethod-rawx509crt.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    FnwsSCWT6REW/8QnOjv0BK+r3Ly/4aB++pNnZp9pnz8f7+j33eKSj1soyQLq5zmN
+    FwyeeQhnlTbR1kfve014ub9uHVC9A1cfmGZxQF1DC+enHt+AAPJaa278/ocgpMb5
+    Gibl4w7e3HAdBn/RJCrFJH77wY2oU5Ob0zIQtECVNJk=
+  </SignatureValue>
+  <KeyInfo>
+    <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#rawX509Certificate" URI="certs/balor.crt" />
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt-crl.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt-crl.xml
new file mode 100644
index 0000000..4487751
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt-crl.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    DrNVqKOilPswEwCilZ3EkjFyQof5BJAbAdi2I8qZuJAsL7d180nWe/xPAURHC6IR
+    t2xJkNgCxrgdpy9//2UzaeE65URi2THgbPW1fhrp6dVeJyhiq9YfJ0Ofn7oeADkt
+    kd3jZipUUG7UGQ0oz3bMaZ6OaGYLkygnUXWh5EHpg4A=
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509Certificate>
+        MIICwTCCAiqgAwIBAgIGAOZ75aCZMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMRQwEgYDVQQDEwtYL1NlY3Vy
+        ZSBDQTAeFw0wMTA1MTUxMDA1MjRaFw0wMjA1MTUxMDA0MzdaMGcxCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ0wCwYDVQQDEwRCcmVzMIGf
+        MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAQtREqcPJkeGXcCORs/SwcHLh9ySw
+        tQNTUvTQm54hBLbTLhJQ20NJf46Z4YSNoaI7IT4x8fiv+JZLNrQc2ISGZBibMVZ4
+        4ZvSWYls7d9QurRltvQ2oCqDhUMSXcGY3HJmeEzITIfdh6bIuSQ0sDAXNygVhGr/
+        vVaUOyxr1AoutQIDAQABo3EwbzAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIz2
+        q1W6c2KTMDUGA1UdEgQuMCyGKmh0dHA6Ly93d3cuYmFsdGltb3JlLmNvbS9wcm9k
+        dWN0cy94c2VjdXJlLzATBgNVHSMEDDAKgAiF7B8Kj38a0TANBgkqhkiG9w0BAQUF
+        AAOBgQAzFhnxji5+UdJ6tbfRKTfhQG0JWrWiQRy0N3lrAXQnpQBFjOjtRPRiR5ST
+        vRQbRNrGljegIpoFFK12Uj9BxP6x+uZUqzKDfFqWEN0s9Y9YQdkl+DN9jZZwgK6N
+        KYGqh43HIoPKGb1UQ93tTGW+F4ygNxHluvO1Ovtku8aPBn4idQ==
+      </X509Certificate>
+    </X509Data>
+    <X509Data>
+      <X509CRL>
+        MIIBdjCB4AIBATANBgkqhkiG9w0BAQUFADBuMQswCQYDVQQGEwJJRTEPMA0GA1UE
+        CBMGRHVibGluMSUwIwYDVQQKExxCYWx0aW1vcmUgVGVjaG5vbG9naWVzLCBMdGQu
+        MREwDwYDVQQLEwhYL1NlY3VyZTEUMBIGA1UEAxMLWC9TZWN1cmUgQ0EXDTAxMDUx
+        NTEwNDUwMFoXDTAxMDkyMDEwNDUwMFowGTAXAgYA5nvloJkXDTAxMDUxNTEwNDUw
+        MFqgIzAhMAoGA1UdFAQDAgEAMBMGA1UdIwQMMAqACIXsHwqPfxrRMA0GCSqGSIb3
+        DQEBBQUAA4GBADVPiyJ4Q+Kr3B/GGmh/KbVtSPv5x1zffGxp1XwV5cVOmksVrKNx
+        rCw86K0ZLxVgy1rIql8+i1b9u3Ozuo6VhU0el/NF2Tto2jAyy0j+PPK2Xv1/ATQx
+        J2PK+Ty9vkm+7jjurfeJVvAC8D+WFBAh/JWIzmMXA8cMBfTFBRPhZQao
+      </X509CRL>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt.xml
new file mode 100644
index 0000000..c811820
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-crt.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    ZrROxIcOSBvt5z2krEhQGSVIo4oAwTJwGAoFiWucvvEtY9k0L2R5RVHBnHCzk5GT
+    kHGaT8SUqtnDeiH6W/2FNfciiV/w1pxURvNcyW8cYCn1B5XF68vILXUaptWf0DKw
+    DvCFS+uLh0ACuEUfpe1Dx1fwB85lpK2iQcpx9dPaC4M=
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509Certificate>
+        MIICwzCCAiygAwIBAgIGAOZ75QhHMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMRQwEgYDVQQDEwtYL1NlY3Vy
+        ZSBDQTAeFw0wMTA1MTUxMDA0NDVaFw0wMjA1MTUxMDA0MzdaMGkxCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3JpZ3Uw
+        gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALT4FJkxu+bB5lOwYa+irIb7sJU7
+        9sRQbYYnfw35D7NQkig+Lvi2LXXoA6ABull2bF+gu+sgRzezzOs6VsTL8z57TIz2
+        48HaMInFjOiqSANmzQKlXv1PjXSxSyHRi/3xc8gMfmCxeSPCZ5VpUiQoJ5ZpWcDz
+        /LKvb0l9X0YBzMZlAgMBAAGjcTBvMA4GA1UdDwEB/wQEAwIHgDARBgNVHQ4ECgQI
+        hbis35lIcu8wNQYDVR0SBC4wLIYqaHR0cDovL3d3dy5iYWx0aW1vcmUuY29tL3By
+        b2R1Y3RzL3hzZWN1cmUvMBMGA1UdIwQMMAqACIXsHwqPfxrRMA0GCSqGSIb3DQEB
+        BQUAA4GBAGSBdPou5CWAiyS5/f46m00mIIqO3xl6ZXOc/DRblF4gWnesd2F5v/s6
+        lAbqK8+wJM6GxvpOkSp6O1q6hZRyzF86QPlXCfhKAXkgzHXtb6PfT2m9t0iawnjy
+        P+oyYofnFU5FFVOCujSrmFx3FCU+Wg6RT3v1jRoM3YfMYZYEzfTT
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-is.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-is.xml
new file mode 100644
index 0000000..895811e
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-is.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    pjlt4UQxI954TIicsctTxRk4qC4tF/h2Y0kmivXvyUU8EPoaCH8bIrcFWz7I7C3P
+    7NZi341itjSWA9cFnSBKboBPvKxPMMmYShsVMFBDyB2jiF1T3Qc4C/E0BJpR/Ntn
+    uBUNBPNxC0TUjuS7fIYku3NpVVbIv1OP0OqWNi0KDN0=
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509IssuerSerial>
+        <X509IssuerName>
+          CN=X/Secure CA,OU=X/Secure,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+        </X509IssuerName>
+        <X509SerialNumber>989921098912</X509SerialNumber>
+      </X509IssuerSerial>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-ski.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-ski.xml
new file mode 100644
index 0000000..4a21f4d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-ski.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    odQDs0dMckjo3hrQVZfx73SBDAR75bKaa/voefbB2f+uKvLMQDF1CeB8wA7vmlDV
+    oJJe3/18vvawSjWgIowN/KR7EZwkcvtw9hnb1QYEddX+CueeCfdEvp553nIPtibg
+    z+77wAbVq1VCOEspx3gn9DZcLJeGHkaeeTQNplYkn84=
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509SKI>
+        iIg+zElCPZ0=
+      </X509SKI>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-sn.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-sn.xml
new file mode 100644
index 0000000..f2a3d38
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/signature-x509-sn.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    L5EGwmlRmiKHu0SuMEhEwAzFK3uNWidqgpc+ZJws8pyD/uTZKdS93GMXlyMup4Dj
+    +E8+AFNj8zJ2JtQUBCkyTOS6XjMvSU4Q4/tlm6srjROtIvqpnwfUF0zEw5YswmlF
+    TpZY92EUQEiAErDt9LL9ZOy3fTAbyxs0WCzQEGoODE8=
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509SubjectName>
+        CN=Badb,OU=X/Secure,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+      </X509SubjectName>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/Readme.txt
new file mode 100644
index 0000000..31fb371
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/Readme.txt
@@ -0,0 +1,18 @@
+Example Signatures[1]
+
+[1] http://www.w3.org/Signature/Drafts/xmldsig-core/Overview.html
+
+See signature-*.xml
+
+The key for the HMAC-SHA1 signatures is "secret".getBytes("ASCII")
+which is, in hex, (73 65 63 72 65 74).
+
+Included in the directory are:
+
+  signature-*.xml - The signatures
+  signature-*-c14n-?.txt - The intermediate c14n output
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Friday, March 23, 2001
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa-c14n-0.txt
new file mode 100644
index 0000000..3ecf8ce
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa-c14n-0.txt
@@ -0,0 +1,3 @@
+<Envelopes="http:urn:envelope">
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa-c14n-1.txt
new file mode 100644
index 0000000..1971e95
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa-c14n-1.txt
@@ -0,0 +1,11 @@
+edInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanononicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SigngnatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethodethod>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>K8M/lPbKnuMDsO0Uzuj75lQtzQI=</DigestValue>
+      </Reference>
+    </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa.xml
new file mode 100644
index 0000000..e5c63c8
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloped-dsa.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Envelope xmlns="urn:envelope">
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>K8M/lPbKnuMDsO0Uzuj75lQtzQI=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      DpEylhQoiUKBoKWmYfajXO7LZxiDYgVtUtCNyTgwZgoChzorA2nhkQ==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+            FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+            UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+          </P>
+          <Q>
+            kEjAFpCe4lcUOdwphpzf+tBaUds=
+          </Q>
+          <G>
+            oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+            SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+            BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+          </G>
+          <Y>
+            pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+            AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+            jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+      <X509Data>
+        <X509Certificate>
+          MIIDbTCCAyygAwIBAgIGAOCdrKxkMAkGByqGSM44BAMwezELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjElMCMGA1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cywgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxITAfBgNVBAMTGFgvU2VjdXJlIDEw
+          MjQtYml0IERTQSBDQTAeFw0wMDA3MjcxNzEzMzNaFw0wMTA3MjcxNzEzMjZaMHwx
+          CzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9y
+          ZSBUZWNobm9sb2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMSIwIAYDVQQD
+          ExlYL1NlY3VyZSAxMDI0LWJpdCBEU0EgY3J0MIIBuDCCASwGByqGSM44BAEwggEf
+          AoGBAKxbaPLj0DOst+BSz5g4eNASyda1awvFXkarroT2eo2DRZELsMZ7v8AryADI
+          bpDwSxRE/GyX/29nn/qKsWWoxG/vPM5WaMhvIP8DHwwR08c/gp6MC2oZwgk2AaeZ
+          LexvKlKGybr48pcI9bLe1fS7LtN4lzF7W4q4lIxWuYFEWrDfAhUAkEjAFpCe4lcU
+          Odwphpzf+tBaUdsCgYEAoe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOW
+          tKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTE
+          Lh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqwD
+          gYUAAoGBAKQOTZ2b3Hee+FkV7jgO2Xwv+y6reHAdDES1rR7m7SaFTmqPYm+a8uK0
+          5NK+nXZzrwCBipLbrcyt8prypXktwzq8GUICfvwQ1g1vJDvUeuqOq3Y4kqGwYv9H
+          NldfnZKjoIxZis9/eZrwjmRoQu36gFYR2rdhIxjzH4EmcgAWu/tZozswOTAPBgNV
+          HQ8BAf8EBQMDAIAAMBEGA1UdDgQKBAiA4IML4dndEDATBgNVHSMEDDAKgAiHoMnY
+          nDxZUDAJBgcqhkjOOAQDAzAAMC0CFQCEXa1E2ueJ8WMX5nP1lCcBWhxC2wIUGUCB
+          b6M6Oj3NQAJbnZsdY63rKa0=
+        </X509Certificate>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</Envelope>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa-c14n-0.txt
new file mode 100644
index 0000000..a434b55
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa-c14n-0.txt
@@ -0,0 +1,11 @@
+edInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethodethod>
+    <Reference URI="#object">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>N6pjx3OY2VRHMmLhoAV8HmMu2nc=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa.xml
new file mode 100644
index 0000000..e9bf94d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-b64-dsa.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="#object">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>N6pjx3OY2VRHMmLhoAV8HmMu2nc=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    W+lrPJcfT0Uyj/AXyu9X2XLsTvBo6Rs8GNZUNUT4/+wx3HYuv/BovQ==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+          FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+          UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+        </P>
+        <Q>
+          kEjAFpCe4lcUOdwphpzf+tBaUds=
+        </Q>
+        <G>
+          oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+          SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+          BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+        </G>
+        <Y>
+          pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+          AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+          jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+    <X509Data>
+      <X509Certificate>
+        MIIDbTCCAyygAwIBAgIGAOCdrKxkMAkGByqGSM44BAMwezELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjElMCMGA1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cywgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxITAfBgNVBAMTGFgvU2VjdXJlIDEw
+        MjQtYml0IERTQSBDQTAeFw0wMDA3MjcxNzEzMzNaFw0wMTA3MjcxNzEzMjZaMHwx
+        CzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9y
+        ZSBUZWNobm9sb2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMSIwIAYDVQQD
+        ExlYL1NlY3VyZSAxMDI0LWJpdCBEU0EgY3J0MIIBuDCCASwGByqGSM44BAEwggEf
+        AoGBAKxbaPLj0DOst+BSz5g4eNASyda1awvFXkarroT2eo2DRZELsMZ7v8AryADI
+        bpDwSxRE/GyX/29nn/qKsWWoxG/vPM5WaMhvIP8DHwwR08c/gp6MC2oZwgk2AaeZ
+        LexvKlKGybr48pcI9bLe1fS7LtN4lzF7W4q4lIxWuYFEWrDfAhUAkEjAFpCe4lcU
+        Odwphpzf+tBaUdsCgYEAoe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOW
+        tKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTE
+        Lh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqwD
+        gYUAAoGBAKQOTZ2b3Hee+FkV7jgO2Xwv+y6reHAdDES1rR7m7SaFTmqPYm+a8uK0
+        5NK+nXZzrwCBipLbrcyt8prypXktwzq8GUICfvwQ1g1vJDvUeuqOq3Y4kqGwYv9H
+        NldfnZKjoIxZis9/eZrwjmRoQu36gFYR2rdhIxjzH4EmcgAWu/tZozswOTAPBgNV
+        HQ8BAf8EBQMDAIAAMBEGA1UdDgQKBAiA4IML4dndEDATBgNVHSMEDDAKgAiHoMnY
+        nDxZUDAJBgcqhkjOOAQDAzAAMC0CFQCEXa1E2ueJ8WMX5nP1lCcBWhxC2wIUGUCB
+        b6M6Oj3NQAJbnZsdY63rKa0=
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+  <Object Id="object">c29tZSB0ZXh0</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa-c14n-1.txt
new file mode 100644
index 0000000..3f24eaa
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa-c14n-1.txt
@@ -0,0 +1,8 @@
+edInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethodethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa.xml
new file mode 100644
index 0000000..b23cc0b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-dsa.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    SVsFIWuARkAaD9HZXhNASHShx38UZiDS3IsIb2DS1eBUdD4V70E6MA==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+          FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+          UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+        </P>
+        <Q>
+          kEjAFpCe4lcUOdwphpzf+tBaUds=
+        </Q>
+        <G>
+          oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+          SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+          BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+        </G>
+        <Y>
+          pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+          AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+          jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+    <X509Data>
+      <X509Certificate>
+        MIIDbTCCAyygAwIBAgIGAOCdrKxkMAkGByqGSM44BAMwezELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjElMCMGA1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cywgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxITAfBgNVBAMTGFgvU2VjdXJlIDEw
+        MjQtYml0IERTQSBDQTAeFw0wMDA3MjcxNzEzMzNaFw0wMTA3MjcxNzEzMjZaMHwx
+        CzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9y
+        ZSBUZWNobm9sb2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMSIwIAYDVQQD
+        ExlYL1NlY3VyZSAxMDI0LWJpdCBEU0EgY3J0MIIBuDCCASwGByqGSM44BAEwggEf
+        AoGBAKxbaPLj0DOst+BSz5g4eNASyda1awvFXkarroT2eo2DRZELsMZ7v8AryADI
+        bpDwSxRE/GyX/29nn/qKsWWoxG/vPM5WaMhvIP8DHwwR08c/gp6MC2oZwgk2AaeZ
+        LexvKlKGybr48pcI9bLe1fS7LtN4lzF7W4q4lIxWuYFEWrDfAhUAkEjAFpCe4lcU
+        Odwphpzf+tBaUdsCgYEAoe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOW
+        tKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTE
+        Lh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqwD
+        gYUAAoGBAKQOTZ2b3Hee+FkV7jgO2Xwv+y6reHAdDES1rR7m7SaFTmqPYm+a8uK0
+        5NK+nXZzrwCBipLbrcyt8prypXktwzq8GUICfvwQ1g1vJDvUeuqOq3Y4kqGwYv9H
+        NldfnZKjoIxZis9/eZrwjmRoQu36gFYR2rdhIxjzH4EmcgAWu/tZozswOTAPBgNV
+        HQ8BAf8EBQMDAIAAMBEGA1UdDgQKBAiA4IML4dndEDATBgNVHSMEDDAKgAiHoMnY
+        nDxZUDAJBgcqhkjOOAQDAzAAMC0CFQCEXa1E2ueJ8WMX5nP1lCcBWhxC2wIUGUCB
+        b6M6Oj3NQAJbnZsdY63rKa0=
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40-c14n-1.txt
new file mode 100644
index 0000000..f4f4060
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40-c14n-1.txt
@@ -0,0 +1,10 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
+      <HMACOutputLength>40</HMACOutputLength>
+    </SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40.xml
new file mode 100644
index 0000000..4904d79
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-40.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
+      <HMACOutputLength>40</HMACOutputLength>
+    </SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    HHiqvCU=
+  </SignatureValue>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-c14n-1.txt
new file mode 100644
index 0000000..e0cdc88
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1-c14n-1.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1.xml
new file mode 100644
index 0000000..c0c8343
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-hmac-sha1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" />
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    JElPttIT4Am7Q+MNoMyv+WDfAZw=
+  </SignatureValue>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa-c14n-1.txt
new file mode 100644
index 0000000..695ed33
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa-c14n-1.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa.xml
new file mode 100644
index 0000000..143192c
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    TTx2opM6OcMi6zlasWEhP992di482KhTo80pgheFySZcpvorB47i8FkgDjftdxbn
+    2xlrZh0rp0v2dVVxWtLFjUpvN/Z+fkG/AXiT3kAhzRBqmYYYZxIuCtQM57yoBrIh
+    /nSy3HWs5wDqroFAx9q52qMMbKNbnwHG6Y/K1ZiVnNg=
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <RSAKeyValue>
+        <Modulus>
+          qe5VYmNxjeUSQDEI5lkHNDXxfXpXj95Ni7tcQ9DHDSgUJ1m2dNwKublDVQZDmmlf
+          HJ2n/us+EZTZNUST4GqublhgzcCCvYq9dbU8oqiEz0ktTIWCPy36UvQcaRwufpiV
+          RFaTDNPqjkjWPrM2cnpfyoI7ydbVCBRfI9zISQiR0Mk=
+        </Modulus>
+        <Exponent>
+          AQAB
+        </Exponent>
+      </RSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa-c14n-0.txt
new file mode 100644
index 0000000..7d1f64b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa-c14n-0.txt
@@ -0,0 +1,11 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa.xml
new file mode 100644
index 0000000..79765c2
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-b64-dsa.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    gU0blQcXJFHR5MhUIb2Clq7bcT+NfxOG5yLFUd3Y85QNfTaR5vu+6Q==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+          FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+          UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+        </P>
+        <Q>
+          kEjAFpCe4lcUOdwphpzf+tBaUds=
+        </Q>
+        <G>
+          oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+          SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+          BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+        </G>
+        <Y>
+          pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+          AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+          jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+    <X509Data>
+      <X509Certificate>
+        MIIDbTCCAyygAwIBAgIGAOCdrKxkMAkGByqGSM44BAMwezELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjElMCMGA1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cywgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxITAfBgNVBAMTGFgvU2VjdXJlIDEw
+        MjQtYml0IERTQSBDQTAeFw0wMDA3MjcxNzEzMzNaFw0wMTA3MjcxNzEzMjZaMHwx
+        CzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9y
+        ZSBUZWNobm9sb2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMSIwIAYDVQQD
+        ExlYL1NlY3VyZSAxMDI0LWJpdCBEU0EgY3J0MIIBuDCCASwGByqGSM44BAEwggEf
+        AoGBAKxbaPLj0DOst+BSz5g4eNASyda1awvFXkarroT2eo2DRZELsMZ7v8AryADI
+        bpDwSxRE/GyX/29nn/qKsWWoxG/vPM5WaMhvIP8DHwwR08c/gp6MC2oZwgk2AaeZ
+        LexvKlKGybr48pcI9bLe1fS7LtN4lzF7W4q4lIxWuYFEWrDfAhUAkEjAFpCe4lcU
+        Odwphpzf+tBaUdsCgYEAoe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOW
+        tKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTE
+        Lh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqwD
+        gYUAAoGBAKQOTZ2b3Hee+FkV7jgO2Xwv+y6reHAdDES1rR7m7SaFTmqPYm+a8uK0
+        5NK+nXZzrwCBipLbrcyt8prypXktwzq8GUICfvwQ1g1vJDvUeuqOq3Y4kqGwYv9H
+        NldfnZKjoIxZis9/eZrwjmRoQu36gFYR2rdhIxjzH4EmcgAWu/tZozswOTAPBgNV
+        HQ8BAf8EBQMDAIAAMBEGA1UdDgQKBAiA4IML4dndEDATBgNVHSMEDDAKgAiHoMnY
+        nDxZUDAJBgcqhkjOOAQDAzAAMC0CFQCEXa1E2ueJ8WMX5nP1lCcBWhxC2wIUGUCB
+        b6M6Oj3NQAJbnZsdY63rKa0=
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa-c14n-0.txt
new file mode 100644
index 0000000..4aafc36
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa-c14n-0.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa.xml
new file mode 100644
index 0000000..5ff86df
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-external-dsa.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    Fj9OwSxpJppDnihohduxEUqu9/p6TR9PpgNGapaiBHGcY2QUDBaOEw==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+          FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+          UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+        </P>
+        <Q>
+          kEjAFpCe4lcUOdwphpzf+tBaUds=
+        </Q>
+        <G>
+          oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+          SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+          BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+        </G>
+        <Y>
+          pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+          AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+          jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+    <X509Data>
+      <X509Certificate>
+        MIIDbTCCAyygAwIBAgIGAOCdrKxkMAkGByqGSM44BAMwezELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjElMCMGA1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cywgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxITAfBgNVBAMTGFgvU2VjdXJlIDEw
+        MjQtYml0IERTQSBDQTAeFw0wMDA3MjcxNzEzMzNaFw0wMTA3MjcxNzEzMjZaMHwx
+        CzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9y
+        ZSBUZWNobm9sb2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMSIwIAYDVQQD
+        ExlYL1NlY3VyZSAxMDI0LWJpdCBEU0EgY3J0MIIBuDCCASwGByqGSM44BAEwggEf
+        AoGBAKxbaPLj0DOst+BSz5g4eNASyda1awvFXkarroT2eo2DRZELsMZ7v8AryADI
+        bpDwSxRE/GyX/29nn/qKsWWoxG/vPM5WaMhvIP8DHwwR08c/gp6MC2oZwgk2AaeZ
+        LexvKlKGybr48pcI9bLe1fS7LtN4lzF7W4q4lIxWuYFEWrDfAhUAkEjAFpCe4lcU
+        Odwphpzf+tBaUdsCgYEAoe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOW
+        tKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTE
+        Lh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqwD
+        gYUAAoGBAKQOTZ2b3Hee+FkV7jgO2Xwv+y6reHAdDES1rR7m7SaFTmqPYm+a8uK0
+        5NK+nXZzrwCBipLbrcyt8prypXktwzq8GUICfvwQ1g1vJDvUeuqOq3Y4kqGwYv9H
+        NldfnZKjoIxZis9/eZrwjmRoQu36gFYR2rdhIxjzH4EmcgAWu/tZozswOTAPBgNV
+        HQ8BAf8EBQMDAIAAMBEGA1UdDgQKBAiA4IML4dndEDATBgNVHSMEDDAKgAiHoMnY
+        nDxZUDAJBgcqhkjOOAQDAzAAMC0CFQCEXa1E2ueJ8WMX5nP1lCcBWhxC2wIUGUCB
+        b6M6Oj3NQAJbnZsdY63rKa0=
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/Readme.txt
new file mode 100644
index 0000000..75f3179
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/Readme.txt
@@ -0,0 +1,21 @@
+Sample XML Signatures[1] using the XPath Filter 2.0[2]
+
+[1] http://www.w3.org/TR/xmldsig-core/
+[2] http://www.w3.org/TR/xmldsig-filter2/
+
+First, the last example from the spec:
+
+  signature.tmpl - A basic signature template
+  signature.xml - The signature
+  signature-c14n-*.txt - C14n output
+
+Next, John Boyer's example (for performance testing):
+
+  sign-xfdl.tmpl - The signature template
+  sign-xfdl.xml - The signature
+  sign-xfdl-c14n-*.txt - C14n output
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Wednesday, May 8, 2002
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl-c14n-0.txt
new file mode 100644
index 0000000..dea89da
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl-c14n-0.txt
@@ -0,0 +1,3986 @@
+<XFDL version="4.0.1">
+	<vfd_title>SF71</vfd_title>
+	<vfd_author>Thomas Mohr</vfd_author>
+	<vfd_revision>4/6/98</vfd_revision>
+	<vfd_date>4/6/98</vfd_date>
+	<saveformat>application/x-xfdl</saveformat>
+	<transmitformat>application/x-xfdl</transmitformat>
+	<formid content="array">
+		<version>1.0.0</version>
+	</formid>
+	<page sid="PAGE1">
+		<vfd_pagesize>letter</vfd_pagesize>
+		<vfd_pagedpi>120</vfd_pagedpi>
+		<vfd_printsize>8.0;10.5</vfd_printsize>
+		<label>PAGE1</label>
+		<bgcolor content="array">
+			<ae>235</ae>
+			<ae>235</ae>
+			<ae>235</ae>
+		</bgcolor>
+		<fontinfo content="array">
+			<ae>Courier</ae>
+			<ae>9</ae>
+			<ae>plain</ae>
+		</fontinfo>
+		<label sid="LABEL1">
+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>14</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+			<size content="array">
+				<ae>61</ae>
+				<ae>1</ae>
+			</size>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>3</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>874</ae>
+					<ae>34</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>1.  NAME</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>100</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>218</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Last, First, Middle Initial)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>385</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>85</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>3.  ORGANIZATION</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>248</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>4.  TYPE OF LEAVE/ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>32</ae>
+					<ae>155</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>236</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Check appropriate box(es) below.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>270</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Date</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>352</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Time</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>513</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>134</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>Total
+Hours</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>186</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accrued Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>232</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Restored Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>278</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>323</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accured Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>368</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>409</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Purpose:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>410</ae>
+				</ae>
+			</itemlocation>
+			<value>Medical/dental/optical Examination of requesting employee</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>45</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>535</ae>
+					<ae>410</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>46</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>Other</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>435</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>439</ae>
+					<ae>42</ae>
+				</ae>
+			</itemlocation>
+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>204</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Compensatory Time Off</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>535</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>180</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Other Paid Absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>556</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>158</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>(Specify in Remarks)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>593</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Leave Without Pay</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>676</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>677</ae>
+					<ae>183</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>214</ae>
+					<ae>126</ae>
+				</ae>
+			</itemlocation>
+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL30">
+			<value>I hereby invoke my</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>700</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>191</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL31">
+			<value>entitlement Family and</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>342</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>216</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL32">
+			<value>Medical Leave for:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>364</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>403</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>181</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Birth/Adoption/Foster Care</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>426</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>182</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>483</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>184</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Health Condition of Self</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>537</ae>
+				</ae>
+			</itemlocation>
+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>26</ae>
+				<ae>5</ae>
+			</size>
+		</label>
+		<label sid="LABEL37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>630</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>6.  REMARKS:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>7.  CERTIFICATION:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>178</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>715</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>767</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>66</ae>
+				</ae>
+			</itemlocation>
+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>230</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>EMPLOYEE SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>877</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>335</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>8.  OFFICAL ACTION ON REQUEST:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>897</ae>
+				</ae>
+			</itemlocation>
+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>53</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>388</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>APPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>638</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>DISAPPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>941</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>112</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL49">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>970</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>PRIVACY ACT STATEMENT</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL50">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>996</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>134</ae>
+				</ae>
+			</itemlocation>
+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL51">
+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>7</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1140</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>875</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL52">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>422</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL53">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>438</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>454</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<justify>right</justify>
+		</label>
+		<line sid="LINE1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>82</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>218</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>263</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>311</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>354</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>398</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>530</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>578</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>626</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>743</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>867</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>967</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>1164</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>51</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>892</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>265</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>673</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>494</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>591</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<field sid="FIELD1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>489</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>John Q. Public</value>
+		</field>
+		<field sid="FIELD2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>537</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>123</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>123456789</value>
+		</field>
+		<field sid="FIELD3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>109</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>872</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>PureEdge Solutions Inc.</value>
+		</field>
+		<check sid="CHECK1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>191</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>277</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>367</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>438</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>519</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>495</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD32">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>591</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>680</ae>
+					<ae>326</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<check sid="CHECK13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>404</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>428</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>485</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<field sid="FIELD44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>657</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>57</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK10.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<value></value>
+		</field>
+		<field sid="FIELD45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>712</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>31</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK8.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK8.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<value></value>
+		</field>
+		<button sid="BUTTON1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>250</ae>
+					<ae>839</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>346</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE1</signature>
+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<borderwidth>0</borderwidth>
+			<signitemrefs content="array">
+				<ae>omit</ae>
+				<ae>PAGE1.CHECK16</ae>
+				<ae>PAGE1.CHECK17</ae>
+				<ae>PAGE1.FIELD47</ae>
+				<ae>PAGE1.BUTTON2</ae>
+				<ae>SIGNATURE2</ae>
+				<ae>PAGE1.FIELD48</ae>
+			</signitemrefs>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<value content="compute">
+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+		</button>
+                
+		<field sid="FIELD46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>655</ae>
+					<ae>840</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval>05-08-02</cval>
+				<compute>
+					(BUTTON1.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		
+		
+		
+		
+		
+		<spacer sid="vfd_spacer">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>960</ae>
+					<ae>1260</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</spacer>
+	</page>
+</XFDL>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.tmpl b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.tmpl
new file mode 100644
index 0000000..0dde99b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.tmpl
@@ -0,0 +1,4151 @@
+<?xml version="1.0"?>
+<XFDL version="4.0.1">
+	<vfd_title>SF71</vfd_title>
+	<vfd_author>Thomas Mohr</vfd_author>
+	<vfd_revision>4/6/98</vfd_revision>
+	<vfd_date>4/6/98</vfd_date>
+	<saveformat>application/x-xfdl</saveformat>
+	<transmitformat>application/x-xfdl</transmitformat>
+	<formid content="array">
+		<version>1.0.0</version>
+	</formid>
+	<page sid="PAGE1">
+		<vfd_pagesize>letter</vfd_pagesize>
+		<vfd_pagedpi>120</vfd_pagedpi>
+		<vfd_printsize>8.0;10.5</vfd_printsize>
+		<label>PAGE1</label>
+		<bgcolor content="array">
+			<ae>235</ae>
+			<ae>235</ae>
+			<ae>235</ae>
+		</bgcolor>
+		<fontinfo content="array">
+			<ae>Courier</ae>
+			<ae>9</ae>
+			<ae>plain</ae>
+		</fontinfo>
+		<label sid="LABEL1">
+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>14</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+			<size content="array">
+				<ae>61</ae>
+				<ae>1</ae>
+			</size>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>3</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>874</ae>
+					<ae>34</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>1.  NAME</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>100</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>218</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Last, First, Middle Initial)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>385</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>85</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>3.  ORGANIZATION</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>248</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>4.  TYPE OF LEAVE/ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>32</ae>
+					<ae>155</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>236</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Check appropriate box(es) below.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>270</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Date</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>352</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Time</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>513</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>134</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>Total
+Hours</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>186</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accrued Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>232</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Restored Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>278</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>323</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accured Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>368</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>409</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Purpose:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>410</ae>
+				</ae>
+			</itemlocation>
+			<value>Medical/dental/optical Examination of requesting employee</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>45</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>535</ae>
+					<ae>410</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>46</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>Other</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>435</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>439</ae>
+					<ae>42</ae>
+				</ae>
+			</itemlocation>
+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>204</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Compensatory Time Off</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>535</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>180</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Other Paid Absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>556</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>158</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>(Specify in Remarks)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>593</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Leave Without Pay</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>676</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>677</ae>
+					<ae>183</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>214</ae>
+					<ae>126</ae>
+				</ae>
+			</itemlocation>
+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL30">
+			<value>I hereby invoke my</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>700</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>191</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL31">
+			<value>entitlement Family and</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>342</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>216</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL32">
+			<value>Medical Leave for:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>364</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>403</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>181</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Birth/Adoption/Foster Care</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>426</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>182</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>483</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>184</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Health Condition of Self</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>537</ae>
+				</ae>
+			</itemlocation>
+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>26</ae>
+				<ae>5</ae>
+			</size>
+		</label>
+		<label sid="LABEL37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>630</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>6.  REMARKS:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>7.  CERTIFICATION:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>178</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>715</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>767</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>66</ae>
+				</ae>
+			</itemlocation>
+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>230</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>EMPLOYEE SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>877</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>335</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>8.  OFFICAL ACTION ON REQUEST:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>897</ae>
+				</ae>
+			</itemlocation>
+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>53</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>388</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>APPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>638</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>DISAPPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>941</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>112</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL49">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>970</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>PRIVACY ACT STATEMENT</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL50">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>996</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>134</ae>
+				</ae>
+			</itemlocation>
+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL51">
+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>7</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1140</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>875</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL52">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>422</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL53">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>438</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>454</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<justify>right</justify>
+		</label>
+		<line sid="LINE1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>82</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>218</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>263</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>311</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>354</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>398</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>530</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>578</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>626</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>743</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>867</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>967</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>1164</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>51</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>892</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>265</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>673</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>494</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>591</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<field sid="FIELD1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>489</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>John Q. Public</value>
+		</field>
+		<field sid="FIELD2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>537</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>123</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>123456789</value>
+		</field>
+		<field sid="FIELD3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>109</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>872</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>PureEdge Solutions Inc.</value>
+		</field>
+		<check sid="CHECK1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>191</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>277</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>367</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>438</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>519</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>495</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD32">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>591</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>680</ae>
+					<ae>326</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<check sid="CHECK13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>404</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>428</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>485</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<field sid="FIELD44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>657</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>57</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK10.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<value></value>
+		</field>
+		<field sid="FIELD45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>712</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>31</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK8.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK8.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<value></value>
+		</field>
+		<button sid="BUTTON1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>250</ae>
+					<ae>839</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>346</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE1</signature>
+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<borderwidth>0</borderwidth>
+			<signitemrefs content="array">
+				<ae>omit</ae>
+				<ae>PAGE1.CHECK16</ae>
+				<ae>PAGE1.CHECK17</ae>
+				<ae>PAGE1.FIELD47</ae>
+				<ae>PAGE1.BUTTON2</ae>
+				<ae>SIGNATURE2</ae>
+				<ae>PAGE1.FIELD48</ae>
+			</signitemrefs>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<value content="compute">
+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+		</button>
+                <Signature Id="SIGNATURE1" xmlns="http://www.w3.org/2000/09/xmldsig#">
+                  <SignedInfo>
+                    <CanonicalizationMethod Algorithm="" />
+                    <SignatureMethod Algorithm="" />
+                    <Reference URI="">
+                      <Transforms>
+                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+                        <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+                          <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
+                            /XFDL/page[@sid="PAGE1"]/*[@sid="CHECK16" or @sid="CHECK17" or @sid="FIELD47" or @sid="BUTTON2" or @sid="FIELD48"] |
+                            /XFDL/page/*/triggeritem
+                          </XPath>
+                        </Transform>
+                      </Transforms>
+                      <DigestMethod Algorithm="" />
+                      <DigestValue />
+                    </Reference>
+                  </SignedInfo>
+                  <SignatureValue />
+                  <!-- KeyInfo -->
+                </Signature>
+		<field sid="FIELD46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>655</ae>
+					<ae>840</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval>05-08-02</cval>
+				<compute>
+					(BUTTON1.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<check sid="CHECK16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>362</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK17.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value></value>
+		</check>
+		<check sid="CHECK17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>604</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK16.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value></value>
+		</check>
+		<field sid="FIELD47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>917</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>770</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<Format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK17.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</Format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK17.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<borderwidth>0</borderwidth>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<value></value>
+		</field>
+		<button sid="BUTTON2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>132</ae>
+					<ae>939</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>466</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE2</signature>
+			<signer></signer>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<value content="compute">
+				<cval></cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+			<borderwidth>0</borderwidth>
+		</button>
+		<field sid="FIELD48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>656</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval></cval>
+				<compute>
+					(BUTTON2.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<spacer sid="vfd_spacer">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>960</ae>
+					<ae>1260</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</spacer>
+	</page>
+</XFDL>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.xml
new file mode 100644
index 0000000..f467550
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.xml
@@ -0,0 +1,4227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XFDL version="4.0.1">
+	<vfd_title>SF71</vfd_title>
+	<vfd_author>Thomas Mohr</vfd_author>
+	<vfd_revision>4/6/98</vfd_revision>
+	<vfd_date>4/6/98</vfd_date>
+	<saveformat>application/x-xfdl</saveformat>
+	<transmitformat>application/x-xfdl</transmitformat>
+	<formid content="array">
+		<version>1.0.0</version>
+	</formid>
+	<page sid="PAGE1">
+		<vfd_pagesize>letter</vfd_pagesize>
+		<vfd_pagedpi>120</vfd_pagedpi>
+		<vfd_printsize>8.0;10.5</vfd_printsize>
+		<label>PAGE1</label>
+		<bgcolor content="array">
+			<ae>235</ae>
+			<ae>235</ae>
+			<ae>235</ae>
+		</bgcolor>
+		<fontinfo content="array">
+			<ae>Courier</ae>
+			<ae>9</ae>
+			<ae>plain</ae>
+		</fontinfo>
+		<label sid="LABEL1">
+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>14</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+			<size content="array">
+				<ae>61</ae>
+				<ae>1</ae>
+			</size>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>3</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>874</ae>
+					<ae>34</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>1.  NAME</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>100</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>218</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Last, First, Middle Initial)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>385</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>85</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>3.  ORGANIZATION</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>248</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>4.  TYPE OF LEAVE/ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>32</ae>
+					<ae>155</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>236</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Check appropriate box(es) below.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>270</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Date</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>352</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Time</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>513</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>134</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>Total
+Hours</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>186</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accrued Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>232</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Restored Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>278</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>323</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accured Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>368</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>409</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Purpose:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>410</ae>
+				</ae>
+			</itemlocation>
+			<value>Medical/dental/optical Examination of requesting employee</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>45</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>535</ae>
+					<ae>410</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>46</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>Other</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>435</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>439</ae>
+					<ae>42</ae>
+				</ae>
+			</itemlocation>
+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>204</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Compensatory Time Off</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>535</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>180</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Other Paid Absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>556</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>158</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>(Specify in Remarks)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>593</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Leave Without Pay</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>676</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>677</ae>
+					<ae>183</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>214</ae>
+					<ae>126</ae>
+				</ae>
+			</itemlocation>
+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL30">
+			<value>I hereby invoke my</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>700</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>191</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL31">
+			<value>entitlement Family and</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>342</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>216</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL32">
+			<value>Medical Leave for:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>364</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>403</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>181</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Birth/Adoption/Foster Care</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>426</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>182</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>483</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>184</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Health Condition of Self</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>537</ae>
+				</ae>
+			</itemlocation>
+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>26</ae>
+				<ae>5</ae>
+			</size>
+		</label>
+		<label sid="LABEL37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>630</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>6.  REMARKS:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>7.  CERTIFICATION:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>178</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>715</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>767</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>66</ae>
+				</ae>
+			</itemlocation>
+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>230</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>EMPLOYEE SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>877</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>335</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>8.  OFFICAL ACTION ON REQUEST:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>897</ae>
+				</ae>
+			</itemlocation>
+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>53</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>388</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>APPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>638</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>DISAPPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>941</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>112</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL49">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>970</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>PRIVACY ACT STATEMENT</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL50">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>996</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>134</ae>
+				</ae>
+			</itemlocation>
+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL51">
+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>7</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1140</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>875</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL52">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>422</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL53">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>438</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>454</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<justify>right</justify>
+		</label>
+		<line sid="LINE1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>82</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>218</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>263</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>311</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>354</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>398</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>530</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>578</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>626</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>743</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>867</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>967</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>1164</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>51</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>892</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>265</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>673</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>494</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>591</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<field sid="FIELD1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>489</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>John Q. Public</value>
+		</field>
+		<field sid="FIELD2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>537</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>123</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>123456789</value>
+		</field>
+		<field sid="FIELD3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>109</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>872</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>PureEdge Solutions Inc.</value>
+		</field>
+		<check sid="CHECK1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>191</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>277</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>367</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>438</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>519</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>495</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD32">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>591</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>680</ae>
+					<ae>326</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<check sid="CHECK13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>404</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value />
+		</check>
+		<check sid="CHECK14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>428</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value />
+		</check>
+		<check sid="CHECK15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>485</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value />
+		</check>
+		<field sid="FIELD44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>657</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>57</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK10.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<value />
+		</field>
+		<field sid="FIELD45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>712</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>31</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK8.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK8.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<value />
+		</field>
+		<button sid="BUTTON1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>250</ae>
+					<ae>839</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>346</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE1</signature>
+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<borderwidth>0</borderwidth>
+			<signitemrefs content="array">
+				<ae>omit</ae>
+				<ae>PAGE1.CHECK16</ae>
+				<ae>PAGE1.CHECK17</ae>
+				<ae>PAGE1.FIELD47</ae>
+				<ae>PAGE1.BUTTON2</ae>
+				<ae>SIGNATURE2</ae>
+				<ae>PAGE1.FIELD48</ae>
+			</signitemrefs>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<value content="compute">
+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+		</button>
+                <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="SIGNATURE1">
+                  <SignedInfo>
+                    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+                    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+                    <Reference URI="">
+                      <Transforms>
+                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+                        <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+                          <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
+                            /XFDL/page[@sid="PAGE1"]/*[@sid="CHECK16" or @sid="CHECK17" or @sid="FIELD47" or @sid="BUTTON2" or @sid="FIELD48"] |
+                            /XFDL/page/*/triggeritem
+                          </XPath>
+                        </Transform>
+                      </Transforms>
+                      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+                      <DigestValue>xtHvgrYCYiWUtvgbaA6yx4fY4hI=</DigestValue>
+                    </Reference>
+                  </SignedInfo>
+                  <SignatureValue>
+                    OizUQl+uqgV2nDIogC/Rip5va1xGY8Um+pKGvIK2rlMrhUQVcBfgiQ==
+                  </SignatureValue>
+                  <KeyInfo>
+                    <KeyValue>
+                      <DSAKeyValue>
+                        <P>
+                          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+                          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+                          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+                        </P>
+                        <Q>
+                          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+                        </Q>
+                        <G>
+                          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+                          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+                          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+                        </G>
+                        <Y>
+                          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+                          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+                          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+                        </Y>
+                      </DSAKeyValue>
+                    </KeyValue>
+                    <X509Data>
+                      <X509SubjectName>
+                        CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+                      </X509SubjectName>
+                      <X509IssuerSerial>
+                        <X509IssuerName>
+                          CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+                        </X509IssuerName>
+                        <X509SerialNumber>1017788370348</X509SerialNumber>
+                      </X509IssuerSerial>
+                      <X509Certificate>
+                        MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                        MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+                        czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+                        Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+                        8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+                        MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+                        YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+                        2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+                        A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+                        4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+                        R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+                        ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+                        lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+                        Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+                      </X509Certificate>
+                      <X509Certificate>
+                        MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                        MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                        MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+                        3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+                        0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+                        w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+                        nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+                        t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+                        451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+                        PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+                        NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+                        4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+                        MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+                        gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+                      </X509Certificate>
+                    </X509Data>
+                  </KeyInfo>
+                </Signature>
+		<field sid="FIELD46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>655</ae>
+					<ae>840</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval>05-08-02</cval>
+				<compute>
+					(BUTTON1.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<check sid="CHECK16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>362</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval />
+				<compute>
+					(CHECK17.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value />
+		</check>
+		<check sid="CHECK17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>604</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval />
+				<compute>
+					(CHECK16.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value />
+		</check>
+		<field sid="FIELD47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>917</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>770</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<Format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK17.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</Format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK17.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<borderwidth>0</borderwidth>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<value />
+		</field>
+		<button sid="BUTTON2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>132</ae>
+					<ae>939</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>466</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE2</signature>
+			<signer />
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<value content="compute">
+				<cval />
+				<compute>
+					signer
+				</compute>
+			</value>
+			<borderwidth>0</borderwidth>
+		</button>
+		<field sid="FIELD48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>656</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval />
+				<compute>
+					(BUTTON2.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<spacer sid="vfd_spacer">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>960</ae>
+					<ae>1260</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</spacer>
+	</page>
+</XFDL>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature-c14n-0.txt
new file mode 100644
index 0000000..6b9358f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature-c14n-0.txt
@@ -0,0 +1,11 @@
+<ToBeSigned>
+    
+    <Data></Data>
+    <ReallyToBeSigned>
+        
+        <Data></Data>
+      </ReallyToBeSigned>
+  </ToBeSigned><ToBeSigned>
+    <Data></Data>
+    
+  </ToBeSigned>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature-c14n-1.txt
new file mode 100644
index 0000000..df204ac
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature-c14n-1.txt
@@ -0,0 +1,11 @@
+<ToBeSigned>
+    <!-- comment -->
+    <Data></Data>
+    <ReallyToBeSigned>
+        <!-- comment -->
+        <Data></Data>
+      </ReallyToBeSigned>
+  </ToBeSigned><ToBeSigned>
+    <Data></Data>
+    
+  </ToBeSigned>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.tmpl b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.tmpl
new file mode 100644
index 0000000..7a38632
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.tmpl
@@ -0,0 +1,69 @@
+<Document>
+  <ToBeSigned>
+    <!-- comment -->
+    <Data></Data>
+    <NotToBeSigned>
+      <ReallyToBeSigned>
+        <!-- comment -->
+        <Data></Data>
+      </ReallyToBeSigned>
+    </NotToBeSigned>
+  </ToBeSigned>
+  <ToBeSigned>
+    <Data></Data>
+    <NotToBeSigned>
+      <Data></Data>
+    </NotToBeSigned>
+  </ToBeSigned>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="" />
+      <SignatureMethod Algorithm="" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
+              //ToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
+              //NotToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
+              //ReallyToBeSigned
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="" />
+        <DigestValue />
+      </Reference>
+      <Reference URI="#xpointer(/)">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
+              //ToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
+              //NotToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
+              //ReallyToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+        </Transforms>
+        <DigestMethod Algorithm="" />
+        <DigestValue />
+      </Reference>
+    </SignedInfo>
+    <SignatureValue />
+    <!-- key info -->
+  </Signature>
+</Document>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.xml
new file mode 100644
index 0000000..515afcb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/signature.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Document>
+  <ToBeSigned>
+    <!-- comment -->
+    <Data />
+    <NotToBeSigned>
+      <ReallyToBeSigned>
+        <!-- comment -->
+        <Data />
+      </ReallyToBeSigned>
+    </NotToBeSigned>
+  </ToBeSigned>
+  <ToBeSigned>
+    <Data />
+    <NotToBeSigned>
+      <Data />
+    </NotToBeSigned>
+  </ToBeSigned>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
+              //ToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
+              //NotToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
+              //ReallyToBeSigned
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>p6/HaYIdxbEdYX8/8zNfjED4H5Y=</DigestValue>
+      </Reference>
+      <Reference URI="#xpointer(/)">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
+              //ToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
+              //NotToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
+              //ReallyToBeSigned
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>0NrSQ4ldmHPqAt4xeiv1LW+VgIA=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      Trdgh0rotnT1pRLA69YjMmJUfoCAUnb9gj5HmKTNA4D69LKMOojHfg==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </P>
+          <Q>
+            hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+          </Q>
+          <G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </G>
+          <Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+      <X509Data>
+        <X509SubjectName>
+          CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509SubjectName>
+        <X509IssuerSerial>
+          <X509IssuerName>
+            CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509IssuerName>
+          <X509SerialNumber>1017788370348</X509SerialNumber>
+        </X509IssuerSerial>
+        <X509Certificate>
+          MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+          czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+          Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+          8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+          MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+          YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+          2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+          A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+          4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+          R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+          ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+          lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+          Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+        </X509Certificate>
+        <X509Certificate>
+          MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+          3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+          0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+          w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+          nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+          t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+          451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+          PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+          NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+          4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+          MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+          gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+        </X509Certificate>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</Document>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/Readme.txt
new file mode 100644
index 0000000..f9225c1
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/Readme.txt
@@ -0,0 +1,22 @@
+Example Signature[1]
+
+[1] http://www.w3.org/Signature/Drafts/xmldsig-core/Overview.html
+
+See signature.xml
+
+This includes internal and external base 64, references of the forms
+"", "#xpointer(/)", "#foo" and "#xpointer(id('foo'))" (with and
+without comments), manifests, signature properties, simple xpath
+with here(), xslt, retrieval method and odd interreferential
+dependencies.
+
+Included in the directory are:
+
+  signature.xml - The signature itself
+  signature.tmpl - The template from which the signature was created
+  c14n-*.txt - All intermediate c14n output
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Tuesday, April 10, 2001
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/bad-signature.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/bad-signature.xml
new file mode 100644
index 0000000..1fe5d53
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/bad-signature.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Envelope [
+  <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+  <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+  <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+  <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+  <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<!-- Preamble -->
+<Envelope xmlns:foo="http://www.usps.gov/foo" xmlns="http://www.usps.gov/">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="signature">
+      <SignedInfo>
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>DkRNHKuQgDiTy9XAAMGbyydg3BI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>X9dMPL0KeDZXh9GE3vLcOtPsYjI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>7tHLZrC0kqOhPCiYu/WusgG4tBo=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>ar0/7EQyRfUZmrPPcTQFdVCt2PY=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>1puYWb36Z5TIDmEIVd/JLR3iD8Y=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>MMtXLCswiEDurKMgg2r+vBPlk8Q=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>7eI/P8mppgkqXqW0+at2UGj06qs=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+        </Reference>
+      </SignedInfo>
+      <SignatureValue>
+        SiMb9su56spmMlNjrWWKdkgj1hDhveaWCx5Bwpj5AuJ6T3Zy68NJ/A==
+      </SignatureValue>
+      <KeyInfo>
+        <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#X509Data" URI="#object-4">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:X509Data
+              </XPath>
+            </Transform>
+          </Transforms>
+        </RetrievalMethod>
+      </KeyInfo>
+      <Object Id="object-1" MimeType="text/plain">I am the bad text.</Object>
+      <Object Encoding="http://www.w3.org/2000/09/xmldsig#base64" Id="object-2" MimeType="text/plain">BADSSBhbSB0aGUgdGV4dC4=</Object>
+      <Object Id="object-3">
+        <NonCommentandus xmlns=""><!-- BAD Commentandum --></NonCommentandus>
+      </Object>
+      <Object>
+        <Manifest Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
+          <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+                <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict" exclude-result-prefixes="foo" version="1.0">
+                  <xsl:output encoding="UTF-8" indent="no" method="xml" />
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name" />
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>c7wq5XKos6RqNVJyFy7/fl6+sAs=</DigestValue>
+          </Reference>
+        </Manifest>
+      </Object>
+      <Object>
+        <SignatureProperties Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
+      </Object>
+      <Object Id="object-4">
+        <X509Data>
+          <X509SubjectName>
+            CN=Merlin Hughes,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+          </X509SubjectName>
+          <X509IssuerSerial>
+            <X509IssuerName>
+              CN=Test DSA CA,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+            </X509IssuerName>
+            <X509SerialNumber>970849936</X509SerialNumber>
+          </X509IssuerSerial>
+          <X509Certificate>
+            MIIDNzCCAvWgAwIBAgIEOd3+kDAJBgcqhkjOOAQDMFsxCzAJBgNVBAYTAklFMQ8w
+            DQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMs
+            IEx0ZC4xFDASBgNVBAMTC1Rlc3QgRFNBIENBMB4XDTAwMTAwNjE2MzIxNVoXDTAx
+            MTAwNjE2MzIxNFowXTELMAkGA1UEBhMCSUUxDzANBgNVBAgTBkR1YmxpbjElMCMG
+            A1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLjEWMBQGA1UEAxMNTWVy
+            bGluIEh1Z2hlczCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQDaJjfDTrawMHf8MiUt
+            Y54b37hSmYNnR3KpGT10uU1Dqppcju06uN0iGbqf947DjkBC25hKnqykK31xBw0E
+            CPbYq/KC98kghdf2xJCu6B8aqJ95K9jdVflJ3WP7PQxJn+fmM23zy6HYLXVICpfq
+            etdNj/VHCShZE3bdJiE6VobSFQIVAPQecqS2PaTDprcQnkwx4MHTRXhrAoGAMuGA
+            lqeB1ax+vyO2+Osubjhl7pHxLu47RIH+/M52DjESA9KMSrwzsYx8yNR2WooByrE0
+            t6fu0VncK7UK8olO4t7wpv2z4AFQPRVCKFwo0qgn5aKIkICGMlrRy81avb27wGcW
+            othx3iPPMtFXtoDqK0JItaI9R8zc1msFhM1GKMYDgYQAAoGActA8YGxrtngg/zKV
+            vqEOefnwmViFztcnPBYPlJsvh6yKI4iDm68fnp4Mi3RrJ6bZAygFrUIQLxLjV+OJ
+            tgJAEto0xAs+Mehuq1DkSFEpP3oDzCTOsrOiS1DwQe4oIb7zVk/9l7aPtJMHW0LV
+            lMdwZNFNNJoqMcT2ZfCPrfvYvQ2jRzBFMB4GA1UdEQQXMBWBE21lcmxpbkBiYWx0
+            aW1vcmUuaWUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdIwQMMAqACEJZQG0KwRbPMAkG
+            ByqGSM44BAMDMQAwLgIVAK4skWEFYgrggaJA8vYAwSjg12+KAhUAwHTo7wd4tENw
+            9LAKPklQ/74fH18=
+          </X509Certificate>
+        </X509Data>
+      </Object>
+    </Signature>
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T." />
+    <Notary name="Hun, A. T." />
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-0.txt
new file mode 100644
index 0000000..013de33
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-0.txt
@@ -0,0 +1 @@
+I am the text.
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-1.txt
new file mode 100644
index 0000000..90ba86d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-1.txt
@@ -0,0 +1,5 @@
+<SignatureProperties xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-10.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-10.txt
new file mode 100644
index 0000000..12d4650
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-10.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="reference-1" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7eI/P8mppgkqXqW0+at2UGj06qs=</DigestValue>
+        </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-11.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-11.txt
new file mode 100644
index 0000000..b1fe2b7
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-11.txt
@@ -0,0 +1,40 @@
+<Manifest xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
+          <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+                <xsl:stylesheet xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="foo" version="1.0">
+                  <xsl:output encoding="UTF-8" indent="no" method="xml"></xsl:output>
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name"></xsl:value-of>
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></Transform>
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>c7wq5XKos6RqNVJyFy7/fl6+sAs=</DigestValue>
+          </Reference>
+        </Manifest>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-12.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-12.txt
new file mode 100644
index 0000000..49da817
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-12.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="reference-2" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+        </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-13.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-13.txt
new file mode 100644
index 0000000..b0f0973
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-13.txt
@@ -0,0 +1,15 @@
+<!-- Preamble -->
+<Envelope xmlns="http://www.usps.gov/" xmlns:foo="http://www.usps.gov/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-14.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-14.txt
new file mode 100644
index 0000000..75f95ce
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-14.txt
@@ -0,0 +1,13 @@
+<Envelope xmlns="http://www.usps.gov/" xmlns:foo="http://www.usps.gov/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-15.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-15.txt
new file mode 100644
index 0000000..75f95ce
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-15.txt
@@ -0,0 +1,13 @@
+<Envelope xmlns="http://www.usps.gov/" xmlns:foo="http://www.usps.gov/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-16.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-16.txt
new file mode 100644
index 0000000..75f95ce
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-16.txt
@@ -0,0 +1,13 @@
+<Envelope xmlns="http://www.usps.gov/" xmlns:foo="http://www.usps.gov/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-17.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-17.txt
new file mode 100644
index 0000000..063bec2
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-17.txt
@@ -0,0 +1,109 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo">
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>X9dMPL0KeDZXh9GE3vLcOtPsYjI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7tHLZrC0kqOhPCiYu/WusgG4tBo=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>ar0/7EQyRfUZmrPPcTQFdVCt2PY=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>1puYWb36Z5TIDmEIVd/JLR3iD8Y=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>MMtXLCswiEDurKMgg2r+vBPlk8Q=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7eI/P8mppgkqXqW0+at2UGj06qs=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+        </Reference>
+      </SignedInfo><Notaries xmlns:foo="http://www.usps.gov/foo" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-18.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-18.txt
new file mode 100644
index 0000000..42af5d7
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-18.txt
@@ -0,0 +1,124 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo">
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>DkRNHKuQgDiTy9XAAMGbyydg3BI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>X9dMPL0KeDZXh9GE3vLcOtPsYjI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7tHLZrC0kqOhPCiYu/WusgG4tBo=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>ar0/7EQyRfUZmrPPcTQFdVCt2PY=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>1puYWb36Z5TIDmEIVd/JLR3iD8Y=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>MMtXLCswiEDurKMgg2r+vBPlk8Q=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7eI/P8mppgkqXqW0+at2UGj06qs=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+        </Reference>
+      </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-2.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-2.txt
new file mode 100644
index 0000000..53652af
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-2.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="object-3">
+        <NonCommentandus xmlns=""></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-3.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-3.txt
new file mode 100644
index 0000000..53652af
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-3.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="object-3">
+        <NonCommentandus xmlns=""></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-4.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-4.txt
new file mode 100644
index 0000000..53652af
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-4.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="object-3">
+        <NonCommentandus xmlns=""></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-5.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-5.txt
new file mode 100644
index 0000000..584be8e
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-5.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="object-3">
+        <NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-6.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-6.txt
new file mode 100644
index 0000000..ac4ea65
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-6.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-7.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-7.txt
new file mode 100644
index 0000000..6ef607b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-7.txt
@@ -0,0 +1,4 @@
+<Notaries xmlns:foo="http://www.usps.gov/foo" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-8.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-8.txt
new file mode 100644
index 0000000..5f52f66
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-8.txt
@@ -0,0 +1 @@
+<html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><title>Notaries</title></head><body><table><tr><th>Great, A. T.</th></tr><tr><th>Hun, A. T.</th></tr></table></body></html>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-9.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-9.txt
new file mode 100644
index 0000000..12d4650
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/c14n-9.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://www.usps.gov/foo" Id="reference-1" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7eI/P8mppgkqXqW0+at2UGj06qs=</DigestValue>
+        </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.tmpl b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.tmpl
new file mode 100644
index 0000000..905bc7f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.tmpl
@@ -0,0 +1,245 @@
+<?xml version="1.0"?>
+<!DOCTYPE envelope [
+  <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+  <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+  <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+  <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+  <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<!-- Preamble -->
+<Envelope xmlns="http://www.usps.gov/" xmlns:foo="http://www.usps.gov/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    <Signature Id="signature" xmlns="&dsig;">
+      <SignedInfo>
+        <CanonicalizationMethod Algorithm="" />
+        <SignatureMethod Algorithm="" />
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+          <Transforms>
+            <Transform Algorithm="&dsig;base64" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-1" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&xpath;">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&xpath;">
+              <XPath xmlns:dsig="&dsig;">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-2" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&dsig;base64" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#manifest-1" Type="&dsig;Manifest">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#signature-properties-1" Type="&dsig;SignatureProperties">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-3" Type="&dsig;Object">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-3" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(id('object-3'))" Type="&dsig;Object">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(id('object-3'))" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#reference-2" Type="&dsig;Reference">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" URI="#manifest-reference-1" Type="&dsig;Reference">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" URI="#reference-1" Type="&dsig;Reference">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+      </SignedInfo>
+      <SignatureValue>aaaa</SignatureValue>
+      <KeyInfo>
+        <RetrievalMethod URI="#object-4" Type="&dsig;X509Data">
+          <Transforms>
+            <Transform Algorithm="&xpath;">
+              <XPath xmlns:dsig="&dsig;">
+                ancestor-or-self::dsig:X509Data
+              </XPath>
+            </Transform>
+          </Transforms>
+        </RetrievalMethod>
+      </KeyInfo>
+      <Object Id="object-1" MimeType="text/plain">I am the text.</Object>
+      <Object Id="object-2" MimeType="text/plain" Encoding="&dsig;base64">SSBhbSB0aGUgdGV4dC4=</Object>
+      <Object Id="object-3"><NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus></Object>
+      <Object>
+        <Manifest Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="" />
+            <DigestValue>aaaa</DigestValue>
+          </Reference>
+          <Reference URI="#reference-1" Type="&dsig;Reference">
+            <DigestMethod Algorithm="" />
+            <DigestValue>aaaa</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="&xslt;">
+                <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="foo">
+                  <xsl:output method="xml" indent="no" encoding="UTF-8"/>
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name"/>
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="&c14n;" />
+            </Transforms>
+            <DigestMethod Algorithm="" />
+            <DigestValue>aaaa</DigestValue>
+          </Reference>
+        </Manifest>
+      </Object>
+      <Object>
+        <SignatureProperties Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
+      </Object>
+      <Object Id="object-4">
+        <X509Data>
+          <X509SubjectName>
+            CN=Merlin Hughes,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+          </X509SubjectName>
+          <X509IssuerSerial>
+            <X509IssuerName>
+              CN=Test DSA CA,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+            </X509IssuerName>
+            <X509SerialNumber>970849936</X509SerialNumber>
+          </X509IssuerSerial>
+          <X509Certificate>
+            MIIDNzCCAvWgAwIBAgIEOd3+kDAJBgcqhkjOOAQDMFsxCzAJBgNVBAYTAklFMQ8w
+            DQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMs
+            IEx0ZC4xFDASBgNVBAMTC1Rlc3QgRFNBIENBMB4XDTAwMTAwNjE2MzIxNVoXDTAx
+            MTAwNjE2MzIxNFowXTELMAkGA1UEBhMCSUUxDzANBgNVBAgTBkR1YmxpbjElMCMG
+            A1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLjEWMBQGA1UEAxMNTWVy
+            bGluIEh1Z2hlczCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQDaJjfDTrawMHf8MiUt
+            Y54b37hSmYNnR3KpGT10uU1Dqppcju06uN0iGbqf947DjkBC25hKnqykK31xBw0E
+            CPbYq/KC98kghdf2xJCu6B8aqJ95K9jdVflJ3WP7PQxJn+fmM23zy6HYLXVICpfq
+            etdNj/VHCShZE3bdJiE6VobSFQIVAPQecqS2PaTDprcQnkwx4MHTRXhrAoGAMuGA
+            lqeB1ax+vyO2+Osubjhl7pHxLu47RIH+/M52DjESA9KMSrwzsYx8yNR2WooByrE0
+            t6fu0VncK7UK8olO4t7wpv2z4AFQPRVCKFwo0qgn5aKIkICGMlrRy81avb27wGcW
+            othx3iPPMtFXtoDqK0JItaI9R8zc1msFhM1GKMYDgYQAAoGActA8YGxrtngg/zKV
+            vqEOefnwmViFztcnPBYPlJsvh6yKI4iDm68fnp4Mi3RrJ6bZAygFrUIQLxLjV+OJ
+            tgJAEto0xAs+Mehuq1DkSFEpP3oDzCTOsrOiS1DwQe4oIb7zVk/9l7aPtJMHW0LV
+            lMdwZNFNNJoqMcT2ZfCPrfvYvQ2jRzBFMB4GA1UdEQQXMBWBE21lcmxpbkBiYWx0
+            aW1vcmUuaWUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdIwQMMAqACEJZQG0KwRbPMAkG
+            ByqGSM44BAMDMQAwLgIVAK4skWEFYgrggaJA8vYAwSjg12+KAhUAwHTo7wd4tENw
+            9LAKPklQ/74fH18=
+          </X509Certificate>
+        </X509Data>
+      </Object>
+    </Signature>
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries Id="notaries" xmlns="">
+    <Notary name="Great, A. T." />
+    <Notary name="Hun, A. T." />
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.xml
new file mode 100644
index 0000000..a7f277d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Envelope [
+  <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+  <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+  <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+  <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+  <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<!-- Preamble -->
+<Envelope xmlns:foo="http://www.usps.gov/foo" xmlns="http://www.usps.gov/">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="signature">
+      <SignedInfo>
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://xmldsig.pothole.com/xml-stylesheet.txt">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>DkRNHKuQgDiTy9XAAMGbyydg3BI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>X9dMPL0KeDZXh9GE3vLcOtPsYjI=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>7tHLZrC0kqOhPCiYu/WusgG4tBo=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zbVZy3ycg7CyFcPzNs0C6bA3qio=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>ar0/7EQyRfUZmrPPcTQFdVCt2PY=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>0aW4L0GoFzYUo4gyZSfoyZBhpuc=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>1puYWb36Z5TIDmEIVd/JLR3iD8Y=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>MMtXLCswiEDurKMgg2r+vBPlk8Q=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>7eI/P8mppgkqXqW0+at2UGj06qs=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+        </Reference>
+      </SignedInfo>
+      <SignatureValue>
+        SiMb9su56spmMlNjrWWKdkgj1hDhveaWCx5Bwpj5AuJ6T3Zy68NJ/A==
+      </SignatureValue>
+      <KeyInfo>
+        <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#X509Data" URI="#object-4">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:X509Data
+              </XPath>
+            </Transform>
+          </Transforms>
+        </RetrievalMethod>
+      </KeyInfo>
+      <Object Id="object-1" MimeType="text/plain">I am the text.</Object>
+      <Object Encoding="http://www.w3.org/2000/09/xmldsig#base64" Id="object-2" MimeType="text/plain">SSBhbSB0aGUgdGV4dC4=</Object>
+      <Object Id="object-3">
+        <NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus>
+      </Object>
+      <Object>
+        <Manifest Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
+          <Reference Type="http://www.w3.org/2000/09/xmldsig#Reference" URI="#reference-1">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>l/bqIouk6Gs8eEjG0Tad0MJJgWw=</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+                <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict" exclude-result-prefixes="foo" version="1.0">
+                  <xsl:output encoding="UTF-8" indent="no" method="xml" />
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name" />
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>c7wq5XKos6RqNVJyFy7/fl6+sAs=</DigestValue>
+          </Reference>
+        </Manifest>
+      </Object>
+      <Object>
+        <SignatureProperties Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
+      </Object>
+      <Object Id="object-4">
+        <X509Data>
+          <X509SubjectName>
+            CN=Merlin Hughes,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+          </X509SubjectName>
+          <X509IssuerSerial>
+            <X509IssuerName>
+              CN=Test DSA CA,O=Baltimore Technologies\, Ltd.,ST=Dublin,C=IE
+            </X509IssuerName>
+            <X509SerialNumber>970849936</X509SerialNumber>
+          </X509IssuerSerial>
+          <X509Certificate>
+            MIIDNzCCAvWgAwIBAgIEOd3+kDAJBgcqhkjOOAQDMFsxCzAJBgNVBAYTAklFMQ8w
+            DQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMs
+            IEx0ZC4xFDASBgNVBAMTC1Rlc3QgRFNBIENBMB4XDTAwMTAwNjE2MzIxNVoXDTAx
+            MTAwNjE2MzIxNFowXTELMAkGA1UEBhMCSUUxDzANBgNVBAgTBkR1YmxpbjElMCMG
+            A1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLjEWMBQGA1UEAxMNTWVy
+            bGluIEh1Z2hlczCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQDaJjfDTrawMHf8MiUt
+            Y54b37hSmYNnR3KpGT10uU1Dqppcju06uN0iGbqf947DjkBC25hKnqykK31xBw0E
+            CPbYq/KC98kghdf2xJCu6B8aqJ95K9jdVflJ3WP7PQxJn+fmM23zy6HYLXVICpfq
+            etdNj/VHCShZE3bdJiE6VobSFQIVAPQecqS2PaTDprcQnkwx4MHTRXhrAoGAMuGA
+            lqeB1ax+vyO2+Osubjhl7pHxLu47RIH+/M52DjESA9KMSrwzsYx8yNR2WooByrE0
+            t6fu0VncK7UK8olO4t7wpv2z4AFQPRVCKFwo0qgn5aKIkICGMlrRy81avb27wGcW
+            othx3iPPMtFXtoDqK0JItaI9R8zc1msFhM1GKMYDgYQAAoGActA8YGxrtngg/zKV
+            vqEOefnwmViFztcnPBYPlJsvh6yKI4iDm68fnp4Mi3RrJ6bZAygFrUIQLxLjV+OJ
+            tgJAEto0xAs+Mehuq1DkSFEpP3oDzCTOsrOiS1DwQe4oIb7zVk/9l7aPtJMHW0LV
+            lMdwZNFNNJoqMcT2ZfCPrfvYvQ2jRzBFMB4GA1UdEQQXMBWBE21lcmxpbkBiYWx0
+            aW1vcmUuaWUwDgYDVR0PAQH/BAQDAgeAMBMGA1UdIwQMMAqACEJZQG0KwRbPMAkG
+            ByqGSM44BAMDMQAwLgIVAK4skWEFYgrggaJA8vYAwSjg12+KAhUAwHTo7wd4tENw
+            9LAKPklQ/74fH18=
+          </X509Certificate>
+        </X509Data>
+      </Object>
+    </Signature>
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T." />
+    <Notary name="Hun, A. T." />
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/Readme.txt
new file mode 100644
index 0000000..37e9d88
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/Readme.txt
@@ -0,0 +1,63 @@
+Sample XML Signatures[1][2]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] http://www.w3.org/TR/2001/REC-xml-c14n-20010315
+
+1. A large and complex signature:
+
+This includes internal and external base 64, references of the forms
+"", "#xpointer(/)", "#foo" and "#xpointer(id('foo'))" (with and
+without comments), manifests, signature properties, simple xpath
+with here(), xslt, retrieval method and odd interreferential
+dependencies.
+
+  signature.xml - A signature
+  signature.tmpl - The template from which the signature was created
+  signature-c14n-*.txt - All intermediate c14n output
+
+2. Some basic signatures:
+
+The key for the HMAC-SHA1 signatures is "secret".getBytes("ASCII")
+which is, in hex, (73 65 63 72 65 74). No key info is provided for
+these signatures.
+
+  signature-enveloped-dsa.xml
+  signature-enveloping-b64-dsa.xml
+  signature-enveloping-dsa.xml
+  signature-enveloping-hmac-sha1-40.xml
+  signature-enveloping-hmac-sha1.xml
+  signature-enveloping-rsa.xml
+  signature-external-b64-dsa.xml
+  signature-external-dsa.xml - The signatures
+  signature-*-c14n-*.txt - The intermediate c14n output
+
+3. Varying key information:
+
+To resolve the key associated with the KeyName in `signature-keyname.xml'
+you must perform a cunning transformation from the name `Xxx' to the
+certificate that resides in the directory `certs/' that has a subject name
+containing the common name `Xxx', which happens to be in the file
+`certs/xxx.crt'.
+
+To resolve the key associated with the X509Data in `signature-x509-is.xml',
+`signature-x509-ski.xml' and `signature-x509-sn.xml' you need to resolve
+the identified certificate from those in the `certs' directory.
+
+In `signature-x509-crt-crl.xml' an X.509 CRL is present which has revoked
+the X.509 certificate used for signing. So verification should be
+qualified.
+
+  signature-keyname.xml
+  signature-retrievalmethod-rawx509crt.xml
+  signature-x509-crt-crl.xml
+  signature-x509-crt.xml
+  signature-x509-is.xml
+  signature-x509-ski.xml
+  signature-x509-sn.xml - The signatures
+  certs/*.crt - The certificates
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+http://www.baltimore.com/
+
+Thursday, April 4, 2002
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/badb.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/badb.crt
new file mode 100644
index 0000000..f4c28b2
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/badb.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/balor.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/balor.crt
new file mode 100644
index 0000000..0343b20
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/balor.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/bres.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/bres.crt
new file mode 100644
index 0000000..4fd2846
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/bres.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/ca.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/ca.crt
new file mode 100644
index 0000000..f97f4bc
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/ca.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/crl b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/crl
new file mode 100644
index 0000000..a84e7ef
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/crl
@@ -0,0 +1,11 @@
+-----BEGIN CRL-----
+MIIBJDCB5AIBATAJBgcqhkjOOAQDMHYxCzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZE
+dWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLjERMA8G
+A1UECxMIWC9TZWN1cmUxHTAbBgNVBAMTFEFub3RoZXIgVHJhbnNpZW50IENBFw0w
+MjA0MDQwMjE2NThaFw0xMTA0MDIwMjE2NThaMBkwFwIGAOz5Id5/Fw0wMjA0MDQw
+MjE2NThaoCMwITATBgNVHSMEDDAKgAiKHFYwWjISfTAKBgNVHRQEAwIBADAJBgcq
+hkjOOAQDAzAAMC0CFCEIm38fvGzSJHms284hUs9dNB8nAhUAjEtZr0TGgc6sVRVk
+krEgltdo7Jw=
+-----END CRL-----
+
+
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/lugh.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/lugh.crt
new file mode 100644
index 0000000..9318e96
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/lugh.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/macha.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/macha.crt
new file mode 100644
index 0000000..6c7daf2
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/macha.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/morigu.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/morigu.crt
new file mode 100644
index 0000000..ee3328d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/morigu.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/mullan.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/mullan.crt
new file mode 100644
index 0000000..b4024bd
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/mullan.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/nemain.crt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/nemain.crt
new file mode 100644
index 0000000..31d3d2d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/nemain.crt
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/xmldsig.jks b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/xmldsig.jks
new file mode 100644
index 0000000..9702fce
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/certs/xmldsig.jks
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-0.txt
new file mode 100644
index 0000000..013de33
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-0.txt
@@ -0,0 +1 @@
+I am the text.
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-1.txt
new file mode 100644
index 0000000..1ac1a52
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-1.txt
@@ -0,0 +1,5 @@
+<SignatureProperties xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-10.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-10.txt
new file mode 100644
index 0000000..d03ffe1
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-10.txt
@@ -0,0 +1,40 @@
+<Manifest xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
+          <Reference URI="#reference-1">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+                <xsl:stylesheet xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="foo" version="1.0">
+                  <xsl:output encoding="UTF-8" indent="no" method="xml"></xsl:output>
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name"></xsl:value-of>
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></Transform>
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>c7wq5XKos6RqNVJyFy7/fl6+sAs=</DigestValue>
+          </Reference>
+        </Manifest>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-11.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-11.txt
new file mode 100644
index 0000000..c67bb6f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-11.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="reference-2" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+        </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-12.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-12.txt
new file mode 100644
index 0000000..6e92625
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-12.txt
@@ -0,0 +1,15 @@
+<!-- Preamble -->
+<Envelope xmlns="http://example.org/usps" xmlns:foo="http://example.org/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-13.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-13.txt
new file mode 100644
index 0000000..96ab634
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-13.txt
@@ -0,0 +1,13 @@
+<Envelope xmlns="http://example.org/usps" xmlns:foo="http://example.org/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-14.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-14.txt
new file mode 100644
index 0000000..96ab634
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-14.txt
@@ -0,0 +1,13 @@
+<Envelope xmlns="http://example.org/usps" xmlns:foo="http://example.org/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-15.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-15.txt
new file mode 100644
index 0000000..96ab634
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-15.txt
@@ -0,0 +1,13 @@
+<Envelope xmlns="http://example.org/usps" xmlns:foo="http://example.org/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-16.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-16.txt
new file mode 100644
index 0000000..167a815
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-16.txt
@@ -0,0 +1,109 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo">
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>qg4HFwsN+/WX32uH85WlJU9l45k=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>ETlEI3y7hvvAtMe9wQSz7LhbHEE=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>MkL9CX8yeABBth1RChyPx58Ls8w=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>419CYgyTWOTGYGBhzieWklNf7Bk=</DigestValue>
+        </Reference>
+        <Reference URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>VzK45P9Ksjqq5oXlKQpkGgB2CNY=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7/9fR+NIDz9owc1Lfsxu1JBr8uo=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+        </Reference>
+      </SignedInfo><Notaries xmlns:foo="http://example.org/foo" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-17.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-17.txt
new file mode 100644
index 0000000..a05d2fb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-17.txt
@@ -0,0 +1,124 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo">
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>tQiE3GUKiBenPyp3J0Ei6rJMFv4=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>qg4HFwsN+/WX32uH85WlJU9l45k=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>ETlEI3y7hvvAtMe9wQSz7LhbHEE=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>MkL9CX8yeABBth1RChyPx58Ls8w=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>419CYgyTWOTGYGBhzieWklNf7Bk=</DigestValue>
+        </Reference>
+        <Reference URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>VzK45P9Ksjqq5oXlKQpkGgB2CNY=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7/9fR+NIDz9owc1Lfsxu1JBr8uo=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+        </Reference>
+      </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-2.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-2.txt
new file mode 100644
index 0000000..16f662b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-2.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="object-3">
+        <NonCommentandus xmlns=""></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-3.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-3.txt
new file mode 100644
index 0000000..16f662b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-3.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="object-3">
+        <NonCommentandus xmlns=""></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-4.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-4.txt
new file mode 100644
index 0000000..16f662b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-4.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="object-3">
+        <NonCommentandus xmlns=""></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-5.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-5.txt
new file mode 100644
index 0000000..d5ec183
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-5.txt
@@ -0,0 +1,3 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="object-3">
+        <NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus>
+      </Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-6.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-6.txt
new file mode 100644
index 0000000..3a9f160
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-6.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-7.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-7.txt
new file mode 100644
index 0000000..1a02385
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-7.txt
@@ -0,0 +1,4 @@
+<Notaries xmlns:foo="http://example.org/foo" Id="notaries">
+    <Notary name="Great, A. T."></Notary>
+    <Notary name="Hun, A. T."></Notary>
+  </Notaries>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-8.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-8.txt
new file mode 100644
index 0000000..49803ea
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-8.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="reference-1" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7/9fR+NIDz9owc1Lfsxu1JBr8uo=</DigestValue>
+        </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-9.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-9.txt
new file mode 100644
index 0000000..49803ea
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-c14n-9.txt
@@ -0,0 +1,4 @@
+<Reference xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:foo="http://example.org/foo" Id="reference-1" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+          <DigestValue>7/9fR+NIDz9owc1Lfsxu1JBr8uo=</DigestValue>
+        </Reference>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa-c14n-0.txt
new file mode 100644
index 0000000..ca9821d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa-c14n-0.txt
@@ -0,0 +1,3 @@
+<Envelope xmlns="http://example.org/envelope">
+  
+</Envelope>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa-c14n-1.txt
new file mode 100644
index 0000000..dd31534
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa-c14n-1.txt
@@ -0,0 +1,11 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>fdy6S2NLpnT4fMdokUHSHsmpcvo=</DigestValue>
+      </Reference>
+    </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml
new file mode 100644
index 0000000..f5ff1f5
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Envelope xmlns="http://example.org/envelope">
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>fdy6S2NLpnT4fMdokUHSHsmpcvo=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      Z4pBb+o+XOKWME7CpLyXuNqyIYdXOcGvthfUf+ZDLL5immPx+3tK8Q==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </P>
+          <Q>
+            hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+          </Q>
+          <G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </G>
+          <Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+    </KeyInfo>
+  </Signature>
+</Envelope>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa-c14n-0.txt
new file mode 100644
index 0000000..8d42726
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa-c14n-0.txt
@@ -0,0 +1,11 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="#object">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>N6pjx3OY2VRHMmLhoAV8HmMu2nc=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml
new file mode 100644
index 0000000..4e924b0
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="#object">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>N6pjx3OY2VRHMmLhoAV8HmMu2nc=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    KgAeq8e0yUNfFz+mFlZ3QgyQNMciV+Z3BoDQDvQNker7pazEnJmOIA==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+        </P>
+        <Q>
+          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+        </Q>
+        <G>
+          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+        </G>
+        <Y>
+          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+  <Object Id="object">c29tZSB0ZXh0</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa-c14n-1.txt
new file mode 100644
index 0000000..022e53f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa-c14n-1.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml
new file mode 100644
index 0000000..488ac26
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    PfD92lkxKgc2OKvF4p0ba6cJj6d1eqIDx5Q1hvVYTviotje23Snunw==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+        </P>
+        <Q>
+          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+        </Q>
+        <G>
+          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+        </G>
+        <Y>
+          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40-c14n-1.txt
new file mode 100644
index 0000000..f4f4060
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40-c14n-1.txt
@@ -0,0 +1,10 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
+      <HMACOutputLength>40</HMACOutputLength>
+    </SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml
new file mode 100644
index 0000000..4904d79
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
+      <HMACOutputLength>40</HMACOutputLength>
+    </SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    HHiqvCU=
+  </SignatureValue>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-c14n-1.txt
new file mode 100644
index 0000000..e0cdc88
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-c14n-1.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml
new file mode 100644
index 0000000..c0c8343
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" />
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    JElPttIT4Am7Q+MNoMyv+WDfAZw=
+  </SignatureValue>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa-c14n-0.txt
new file mode 100644
index 0000000..ff148eb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa-c14n-0.txt
@@ -0,0 +1 @@
+<Object xmlns="http://www.w3.org/2000/09/xmldsig#" Id="object">some text</Object>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa-c14n-1.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa-c14n-1.txt
new file mode 100644
index 0000000..695ed33
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa-c14n-1.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml
new file mode 100644
index 0000000..1580d83
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    ov3HOoPN0w71N3DdGNhN+dSzQm6NJFUB5qGKRp9Q986nVzMb8wCIVxCQu+x3vMtq
+    p4/R3KEcPtEJSaoR+thGq++GPIh2mZXyWJs3xHy9P4xmoTVwli7/l7s8ebDSmnbZ
+    7xZU4Iy1BSMZSxGKnRG+Z/0GJIfTz8jhH6wCe3l03L4=
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <RSAKeyValue>
+        <Modulus>
+          q07hpxA5DGFfvJFZueFl/LI85XxQxrvqgVugL25V090A9MrlLBg5PmAsxFTe+G6a
+          xvWJQwYOVHj/nuiCnNLa9a7uAtPFiTtW+v5H3wlLaY3ws4atRBNOQlYkIBp38sTf
+          QBkk4i8PEU1GQ2M0CLIJq4/2Akfv1wxzSQ9+8oWkArc=
+        </Modulus>
+        <Exponent>
+          AQAB
+        </Exponent>
+      </RSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-b64-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-b64-dsa-c14n-0.txt
new file mode 100644
index 0000000..232e7d5
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-b64-dsa-c14n-0.txt
@@ -0,0 +1,11 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml
new file mode 100644
index 0000000..1fb5663
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    IhOlAjMFaZtkEju5R5bi528h1HpDa4A21sudZynhJRRLjZuQIHZ3eQ==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+        </P>
+        <Q>
+          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+        </Q>
+        <G>
+          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+        </G>
+        <Y>
+          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-dsa-c14n-0.txt b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-dsa-c14n-0.txt
new file mode 100644
index 0000000..4aafc36
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-dsa-c14n-0.txt
@@ -0,0 +1,8 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-dsa.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-dsa.xml
new file mode 100644
index 0000000..34d3e6a
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-external-dsa.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    LaL1/t/XodYvDJDgSEbq47GX8ltnlx3FFURdi7o+UFVi+zLf0WyWaQ==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+        </P>
+        <Q>
+          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+        </Q>
+        <G>
+          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+        </G>
+        <Y>
+          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-keyname.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-keyname.xml
new file mode 100644
index 0000000..a7c60a3
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-keyname.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    JkJ3GplEU0iDbqSv7ZOXhvv3zeM1KmP+CLphhoc+NPYqpGYQiW6O6w==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyName>Lugh</KeyName>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml
new file mode 100644
index 0000000..2e861d9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    SNB5FI193RFXoG2j8Z9bXWgW7BMPICqNob4Hjh08oou4tkhGxz4+pg==
+  </SignatureValue>
+  <KeyInfo>
+    <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#rawX509Certificate" URI="certs/balor.crt" />
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml
new file mode 100644
index 0000000..fe01797
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    WF6EaX66f8CdGE6NafmzdLpb/1OVYX4kBNsqgGIqHR5JZAu4HpbVQQ==
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509Certificate>
+        MIIDTjCCAw6gAwIBAgIGAOz5Id5/MAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+        c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDI4WhcNMTIwNDAyMjI1OTQ2WjBmMQswCQYD
+        VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+        aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ0wCwYDVQQDEwRCcmVz
+        MIIBtjCCASsGByqGSM44BAEwggEeAoGBAISKsEonjNGgHs/uh+9YKgnwZ8Bt3T7u
+        yQBJW9dxpMF0cPUXz4dFbSFY4QyW8igCLswpOa+eHHEYsWvE0Nr1lcKHUPXq7u41
+        JJwHNq1RAFeZiU6wa+1FL3v1/T1rAgzepV7xS4iafz4vxdHMlfwgKfoyKfq6JU1z
+        oVM/ahI5xWDDAhUAmEv6eIJrB4KN0fPRABPx3NHYclkCgYAlhuYZ/AzPta7+bE5C
+        QasmSVzc8uM/e+LN7ABlEXwQRk6QfZBcX8TbePNE8ZFng4Uft/QzAOUxALET7kKA
+        ek4Jeytpzc0XYCYyuGJATm4F9ZY1pAJ5yQmUmwvDYdlaZJ4ldGzO/R57Evngn/G4
+        tqjjoi0sx3jq7czvDwdGHnky0AOBhAACgYBgvDFxw1U6Ou2G6P/+347Jfk2wPB1/
+        atr4p3JUVLuT0ExZG6np+rKiXmcBbYKbAhMY37zVkroR9bwo+NgaJGubQ4ex5Y1X
+        N2Q5gIHNhNfKr8G4LPVqWGxf/lFPDYxX3ezqBJPpJCJTREX7s6Hp/VTV2SpQlySv
+        +GRcFKJFPlhD9aM6MDgwDgYDVR0PAQH/BAQDAgeAMBEGA1UdDgQKBAiC+5gx0MHL
+        hTATBgNVHSMEDDAKgAiKHFYwWjISfTAJBgcqhkjOOAQDAy8AMCwCFDTcM5i61uqq
+        /aveERhOJ6NG/LubAhREVDtAeNbTEywXr4O7KvEEvFLUjg==
+      </X509Certificate>
+      <X509CRL>
+        MIIBJDCB5AIBATAJBgcqhkjOOAQDMHYxCzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZE
+        dWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLjERMA8G
+        A1UECxMIWC9TZWN1cmUxHTAbBgNVBAMTFEFub3RoZXIgVHJhbnNpZW50IENBFw0w
+        MjA0MDQwMjE2NThaFw0xMTA0MDIwMjE2NThaMBkwFwIGAOz5Id5/Fw0wMjA0MDQw
+        MjE2NThaoCMwITATBgNVHSMEDDAKgAiKHFYwWjISfTAKBgNVHRQEAwIBADAJBgcq
+        hkjOOAQDAzAAMC0CFCEIm38fvGzSJHms284hUs9dNB8nAhUAjEtZr0TGgc6sVRVk
+        krEgltdo7Jw=
+      </X509CRL>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-crt.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-crt.xml
new file mode 100644
index 0000000..2048fd2
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-crt.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    GCQVmBq+1H7e9IjvKfe+egLM1Jlp3L1JCGkl9SlJ0eaDh2MKYUUnHA==
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509Certificate>
+        MIIDUDCCAxCgAwIBAgIGAOz5IVHTMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+        c2llbnQgQ0EwHhcNMDIwNDAyMjM1OTUyWhcNMTIwNDAyMjI1OTQ2WjBoMQswCQYD
+        VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+        aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3Jp
+        Z3UwggG2MIIBKwYHKoZIzjgEATCCAR4CgYEAhIqwSieM0aAez+6H71gqCfBnwG3d
+        Pu7JAElb13GkwXRw9RfPh0VtIVjhDJbyKAIuzCk5r54ccRixa8TQ2vWVwodQ9eru
+        7jUknAc2rVEAV5mJTrBr7UUve/X9PWsCDN6lXvFLiJp/Pi/F0cyV/CAp+jIp+rol
+        TXOhUz9qEjnFYMMCFQCYS/p4gmsHgo3R89EAE/Hc0dhyWQKBgCWG5hn8DM+1rv5s
+        TkJBqyZJXNzy4z974s3sAGURfBBGTpB9kFxfxNt480TxkWeDhR+39DMA5TEAsRPu
+        QoB6Tgl7K2nNzRdgJjK4YkBObgX1ljWkAnnJCZSbC8Nh2VpkniV0bM79HnsS+eCf
+        8bi2qOOiLSzHeOrtzO8PB0YeeTLQA4GEAAKBgH1NBJ9Az5TwY4tDE0dPYVHHABt+
+        yLspnT3k9G6YWUMFhZ/+3RuqEPjnKrPfUoXTTJGIACgPU3/PkqwrPVD0JMdpOcnZ
+        LHiJ/P7QRQeMwDRoBrs7genB1bDd4pSJrEUcjrkA5uRrIj2Z5fL+UuLiLGPO2rM7
+        BNQRIq3QFPdX++NuozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIK7Ljjh
+        +EsfMBMGA1UdIwQMMAqACIocVjBaMhJ9MAkGByqGSM44BAMDLwAwLAIUEJJCOHw8
+        ppxoRyz3s+Vmb4NKIfMCFDgJoZn9zh/3WoYNBURODwLvyBOy
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-is.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-is.xml
new file mode 100644
index 0000000..b7a01f8
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-is.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    bmKMy/w1DO9dHA6E7Dt0B8IFkYAj1/UD3TqcdqIcfkMT7evE8+NBgg==
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509IssuerSerial>
+        <X509IssuerName>
+          CN=Another Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509IssuerName>
+        <X509SerialNumber>1017792003066</X509SerialNumber>
+      </X509IssuerSerial>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-ski.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-ski.xml
new file mode 100644
index 0000000..c71bfce
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-ski.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    F9nEU1Us48iKTml8n7E4wt7HtFJ5gaLIgox0J9WbujGndW0oQJbeGg==
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509SKI>
+        hf10xKfSnIg=
+      </X509SKI>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-sn.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-sn.xml
new file mode 100644
index 0000000..d5b0808
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature-x509-sn.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    MUOjiqG0dbjvR6+qYYPL85nKSt2FeZGQBQkYudv48KyJhJLG1Bp+bA==
+  </SignatureValue>
+  <KeyInfo>
+    <X509Data>
+      <X509SubjectName>
+        CN=Badb,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+      </X509SubjectName>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature.tmpl b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature.tmpl
new file mode 100644
index 0000000..d10d36f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature.tmpl
@@ -0,0 +1,265 @@
+<?xml version="1.0"?>
+<!DOCTYPE envelope [
+  <!ENTITY dsig "http://www.w3.org/2000/09/xmldsig#">
+  <!ENTITY c14n "http://www.w3.org/TR/2001/REC-xml-c14n-20010315">
+  <!ENTITY xpath "http://www.w3.org/TR/1999/REC-xpath-19991116">
+  <!ENTITY xslt "http://www.w3.org/TR/1999/REC-xslt-19991116">
+  <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<!-- Preamble -->
+<Envelope xmlns="http://example.org/usps" xmlns:foo="http://example.org/foo">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    <Signature Id="signature" xmlns="&dsig;">
+      <SignedInfo>
+        <CanonicalizationMethod Algorithm="" />
+        <SignatureMethod Algorithm="" />
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+          <Transforms>
+            <Transform Algorithm="&dsig;base64" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-1" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&xpath;">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&xpath;">
+              <XPath xmlns:dsig="&dsig;">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-2" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&dsig;base64" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#manifest-1" Type="&dsig;Manifest">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#signature-properties-1" Type="&dsig;SignatureProperties">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="&dsig;enveloped-signature" />
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-3" Type="&dsig;Object">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#object-3" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(id('object-3'))" Type="&dsig;Object">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(id('object-3'))" Type="&dsig;Object">
+          <Transforms>
+            <Transform Algorithm="&c14n;#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference URI="#reference-2">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" URI="#reference-1">
+          <DigestMethod Algorithm="" />
+          <DigestValue>aaaa</DigestValue>
+        </Reference>
+      </SignedInfo>
+      <SignatureValue>aaaa</SignatureValue>
+      <KeyInfo>
+        <RetrievalMethod URI="#object-4" Type="&dsig;X509Data">
+          <Transforms>
+            <Transform Algorithm="&xpath;">
+              <XPath xmlns:dsig="&dsig;">
+                ancestor-or-self::dsig:X509Data
+              </XPath>
+            </Transform>
+          </Transforms>
+        </RetrievalMethod>
+      </KeyInfo>
+      <Object Id="object-1" MimeType="text/plain">I am the text.</Object>
+      <Object Id="object-2" MimeType="text/plain" Encoding="&dsig;base64">SSBhbSB0aGUgdGV4dC4=</Object>
+      <Object Id="object-3"><NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus></Object>
+      <Object>
+        <Manifest Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="" />
+            <DigestValue>aaaa</DigestValue>
+          </Reference>
+          <Reference URI="#reference-1">
+            <DigestMethod Algorithm="" />
+            <DigestValue>aaaa</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="&xslt;">
+                <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/xhtml1/strict" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="foo">
+                  <xsl:output method="xml" indent="no" encoding="UTF-8"/>
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name"/>
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="&c14n;" />
+            </Transforms>
+            <DigestMethod Algorithm="" />
+            <DigestValue>aaaa</DigestValue>
+          </Reference>
+        </Manifest>
+      </Object>
+      <Object>
+        <SignatureProperties Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
+      </Object>
+      <Object Id="object-4">
+        <X509Data>
+          <X509SubjectName>
+            CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509SubjectName>
+          <X509IssuerSerial>
+            <X509IssuerName>
+              CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+            </X509IssuerName>
+            <X509SerialNumber>1017788370348</X509SerialNumber>
+          </X509IssuerSerial>
+          <X509Certificate>
+            MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+            czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+            Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+            8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+            MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+            YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+            2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+            A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+            4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+            R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+            ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+            lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+            Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+          </X509Certificate>
+          <X509Certificate>
+            MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+            3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+            0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+            w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+            nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+            t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+            451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+            PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+            NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+            4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+            MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+            gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+          </X509Certificate>
+        </X509Data>
+      </Object>
+    </Signature>
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries Id="notaries" xmlns="">
+    <Notary name="Great, A. T." />
+    <Notary name="Hun, A. T." />
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature.xml b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature.xml
new file mode 100644
index 0000000..504fbe1
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/signature.xml
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Envelope [
+  <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
+  <!ENTITY c14n 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'>
+  <!ENTITY xpath 'http://www.w3.org/TR/1999/REC-xpath-19991116'>
+  <!ENTITY xslt 'http://www.w3.org/TR/1999/REC-xslt-19991116'>
+  <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<!-- Preamble -->
+<Envelope xmlns:foo="http://example.org/foo" xmlns="http://example.org/usps">
+  <DearSir>foo</DearSir>
+  <Body>bar</Body>
+  <YoursSincerely>
+    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="signature">
+      <SignedInfo>
+        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+        <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath>
+                self::text()
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:SignedInfo
+                  and
+                count(ancestor-or-self::dsig:Reference |
+                      here()/ancestor::dsig:Reference[1]) &gt;
+                count(ancestor-or-self::dsig:Reference)
+                  or
+                count(ancestor-or-self::node() |
+                      id('notaries')) =
+                count(ancestor-or-self::node())
+              </XPath>
+            </Transform>
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>tQiE3GUKiBenPyp3J0Ei6rJMFv4=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>qg4HFwsN+/WX32uH85WlJU9l45k=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>ETlEI3y7hvvAtMe9wQSz7LhbHEE=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+        </Reference>
+        <Reference URI="#xpointer(/)">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>MkL9CX8yeABBth1RChyPx58Ls8w=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+        </Reference>
+        <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+          </Transforms>
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>419CYgyTWOTGYGBhzieWklNf7Bk=</DigestValue>
+        </Reference>
+        <Reference URI="#reference-2">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>VzK45P9Ksjqq5oXlKQpkGgB2CNY=</DigestValue>
+        </Reference>
+        <Reference Id="reference-1" URI="#manifest-reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>7/9fR+NIDz9owc1Lfsxu1JBr8uo=</DigestValue>
+        </Reference>
+        <Reference Id="reference-2" URI="#reference-1">
+          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+          <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+        </Reference>
+      </SignedInfo>
+      <SignatureValue>
+        WvZUJAJ/3QNqzQvwne2vvy7U5Pck8ZZ5UTa6pIwR7GE+PoGi6A1kyw==
+      </SignatureValue>
+      <KeyInfo>
+        <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#X509Data" URI="#object-4">
+          <Transforms>
+            <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+              <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+                ancestor-or-self::dsig:X509Data
+              </XPath>
+            </Transform>
+          </Transforms>
+        </RetrievalMethod>
+      </KeyInfo>
+      <Object Id="object-1" MimeType="text/plain">I am the text.</Object>
+      <Object Encoding="http://www.w3.org/2000/09/xmldsig#base64" Id="object-2" MimeType="text/plain">SSBhbSB0aGUgdGV4dC4=</Object>
+      <Object Id="object-3">
+        <NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus>
+      </Object>
+      <Object>
+        <Manifest Id="manifest-1">
+          <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+          </Reference>
+          <Reference URI="#reference-1">
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+          </Reference>
+          <Reference URI="#notaries">
+            <Transforms>
+              <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+                <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict" exclude-result-prefixes="foo" version="1.0">
+                  <xsl:output encoding="UTF-8" indent="no" method="xml" />
+                  <xsl:template match="/">
+                    <html>
+                      <head>
+                        <title>Notaries</title>
+                      </head>
+                      <body>
+                        <table>
+                          <xsl:for-each select="Notaries/Notary">
+                            <tr>
+                              <th>
+                                <xsl:value-of select="@name" />
+                              </th>
+                            </tr>
+                          </xsl:for-each>
+                        </table>
+                      </body>
+                    </html>
+                  </xsl:template>
+                </xsl:stylesheet>
+              </Transform>
+              <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>c7wq5XKos6RqNVJyFy7/fl6+sAs=</DigestValue>
+          </Reference>
+        </Manifest>
+      </Object>
+      <Object>
+        <SignatureProperties Id="signature-properties-1">
+          <SignatureProperty Target="#signature">
+            <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+          </SignatureProperty>
+        </SignatureProperties>
+      </Object>
+      <Object Id="object-4">
+        <X509Data>
+          <X509SubjectName>
+            CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509SubjectName>
+          <X509IssuerSerial>
+            <X509IssuerName>
+              CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+            </X509IssuerName>
+            <X509SerialNumber>1017788370348</X509SerialNumber>
+          </X509IssuerSerial>
+          <X509Certificate>
+            MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+            czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+            Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+            8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+            MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+            YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+            2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+            A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+            4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+            R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+            ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+            lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+            Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+          </X509Certificate>
+          <X509Certificate>
+            MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+            3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+            0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+            w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+            nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+            t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+            451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+            PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+            NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+            4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+            MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+            gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+          </X509Certificate>
+        </X509Data>
+      </Object>
+    </Signature>
+  </YoursSincerely>
+  <PostScript>bar</PostScript>
+  <Notaries xmlns="" Id="notaries">
+    <Notary name="Great, A. T." />
+    <Notary name="Hun, A. T." />
+  </Notaries>
+  <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/xml-stylesheet.b64 b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/xml-stylesheet.b64
new file mode 100644
index 0000000..eb9a11a
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/xml-stylesheet.b64
@@ -0,0 +1,274 @@
+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFu
+c2l0aW9uYWwvL0VOIj4KPGh0bWw+CjxoZWFkPgo8dGl0bGU+QXNzb2NpYXRpbmcg
+U3R5bGUgU2hlZXRzIHdpdGggWE1MIGRvY3VtZW50czwvdGl0bGU+CjxsaW5rIHJl
+bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly93d3cu
+dzMub3JnL1N0eWxlU2hlZXRzL1RSL1czQy1SRUMiPgo8c3R5bGUgdHlwZT0idGV4
+dC9jc3MiPmNvZGUgeyBmb250LWZhbWlseTogbW9ub3NwYWNlIH08L3N0eWxlPgo8
+L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJoZWFkIj4KPGEgaHJlZj0iaHR0cDov
+L3d3dy53My5vcmcvIj48aW1nIHNyYz0iaHR0cDovL3d3dy53My5vcmcvSWNvbnMv
+V1dXL3czY19ob21lIiBhbHQ9IlczQyIgaGVpZ2h0PSI0OCIgd2lkdGg9IjcyIj48
+L2E+CjxoMT5Bc3NvY2lhdGluZyBTdHlsZSBTaGVldHMgd2l0aCBYTUwgZG9jdW1l
+bnRzPGJyPlZlcnNpb24gMS4wPC9oMT4KPGgyPlczQyBSZWNvbW1lbmRhdGlvbiAy
+OSBKdW5lIDE5OTk8L2gyPgo8ZGw+CjxkdD5UaGlzIHZlcnNpb246PC9kdD4KPGRk
+Pgo8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzA2L1JFQy14bWwtc3R5
+bGVzaGVldC0xOTk5MDYyOSI+aHR0cDovL3d3dy53My5vcmcvMTk5OS8wNi9SRUMt
+eG1sLXN0eWxlc2hlZXQtMTk5OTA2Mjk8L2E+Cjxicj4KPC9kZD4KPGR0PkxhdGVz
+dCB2ZXJzaW9uOjwvZHQ+CjxkZD4KPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
+VFIveG1sLXN0eWxlc2hlZXQiPmh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHls
+ZXNoZWV0PC9hPgo8YnI+CjwvZGQ+CjxkdD5QcmV2aW91cyB2ZXJzaW9uOjwvZHQ+
+CjxkZD4KPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS94bWwtc3R5
+bGVzaGVldC0xOTk5MDQyOCI+aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS94bWwt
+c3R5bGVzaGVldC0xOTk5MDQyODwvYT4KPGJyPgo8L2RkPgo8ZHQ+RWRpdG9yOjwv
+ZHQ+CjxkZD4KCkphbWVzIENsYXJrCjxhIGhyZWY9Im1haWx0bzpqamNAamNsYXJr
+LmNvbSI+Jmx0O2pqY0BqY2xhcmsuY29tJmd0OzwvYT4KPGJyPgo8L2RkPgo8L2Rs
+Pgo8cCBjbGFzcz0iY29weXJpZ2h0Ij4KPGEgaHJlZj0iaHR0cDovL3d3dy53My5v
+cmcvQ29uc29ydGl1bS9MZWdhbC9pcHItbm90aWNlLmh0bWwjQ29weXJpZ2h0Ij4K
+CQlDb3B5cmlnaHQ8L2E+ICZuYnNwOyZjb3B5OyZuYnNwOyAxOTk5IDxhIGhyZWY9
+Imh0dHA6Ly93d3cudzMub3JnIj5XM0M8L2E+CgkJKDxhIGhyZWY9Imh0dHA6Ly93
+d3cubGNzLm1pdC5lZHUiPk1JVDwvYT4sCgkJPGEgaHJlZj0iaHR0cDovL3d3dy5p
+bnJpYS5mci8iPklOUklBPC9hPiwKCQk8YSBocmVmPSJodHRwOi8vd3d3LmtlaW8u
+YWMuanAvIj5LZWlvPC9hPiApLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBXM0MKCQk8
+YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2lwci1u
+b3RpY2UuaHRtbCNMZWdhbCBEaXNjbGFpbWVyIj5saWFiaWxpdHksPC9hPjxhIGhy
+ZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvaXByLW5vdGlj
+ZS5odG1sI1czQyBUcmFkZW1hcmtzIj50cmFkZW1hcms8L2E+LAoJCTxhIGhyZWY9
+Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LWRv
+Y3VtZW50cy5odG1sIj5kb2N1bWVudCB1c2UgPC9hPmFuZAoJCTxhIGhyZWY9Imh0
+dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LXNvZnR3
+YXJlLmh0bWwiPnNvZnR3YXJlIGxpY2Vuc2luZyA8L2E+cnVsZXMgYXBwbHkuCgk8
+L3A+CjxociB0aXRsZT0iU2VwYXJhdG9yIGZvciBoZWFkZXIiPgo8L2Rpdj4KPGgy
+Pgo8YSBuYW1lPSJhYnN0cmFjdCI+QWJzdHJhY3Q8L2E+CjwvaDI+Cgo8cD5UaGlz
+IGRvY3VtZW50IGFsbG93cyBhIHN0eWxlIHNoZWV0IHRvIGJlIGFzc29jaWF0ZWQg
+d2l0aCBhbiBYTUwKZG9jdW1lbnQgYnkgaW5jbHVkaW5nIG9uZSBvciBtb3JlIHBy
+b2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggYQp0YXJnZXQgb2YgPGNvZGU+eG1s
+LXN0eWxlc2hlZXQ8L2NvZGU+IGluIHRoZSBkb2N1bWVudCdzIHByb2xvZy48L3A+
+Cgo8aDI+CjxhIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHRoaXMgZG9jdW1lbnQ8
+L2E+CjwvaDI+Cgo8cD5UaGlzIGRvY3VtZW50IGhhcyBiZWVuIHJldmlld2VkIGJ5
+IFczQyBNZW1iZXJzIGFuZCBvdGhlciBpbnRlcmVzdGVkCnBhcnRpZXMgYW5kIGhh
+cyBiZWVuIGVuZG9yc2VkIGJ5IHRoZSBEaXJlY3RvciBhcyBhIFczQyA8YSBocmVm
+PSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL1Byb2Nlc3MvI1JlY3NXM0Mi
+PlJlY29tbWVuZGF0aW9uPC9hPi4gSXQKaXMgYSBzdGFibGUgZG9jdW1lbnQgYW5k
+IG1heSBiZSB1c2VkIGFzIHJlZmVyZW5jZSBtYXRlcmlhbCBvciBjaXRlZCBhcwph
+IG5vcm1hdGl2ZSByZWZlcmVuY2UgZnJvbSBvdGhlciBkb2N1bWVudHMuIFczQydz
+IHJvbGUgaW4gbWFraW5nIHRoZQpSZWNvbW1lbmRhdGlvbiBpcyB0byBkcmF3IGF0
+dGVudGlvbiB0byB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgdG8KcHJvbW90ZSBpdHMg
+d2lkZXNwcmVhZCBkZXBsb3ltZW50LiBUaGlzIGVuaGFuY2VzIHRoZSBmdW5jdGlv
+bmFsaXR5IGFuZAppbnRlcm9wZXJhYmlsaXR5IG9mIHRoZSBXZWIuPC9wPgoKPHA+
+VGhlIGxpc3Qgb2Yga25vd24gZXJyb3JzIGluIHRoaXMgc3BlY2lmaWNhdGlvbnMg
+aXMgYXZhaWxhYmxlIGF0CjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
+MDYvUkVDLXhtbC1zdHlsZXNoZWV0LTE5OTkwNjI5L2VycmF0YSI+aHR0cDovL3d3
+dy53My5vcmcvVFIvMTk5OS94bWwtc3R5bGVzaGVldC0xOTk5MDYyOS9lcnJhdGE8
+L2E+LjwvcD4KCjxwPkNvbW1lbnRzIG9uIHRoaXMgc3BlY2lmaWNhdGlvbiBtYXkg
+YmUgc2VudCB0byAmbHQ7PGEgaHJlZj0ibWFpbHRvOnd3dy14bWwtc3R5bGVzaGVl
+dC1jb21tZW50c0B3My5vcmciPnd3dy14bWwtc3R5bGVzaGVldC1jb21tZW50c0B3
+My5vcmc8L2E+Jmd0Oy4gVGhlIGFyY2hpdmUgb2YgcHVibGljCmNvbW1lbnRzIGlz
+IGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9BcmNoaXZl
+cy9QdWJsaWMvd3d3LXhtbC1zdHlsZXNoZWV0LWNvbW1lbnRzIj5odHRwOi8vdzMu
+b3JnL0FyY2hpdmVzL1B1YmxpYy93d3cteG1sLXN0eWxlc2hlZXQtY29tbWVudHM8
+L2E+LjwvcD4KCjxwPkEgbGlzdCBvZiBjdXJyZW50IFczQyBSZWNvbW1lbmRhdGlv
+bnMgYW5kIG90aGVyIHRlY2huaWNhbCBkb2N1bWVudHMKY2FuIGJlIGZvdW5kIGF0
+IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSIj5odHRwOi8vd3d3LnczLm9y
+Zy9UUjwvYT4uPC9wPgoKPHA+VGhlIFdvcmtpbmcgR3JvdXAgZXhwZWN0cyBhZGRp
+dGlvbmFsIG1lY2hhbmlzbXMgZm9yIGxpbmtpbmcgc3R5bGUKc2hlZXRzIHRvIFhN
+TCBkb2N1bWVudCB0byBiZSBkZWZpbmVkIGluIGEgZnV0dXJlIHNwZWNpZmljYXRp
+b24uPC9wPgoKPHA+VGhlIHVzZSBvZiBYTUwgcHJvY2Vzc2luZyBpbnN0cnVjdGlv
+bnMgaW4gdGhpcyBzcGVjaWZpY2F0aW9uIHNob3VsZApub3QgYmUgdGFrZW4gYXMg
+YSBwcmVjZWRlbnQuICBUaGUgVzNDIGRvZXMgbm90IGFudGljaXBhdGUgcmVjb21t
+ZW5kaW5nCnRoZSB1c2Ugb2YgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgaW4gYW55
+IGZ1dHVyZSBzcGVjaWZpY2F0aW9uLiAgVGhlCjxhIGhyZWY9IiNyYXRpb25hbGUi
+PlJhdGlvbmFsZTwvYT4gZXhwbGFpbnMgd2h5IHRoZXkgd2VyZSB1c2VkIGluCnRo
+aXMgc3BlY2lmaWNhdGlvbi48L3A+Cgo8cD5UaGlzIGRvY3VtZW50IHdhcyBwcm9k
+dWNlZCBhcyBwYXJ0IG9mIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Y
+TUwvQWN0aXZpdHkiPlczQyBYTUwgQWN0aXZpdHk8L2E+LjwvcD4KCgo8aDI+Cjxh
+IG5hbWU9ImNvbnRlbnRzIj5UYWJsZSBvZiBjb250ZW50czwvYT4KPC9oMj4xIDxh
+IGhyZWY9IiNUaGUgeG1sLXN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlv
+biI+VGhlIHhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2E+
+Cjxicj4KPGgzPkFwcGVuZGljZXM8L2gzPkEgPGEgaHJlZj0iI1JlZmVyZW5jZXMi
+PlJlZmVyZW5jZXM8L2E+Cjxicj5CIDxhIGhyZWY9IiNyYXRpb25hbGUiPlJhdGlv
+bmFsZTwvYT4KPGJyPgo8aHI+Cgo8aDI+CjxhIG5hbWU9IlRoZSB4bWwtc3R5bGVz
+aGVldCBwcm9jZXNzaW5nIGluc3RydWN0aW9uIj48L2E+MSBUaGUgPGNvZGU+eG1s
+LXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2gyPgoK
+PHA+U3R5bGUgU2hlZXRzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gWE1MPGEg
+aHJlZj0iI1hNTCI+W1hNTDEwXTwvYT4KZG9jdW1lbnQgYnkgdXNpbmcgYSBwcm9j
+ZXNzaW5nIGluc3RydWN0aW9uIHdob3NlIHRhcmdldCBpcwo8Y29kZT54bWwtc3R5
+bGVzaGVldDwvY29kZT4uICBUaGlzIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gZm9s
+bG93cyB0aGUKYmVoYXZpb3VyIG9mIHRoZSBIVE1MIDQuMCA8Y29kZT4mbHQ7TElO
+SwpSRUw9InN0eWxlc2hlZXQiJmd0OzwvY29kZT48YSBocmVmPSIjSFRNTCI+W0hU
+TUw0MF08L2E+LjwvcD4KCjxwPlRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29k
+ZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBpcyBwYXJzZWQgaW4KdGhlIHNhbWUg
+d2F5IGFzIGEgc3RhcnQtdGFnLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBlbnRp
+dGllcyBvdGhlcgp0aGFuIHByZWRlZmluZWQgZW50aXRpZXMgbXVzdCBub3QgYmUg
+cmVmZXJlbmNlZC48L3A+Cgo8cD5UaGUgZm9sbG93aW5nIGdyYW1tYXIgaXMgZ2l2
+ZW4gdXNpbmcgdGhlIHNhbWUgbm90YXRpb24gYXMgdGhlCmdyYW1tYXIgaW4gdGhl
+IFhNTCBSZWNvbW1lbmRhdGlvbjxhIGhyZWY9IiNYTUwiPltYTUwxMF08L2E+LiAg
+U3ltYm9scyBpbiB0aGUKZ3JhbW1hciB0aGF0IGFyZSBub3QgZGVmaW5lZCBoZXJl
+IGFyZSBkZWZpbmVkIGluIHRoZSBYTUwKUmVjb21tZW5kYXRpb24uPC9wPgoKPGg1
+PnhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2g1Pgo8dGFi
+bGUgY2xhc3M9InNjcmFwIj4KPHRib2R5Pgo8dHIgdmFsaWduPSJiYXNlbGluZSI+
+Cjx0ZD4KPGEgbmFtZT0iTlQtU3R5bGVTaGVldFBJIj48L2E+WzFdJm5ic3A7Jm5i
+c3A7Jm5ic3A7PC90ZD4KPHRkPlN0eWxlU2hlZXRQSTwvdGQ+Cjx0ZD4mbmJzcDsm
+bmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPgo8dGQ+JyZsdDs/
+eG1sLXN0eWxlc2hlZXQnICg8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9S
+RUMteG1sI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1Qc2V1ZG9BdHQiPlBzZXVk
+b0F0dDwvYT4pKiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1s
+I05ULVMiPlM8L2E+PyAnPyZndDsnPC90ZD4KPHRkPgo8L3RkPgo8L3RyPgo8dHIg
+dmFsaWduPSJiYXNlbGluZSI+Cjx0ZD4KPGEgbmFtZT0iTlQtUHNldWRvQXR0Ij48
+L2E+WzJdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4KPHRkPlBzZXVkb0F0dDwvdGQ+
+Cjx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3Rk
+Pgo8dGQ+CjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQt
+TmFtZSI+TmFtZTwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
+LXhtbCNOVC1TIj5TPC9hPj8gJz0nIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
+L1RSL1JFQy14bWwjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1Qc2V1ZG9BdHRW
+YWx1ZSI+UHNldWRvQXR0VmFsdWU8L2E+CjwvdGQ+Cjx0ZD4KPC90ZD4KPC90cj4K
+PHRyIHZhbGlnbj0iYmFzZWxpbmUiPgo8dGQ+CjxhIG5hbWU9Ik5ULVBzZXVkb0F0
+dFZhbHVlIj48L2E+WzNdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4KPHRkPlBzZXVk
+b0F0dFZhbHVlPC90ZD4KPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZu
+YnNwOyZuYnNwOzwvdGQ+Cjx0ZD4oJyInIChbXiImbHQ7JmFtcDtdIHwgPGEgaHJl
+Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyUmVmIj5DaGFy
+UmVmPC9hPiB8IDxhIGhyZWY9IiNOVC1QcmVkZWZFbnRpdHlSZWYiPlByZWRlZkVu
+dGl0eVJlZjwvYT4pKiAnIic8L3RkPgo8dGQ+CjwvdGQ+CjwvdHI+Cjx0ciB2YWxp
+Z249ImJhc2VsaW5lIj4KPHRkPgo8L3RkPgo8dGQ+CjwvdGQ+Cjx0ZD4KPC90ZD4K
+PHRkPnwgIiciIChbXicmbHQ7JmFtcDtdIHwgPGEgaHJlZj0iaHR0cDovL3d3dy53
+My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyUmVmIj5DaGFyUmVmPC9hPiB8IDxhIGhy
+ZWY9IiNOVC1QcmVkZWZFbnRpdHlSZWYiPlByZWRlZkVudGl0eVJlZjwvYT4pKiAi
+JyIpPC90ZD4KPHRkPgo8L3RkPgo8L3RyPgo8dHIgdmFsaWduPSJiYXNlbGluZSI+
+Cjx0ZD4KPC90ZD4KPHRkPgo8L3RkPgo8dGQ+CjwvdGQ+Cjx0ZD4tICg8YSBocmVm
+PSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXIiPkNoYXI8L2E+
+KiAnPyZndDsnIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwj
+TlQtQ2hhciI+Q2hhcjwvYT4qKTwvdGQ+Cjx0ZD4KPC90ZD4KPC90cj4KPHRyIHZh
+bGlnbj0iYmFzZWxpbmUiPgo8dGQ+CjxhIG5hbWU9Ik5ULVByZWRlZkVudGl0eVJl
+ZiI+PC9hPls0XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+Cjx0ZD5QcmVkZWZFbnRp
+dHlSZWY8L3RkPgo8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7
+Jm5ic3A7PC90ZD4KPHRkPicmYW1wO2FtcDsnIHwgJyZhbXA7bHQ7JyB8ICcmYW1w
+O2d0OycgfCAnJmFtcDtxdW90OycgfCAnJmFtcDthcG9zOyc8L3RkPgo8dGQ+Cjwv
+dGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+Cgo8cD5JbiA8YSBocmVmPSIjTlQt
+UHNldWRvQXR0VmFsdWUiPlBzZXVkb0F0dFZhbHVlPC9hPiwgYSA8YSBocmVmPSJo
+dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXJSZWYiPkNoYXJSZWY8
+L2E+IG9yIGEgPGEgaHJlZj0iI05ULVByZWRlZkVudGl0eVJlZiI+UHJlZGVmRW50
+aXR5UmVmPC9hPiBpcyBpbnRlcnByZXRlZCBpbiB0aGUKc2FtZSBtYW5uZXIgYXMg
+aW4gYSBub3JtYWwgWE1MIGF0dHJpYnV0ZSB2YWx1ZS4gIFRoZSBhY3R1YWwgdmFs
+dWUgb2YKdGhlIHBzZXVkby1hdHRyaWJ1dGUgaXMgdGhlIHZhbHVlIGFmdGVyIGVh
+Y2ggcmVmZXJlbmNlIGlzIHJlcGxhY2VkIGJ5CnRoZSBjaGFyYWN0ZXIgaXQgcmVm
+ZXJlbmNlcy4gIFRoaXMgcmVwbGFjZW1lbnQgaXMgbm90IHBlcmZvcm1lZAphdXRv
+bWF0aWNhbGx5IGJ5IGFuIFhNTCBwcm9jZXNzb3IuPC9wPgoKPHA+VGhlIDxjb2Rl
+PnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGlz
+IGFsbG93ZWQKb25seSBpbiB0aGUgcHJvbG9nIG9mIGFuIFhNTCBkb2N1bWVudC4g
+VGhlIHN5bnRheCBvZiBYTUwgY29uc3RyYWlucwp3aGVyZSBwcm9jZXNzaW5nIGlu
+c3RydWN0aW9ucyBhcmUgYWxsb3dlZCBpbiB0aGUgcHJvbG9nOyB0aGUKPGNvZGU+
+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gaXMg
+YWxsb3dlZCBhbnl3aGVyZQppbiB0aGUgcHJvbG9nIHRoYXQgbWVldHMgdGhlc2Ug
+Y29uc3RyYWludHMuPC9wPgoKPGJsb2NrcXVvdGU+CjxiPk5PVEU6IDwvYj5JZiB0
+aGUgPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1
+Y3Rpb24Kb2NjdXJzIGluIHRoZSBleHRlcm5hbCBEVEQgc3Vic2V0IG9yIGluIGEg
+cGFyYW1ldGVyIGVudGl0eSwgaXQgaXMKcG9zc2libGUgdGhhdCBpdCBtYXkgbm90
+IGJlIHByb2Nlc3NlZCBieSBhIG5vbi12YWxpZGF0aW5nIFhNTApwcm9jZXNzb3Ig
+KHNlZSA8YSBocmVmPSIjWE1MIj5bWE1MMTBdPC9hPikuPC9ibG9ja3F1b3RlPgoK
+PHA+VGhlIGZvbGxvd2luZyBwc2V1ZG8gYXR0cmlidXRlcyBhcmUgZGVmaW5lZDwv
+cD4KCjxwcmU+aHJlZiBDREFUQSAjUkVRVUlSRUQKdHlwZSBDREFUQSAjUkVRVUlS
+RUQKdGl0bGUgQ0RBVEEgI0lNUExJRUQKbWVkaWEgQ0RBVEEgI0lNUExJRUQKY2hh
+cnNldCBDREFUQSAjSU1QTElFRAphbHRlcm5hdGUgKHllc3xubykgIm5vIjwvcHJl
+PgoKPHA+VGhlIHNlbWFudGljcyBvZiB0aGUgcHNldWRvLWF0dHJpYnV0ZXMgYXJl
+IGV4YWN0bHkgYXMgd2l0aAo8Y29kZT4mbHQ7TElOSyBSRUw9InN0eWxlc2hlZXQi
+Jmd0OzwvY29kZT4gaW4gSFRNTCA0LjAsIHdpdGggdGhlCmV4Y2VwdGlvbiBvZiB0
+aGUgPGNvZGU+YWx0ZXJuYXRlPC9jb2RlPiBwc2V1ZG8tYXR0cmlidXRlLiAgSWYK
+PGNvZGU+YWx0ZXJuYXRlPSJ5ZXMiPC9jb2RlPiBpcyBzcGVjaWZpZWQsIHRoZW4g
+dGhlIHByb2Nlc3NpbmcKaW5zdHJ1Y3Rpb24gaGFzIHRoZSBzZW1hbnRpY3Mgb2Yg
+PGNvZGU+Jmx0O0xJTksgUkVMPSJhbHRlcm5hdGUKc3R5bGVzaGVldCImZ3Q7PC9j
+b2RlPiBpbnN0ZWFkIG9mIDxjb2RlPiZsdDtMSU5LClJFTD0ic3R5bGVzaGVldCIm
+Z3Q7PC9jb2RlPi48L3A+Cgo8YmxvY2txdW90ZT4KPGI+Tk9URTogPC9iPlNpbmNl
+IHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+aHJlZjwvY29kZT4gYXR0cmlidXRlIGlz
+IGEgVVJJCnJlZmVyZW5jZSwgaXQgbWF5IGJlIGEgcmVsYXRpdmUgVVJJIGFuZCBp
+dCBtYXkgY29udGFpbiBhIGZyYWdtZW50CmlkZW50aWZpZXIuIEluIHBhcnRpY3Vs
+YXIgdGhlIFVSSSByZWZlcmVuY2UgbWF5IGNvbnRhaW4gb25seSBhCmZyYWdtZW50
+IGlkZW50aWZpZXIuICBTdWNoIGEgVVJJIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5j
+ZSB0byBhIHBhcnQgb2YKdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIDxjb2Rl
+PnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nCmluc3RydWN0aW9uIChz
+ZWUgPGEgaHJlZj0iI1JGQzIzOTYiPltSRkMyMzk2XTwvYT4pLiBUaGUgY29uc2Vx
+dWVuY2UgaXMgdGhhdCB0aGUKPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHBy
+b2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gYWxsb3dzIHN0eWxlIHNoZWV0cwp0byBiZSBl
+bWJlZGRlZCBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB0aGUgPGNvZGU+eG1sLXN0
+eWxlc2hlZXQ8L2NvZGU+CnByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uPC9ibG9ja3F1
+b3RlPgoKPHA+SW4gc29tZSBjYXNlcywgc3R5bGUgc2hlZXRzIG1heSBiZSBsaW5r
+ZWQgd2l0aCBhbiBYTUwgZG9jdW1lbnQgYnkKbWVhbnMgZXh0ZXJuYWwgdG8gdGhl
+IGRvY3VtZW50LiBGb3IgZXhhbXBsZSwgZWFybGllciB2ZXJzaW9ucyBvZiBIVFRQ
+CjxhIGhyZWY9IiNSRkMyMDY4Ij5bUkZDMjA2OF08L2E+IChzZWN0aW9uIDE5LjYu
+Mi40KSBhbGxvd2VkIHN0eWxlIHNoZWV0cyB0byBiZQphc3NvY2lhdGVkIHdpdGgg
+WE1MIGRvY3VtZW50cyBieSBtZWFucyBvZiB0aGUgPGNvZGU+TGluazwvY29kZT4K
+aGVhZGVyLiAgQW55IGxpbmtzIHRvIHN0eWxlIHNoZWV0cyB0aGF0IGFyZSBzcGVj
+aWZpZWQgZXh0ZXJuYWxseSB0byB0aGUKZG9jdW1lbnQgYXJlIGNvbnNpZGVyZWQg
+dG8gb2NjdXIgYmVmb3JlIHRoZSBsaW5rcyBzcGVjaWZpZWQgYnkgdGhlCjxjb2Rl
+PnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy4g
+IFRoaXMgaXMgdGhlIHNhbWUKYXMgaW4gSFRNTCA0LjAgKHNlZSA8YSBocmVmPSJo
+dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3ByZXNlbnQvc3R5bGVzLmh0
+bWwjaC0xNC42Ij5zZWN0aW9uCjE0LjY8L2E+KS48L3A+Cgo8cD5IZXJlIGFyZSBz
+b21lIGV4YW1wbGVzIGZyb20gSFRNTCA0LjAgd2l0aCB0aGUgY29ycmVzcG9uZGlu
+Zwpwcm9jZXNzaW5nIGluc3RydWN0aW9uOjwvcD4KCjxwcmU+Jmx0O0xJTksgaHJl
+Zj0ibXlzdHlsZS5jc3MiIHJlbD0ic3R5bGUgc2hlZXQiIHR5cGU9InRleHQvY3Nz
+IiZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBocmVmPSJteXN0eWxlLmNzcyIgdHlw
+ZT0idGV4dC9jc3MiPyZndDsKCiZsdDtMSU5LIGhyZWY9Im15c3R5bGUuY3NzIiB0
+aXRsZT0iQ29tcGFjdCIgcmVsPSJzdHlsZXNoZWV0Igp0eXBlPSJ0ZXh0L2NzcyIm
+Z3Q7CiZsdDs/eG1sLXN0eWxlc2hlZXQgaHJlZj0ibXlzdHlsZS5jc3MiIHRpdGxl
+PSJDb21wYWN0IiB0eXBlPSJ0ZXh0L2NzcyI/Jmd0OwoKJmx0O0xJTksgaHJlZj0i
+bXlzdHlsZS5jc3MiIHRpdGxlPSJNZWRpdW0iIHJlbD0iYWx0ZXJuYXRlIHN0eWxl
+c2hlZXQiCnR5cGU9InRleHQvY3NzIiZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBh
+bHRlcm5hdGU9InllcyIgaHJlZj0ibXlzdHlsZS5jc3MiIHRpdGxlPSJNZWRpdW0i
+CnR5cGU9InRleHQvY3NzIj8mZ3Q7PC9wcmU+Cgo8cD5NdWx0aXBsZSA8Y29kZT54
+bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYXJl
+CmFsc28gYWxsb3dlZCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgc2VtYW50aWNzIGFz
+IHdpdGggPGNvZGU+TElOSwpSRUw9InN0eWxlc2hlZXQiPC9jb2RlPi4gRm9yIGV4
+YW1wbGUsPC9wPgoKPHByZT4mbHQ7TElOSyByZWw9ImFsdGVybmF0ZSBzdHlsZXNo
+ZWV0IiB0aXRsZT0iY29tcGFjdCIgaHJlZj0ic21hbGwtYmFzZS5jc3MiCnR5cGU9
+InRleHQvY3NzIiZndDsKJmx0O0xJTksgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVl
+dCIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWV4dHJhcy5jc3MiCnR5cGU9
+InRleHQvY3NzIiZndDsKJmx0O0xJTksgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVl
+dCIgdGl0bGU9ImJpZyBwcmludCIgaHJlZj0iYmlncHJpbnQuY3NzIgp0eXBlPSJ0
+ZXh0L2NzcyImZ3Q7CiZsdDtMSU5LIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY29t
+bW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiJmd0OzwvcHJlPgoKPHA+d291bGQgYmUg
+ZXF1aXZhbGVudCB0bzo8L3A+Cgo8cHJlPiZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0
+ZXJuYXRlPSJ5ZXMiIHRpdGxlPSJjb21wYWN0IiBocmVmPSJzbWFsbC1iYXNlLmNz
+cyIKdHlwZT0idGV4dC9jc3MiPyZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBhbHRl
+cm5hdGU9InllcyIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWV4dHJhcy5j
+c3MiCnR5cGU9InRleHQvY3NzIj8mZ3Q7CiZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0
+ZXJuYXRlPSJ5ZXMiIHRpdGxlPSJiaWcgcHJpbnQiIGhyZWY9ImJpZ3ByaW50LmNz
+cyIKdHlwZT0idGV4dC9jc3MiPyZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBocmVm
+PSJjb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyI/Jmd0OzwvcHJlPgoKCgo8aHIg
+dGl0bGU9IlNlcGFyYXRvciBmcm9tIGZvb3RlciI+Cgo8aDI+CjxhIG5hbWU9IlJl
+ZmVyZW5jZXMiPjwvYT5BIFJlZmVyZW5jZXM8L2gyPgoKPGRsPgoKPGR0Pgo8YSBu
+YW1lPSJIVE1MIj5IVE1MNDA8L2E+CjwvZHQ+CjxkZD5Xb3JsZCBXaWRlIFdlYgpD
+b25zb3J0aXVtLiA8aT5IVE1MIDQuMCBTcGVjaWZpY2F0aW9uLjwvaT4gVzNDIFJl
+Y29tbWVuZGF0aW9uLiBTZWUKPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
+UkVDLWh0bWw0MCI+aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MDwvYT4K
+PC9kZD4KCjxkdD4KPGEgbmFtZT0iUkZDMjA2OCI+UkZDMjA2ODwvYT4KPC9kdD4K
+PGRkPlIuIEZpZWxkaW5nLCBKLiBHZXR0eXMsIEouIE1vZ3VsLApILiBGcnlzdHlr
+IE5pZWxzZW4sIGFuZCBULiBCZXJuZXJzLUxlZS4gIDxpPkh5cGVydGV4dCBUcmFu
+c2ZlcgpQcm90b2NvbCAtLSBIVFRQLzEuMS48L2k+LiBJRVRGIFJGQyAyMDY4LiBT
+ZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjA2OC50eHQi
+Pmh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIwNjgudHh0PC9hPi48L2RkPgoK
+PGR0Pgo8YSBuYW1lPSJSRkMyMzk2Ij5SRkMyMzk2PC9hPgo8L2R0Pgo8ZGQ+VC4g
+QmVybmVycy1MZWUsIFIuIEZpZWxkaW5nLCBhbmQKTC4gTWFzaW50ZXIuICA8aT5V
+bmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUkkpOiBHZW5lcmljClN5bnRh
+eDwvaT4uIElFVEYgUkZDIDIzOTYuIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3Lmll
+dGYub3JnL3JmYy9yZmMyMzk2LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMv
+cmZjMjM5Ni50eHQ8L2E+LjwvZGQ+Cgo8ZHQ+CjxhIG5hbWU9IlhNTCI+WE1MMTA8
+L2E+CjwvZHQ+CjxkZD5Xb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLiA8aT5FeHRl
+bnNpYmxlCk1hcmt1cCBMYW5ndWFnZSAoWE1MKSAxLjAuPC9pPiBXM0MgUmVjb21t
+ZW5kYXRpb24uIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4
+L1JFQy14bWwtMTk5ODAyMTAiPmh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVD
+LXhtbC0xOTk4MDIxMDwvYT4KPC9kZD4KCjwvZGw+CgoKCgo8aDI+CjxhIG5hbWU9
+InJhdGlvbmFsZSI+PC9hPkIgUmF0aW9uYWxlPC9oMj4KCjxwPlRoZXJlIHdhcyBh
+biB1cmdlbnQgcmVxdWlyZW1lbnQgZm9yIGEgc3BlY2lmaWNhdGlvbiBmb3Igc3R5
+bGUgc2hlZXQKbGlua2luZyB0aGF0IGNvdWxkIGJlIGNvbXBsZXRlZCBpbiB0aW1l
+IGZvciB0aGUgbmV4dCByZWxlYXNlIGZyb20KbWFqb3IgYnJvd3NlciB2ZW5kb3Jz
+LiAgT25seSBieSBjaG9vc2luZyBhIHNpbXBsZSBtZWNoYW5pc20gY2xvc2VseQpi
+YXNlZCBvbiBhIHByb3ZlbiBleGlzdGluZyBtZWNoYW5pc20gY291bGQgdGhlIHNw
+ZWNpZmljYXRpb24gYmUKY29tcGxldGVkIGluIHRpbWUgdG8gbWVldCB0aGlzIHJl
+cXVpcmVtZW50LjwvcD4KCjxwPlVzZSBvZiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rp
+b24gYXZvaWRzIHBvbGx1dGluZyB0aGUgbWFpbiBkb2N1bWVudApzdHJ1Y3R1cmUg
+d2l0aCBhcHBsaWNhdGlvbiBzcGVjaWZpYyBwcm9jZXNzaW5nIGluZm9ybWF0aW9u
+LjwvcD4KCjxwPlRoZSBtZWNoYW5pc20gY2hvc2VuIGZvciB0aGlzIHZlcnNpb24g
+b2YgdGhlIHNwZWNpZmljYXRpb24gaXMgbm90IGEKY29uc3RyYWludCBvbiB0aGUg
+YWRkaXRpb25hbCBtZWNoYW5pc21zIHBsYW5uZWQgZm9yIGZ1dHVyZSB2ZXJzaW9u
+cy4KVGhlcmUgaXMgbm8gZXhwZWN0YXRpb24gdGhhdCB0aGVzZSB3aWxsIHVzZSBw
+cm9jZXNzaW5nIGluc3RydWN0aW9uczsKaW5kZWVkIHRoZXkgbWF5IG5vdCBpbmNs
+dWRlIHRoZSBsaW5raW5nIGluZm9ybWF0aW9uIGluIHRoZSBzb3VyY2UKZG9jdW1l
+bnQuPC9wPgoKCgoKPC9ib2R5Pgo8L2h0bWw+Cg==
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/Readme.txt b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/Readme.txt
new file mode 100644
index 0000000..3a663b7
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/Readme.txt
@@ -0,0 +1,117 @@
+Example Signatures[1] using Encryption[2] key information and
+Additional Security URIs[3], Encrypted Data[2] and Decryption
+Transform[4]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] http://www.w3.org/Encryption/2001/Drafts/xmlenc-core/
+[3] http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt
+[4] http://www.w3.org/TR/xmlenc-decrypt
+
+***
+Some of these signature are WITHOUT cryptographic merit;
+for example, key transport of an HMAC key is meaningless.
+These are provided solely for testing purposes.
+***
+
+Private keys necessary for performing the verification
+and decryption are provided in the PKCS#12 file ids.p12,
+encrypted under the pass phrase "Our Little Secret". I
+may have done some of the ASN.1 encoding in this P12
+incorrectly; I hope not. Private keys are also available
+in PKCS#8 encoding; rsa.p8, dh1.p8.
+
+RSA/OAEP is presently poorly defined; I assume MGF1/SHA-1.
+
+Secret keys are identified by key name as follows:
+
+ Key Name | Algorithm | Key Value
+----------+-----------+-----------
+   bob    |   3des    | "abcdefghijklmnopqrstuvwx".getBytes ("ASCII")
+   job    |  aes-128  | "abcdefghijklmnop".getBytes ("ASCII")
+   jeb    |  aes-192  | "abcdefghijklmnopqrstuvwx".getBytes ("ASCII")
+   jed    |  aes-256  | "abcdefghijklmnopqrstuvwxyz012345".getBytes ("ASCII")
+
+. encrypt-content-aes128-cbc-kw-aes192.xml
+. encrypt-content-aes192-cbc-dh-sha512.xml
+. encrypt-content-tripledes-cbc.xml
+. encrypt-data-aes128-cbc.xml
+. encrypt-data-aes192-cbc-kw-aes256.xml
+. encrypt-data-aes256-cbc-kw-tripledes.xml
+. encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
+. encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml
+. encrypt-element-aes128-cbc-rsa-1_5.xml
+. encrypt-element-aes192-cbc-ref.xml
+. encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
+. encrypt-element-tripledes-cbc-kw-aes128.xml
+  Encrypted content, element and data. RSA private key has
+  friendly name "RSA" in the P12, and is rsa.p8.
+  DH private key has ID "DH1", and is dh1.p8.
+
+. encrypt-content-aes256-cbc-prop.xml
+  Contains a useless EncryptionProperty.
+
+. encrypt-element-aes256-cbc-carried-kw-aes256.xml
+  External EncryptedKey contains a CarriedKeyName which
+  is referenced by a KeyName in the EncryptedData; the
+  key for Recipient "someone else" is not for you; the
+  key for Recipient "you" is.
+
+. encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
+  External EncryptedKey is identified by a RetrievalMethod
+  in the EncryptedData.
+
+. decryption-transform.xml
+  Decryption transform.
+
+. decryption-transform-except.xml
+  Decryption transform with Except.
+
+All signatures are performed with nontruncated HMAC
+algorithms.
+
+For debugging purposes, where chosen, the MAC key is
+"abcdefghijklmnopqrstuvwxyz012345".getBytes ("ASCII"). Where
+agreed, it has length equal to the HMAC output length; e.g., 256
+bits for HMAC/SHA-256.
+
+. encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
+  RIPEMD-160 message digest; HMAC/RIPEMD-160 key is wrapped
+  using triple DES. The decryption key is from the above table,
+  identified by the key name "bob".
+
+. encsig-sha256-hmac-sha256-kw-aes128.xml
+  SHA-256 message digest; HMAC/SHA-256 key is wrapped using
+  AES-128. The decryption key is from the above table, identified
+  by the key name "job".
+
+. encsig-sha384-hmac-sha384-kw-aes192.xml
+  SHA-384 message digest; HMAC/SHA-384 key is wrapped using
+  AES-192. The decryption key is from the above table, identified
+  by the key name "jeb".
+
+. encsig-sha512-hmac-sha512-kw-aes256.xml
+  SHA-512 message digest; HMAC/SHA-512 key is wrapped using
+  AES-256. The decryption key is from the above table, identified
+  by the key name "jed".
+
+. encsig-hmac-sha256-rsa-1_5.xml
+  HMAC/SHA-256 keys is transported using RSA/OAEP. Your private
+  key has friendly name "RSA" in the P12.
+
+. encsig-hmac-sha256-rsa-oaep-mgf1p.xml
+  HMAC/SHA-256 keys is transported using RSA/PKCS#1. Your private
+  key has friendly name "RSA" in the P12.
+
+. encsig-hmac-sha256-dh.xml
+  HMAC/SHA-256 key is agreed using Diffie Hellman. Your private
+  key has friendly name "DH1" in the P12.
+
+. encsig-hmac-sha256-kw-tripledes-dh.xml
+  HMAC/SHA-256 key is wrapped using triple DES. The decryption
+  key is agreed using Diffie Hellman. Your private key has
+  friendly name "DH1" in the P12.
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Monday, March 4, 2002
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml
new file mode 100644
index 0000000..74eec57
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192" />
+          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+            <KeyName>jeb</KeyName>
+          </KeyInfo>
+          <CipherData>
+            <CipherValue>
+              JbjZH7Mq564oMybpvCHWYM/5ER3eFsAV
+            </CipherValue>
+          </CipherData>
+        </EncryptedKey>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          YDYTxR+smxZDSVoXXEp3n6HzTgWqV7ZlG6I1lmEv7zLGZBF/o7eqe5QGT6L3DPNW
+          geflA8vVJHxwliixWcvHCnNKQkx+Sw8YbIknCQyr4mqtXEmHhsie5XYTEyqgKLVP
+          YdNXf56wLUTMEmBqq7cto9OrYcBWkrDcQQvHmDkHuG+Nom4m+623GsB0FNts6VyN
+          sdGMwo4K0bEFReLL04l6It+cgLJ2q+LKdBoMQL59IAQmrwi0bkiqee2cLlDuGyQ1
+          KD9IQ1qtlJpvQujN4xNVWT00UjtWxmpSMID/Kue/AnXn7Cf8zw1ZZQitgh8uWOX2
+          uMy99F2YlxqIK1r+MeXHuZDNf75S8dFaKIKtHMf7ioA=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </PaymentInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/decryption-transform-except.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/decryption-transform-except.xml
new file mode 100644
index 0000000..bdd2251
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/decryption-transform-except.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-0" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          cX6lnfgmvWuxyiQgNhzAq1lYggW2M5GziFgNBQju3xcnDqlzf5LSjeyBnbL0Q7ws
+          8XhySFCrdwIi5mVxyfdFkVrTlzQQ0viaqTDgi9PQRgZMOImGGWij3wbmf9XseHHt
+          6q8V7LPjMFQAnsLDQgKf4gzzOnhtKf15GfTEpGvUnNn2dLDxw+hDcD1N54/bjSQs
+          uTiL7PgGQ5g4u4eaXRRLWeAGsIf5QgdQG3GLiOZIX1LJ5bREKgXeKrtJJI97xUX3
+          3vaF+tKRcSFBFIMjFrw271bFj4vvvQZfSS6xX+BKXHOUu8C4NH9Le8pA9o4NgCB8
+          tWA8W3iI5/BGEZve0Me9byvPHYjRXlbG+YqysVTmzfw=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-1">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+      <CipherData>
+        <CipherValue>
+          x3aR5pJ5pepFFH5ENv61pZG4pVwNKaM+H9oyY4qG6d8l/C0J1iGv6c8dyLp0YQ2k
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </PaymentInfo>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          <Transform Algorithm="http://www.w3.org/2001/04/decrypt#">
+            <Except xmlns="http://www.w3.org/2001/04/decrypt#" URI="#encrypt-data-1" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <DigestValue>5Oe9qba6preOZG1NZAYK2/6pu9RCon9vRJ9hVLDpeng=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      LuHrz9+WG7/c4Q81tFboNZg2cktWbZcRfp08XrmgKy1GDm9xSfTYCA==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            imup6lmki4rAmUstKb/xdBRMWNtQ+pDN97ZnLA9X3lKbkEHtYFyjQ3uActgVSJ75
+            iVRuKxz4Cb5RzVm25EaKmKq8rif1MtBIi6jjDJxmIdNaEKG9zVTf9giJx1N9I0t3
+            oh1fAVZDSrzKzJGQ2WvDfIfFHdJMtB3C0VKGmLZR7Xk=
+          </P>
+          <Q>
+            xDve3j7sEnh4rIzM5gK+5/gxxFU=
+          </Q>
+          <G>
+            NLugAf6IZJxo3BCOi5yrGEVwtlEzXcnndXhd0Tz38CnQKc4SEupm4PyP5TmLvK64
+            TDfOD7sno/W5oI1KZdimfW2c4r/6waNzZSvicMOWhLYY621Nn6njBc8VNwoxWpzC
+            XhKm70b8+D4YZMn/eU5DN8dvhTv/bNK21FfJqjp033U=
+          </G>
+          <Y>
+            W7dOmH/vWqocVCiqaxj6soxVXfR8XpMdY2Zv4Amjr3n81geyOLb6IZ+l7MUbdp85
+            29DQzuoVTthVpB9X4JKCprZIzifOTM1PFflTBzjx7egJwJWAIVdWyiIPjke6Va+w
+            uV2n4Rl/cgCvrXK5cTov5C/Bpaf6o+qrrDGFBLLZTF4=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+    </KeyInfo>
+  </Signature>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/decryption-transform.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/decryption-transform.xml
new file mode 100644
index 0000000..50d68b3
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/decryption-transform.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-0" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          SE3HkQevYxzuN9LoMH3QIYHK0X7DBlobhiTbRucgKcTKt9DsUJIcd6JZV6lrw/4x
+          YICyq6YM73IWpibspxgz/0chhvWem9sYZvWTuTtZgHzeY0Uri6bpXqBEn1YT0K6B
+          chwfv1myfp91EmdPHU+shH6ZEyYkHJUMss58iIawIuVsIfpCO7xDKgfs/glnN3os
+          epY0KvAMZSnwUAf42fQ3TlahLTR+B52AmdodwaCwQlwQwrC7RH0FtNiiLQA9SA2t
+          //StKWcyHjswUCejfKLdjv6bK+WmBxmnNWtmI9DYkjJ6V5pYU1MVw+JG410O+gaa
+          fnNWxlWa+BGwcTaz+KNrP8bIqli8IoJJgxXIUqfb734=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </PaymentInfo>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          <Transform Algorithm="http://www.w3.org/2001/04/decrypt#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <DigestValue>wSvPYqTcpLfX2mKXibtsmm7FDu8N+/BObM0+bGaeXhk=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      O0VYUdslJ8t2EURD0T/v2nNrFQMo42vzvfAhooZrDbkuLbCj6/Hxmw==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            imup6lmki4rAmUstKb/xdBRMWNtQ+pDN97ZnLA9X3lKbkEHtYFyjQ3uActgVSJ75
+            iVRuKxz4Cb5RzVm25EaKmKq8rif1MtBIi6jjDJxmIdNaEKG9zVTf9giJx1N9I0t3
+            oh1fAVZDSrzKzJGQ2WvDfIfFHdJMtB3C0VKGmLZR7Xk=
+          </P>
+          <Q>
+            xDve3j7sEnh4rIzM5gK+5/gxxFU=
+          </Q>
+          <G>
+            NLugAf6IZJxo3BCOi5yrGEVwtlEzXcnndXhd0Tz38CnQKc4SEupm4PyP5TmLvK64
+            TDfOD7sno/W5oI1KZdimfW2c4r/6waNzZSvicMOWhLYY621Nn6njBc8VNwoxWpzC
+            XhKm70b8+D4YZMn/eU5DN8dvhTv/bNK21FfJqjp033U=
+          </G>
+          <Y>
+            W7dOmH/vWqocVCiqaxj6soxVXfR8XpMdY2Zv4Amjr3n81geyOLb6IZ+l7MUbdp85
+            29DQzuoVTthVpB9X4JKCprZIzifOTM1PFflTBzjx7egJwJWAIVdWyiIPjke6Va+w
+            uV2n4Rl/cgCvrXK5cTov5C/Bpaf6o+qrrDGFBLLZTF4=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+    </KeyInfo>
+  </Signature>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dh0.p8 b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dh0.p8
new file mode 100644
index 0000000..bd3683d
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dh0.p8
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dh1.p8 b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dh1.p8
new file mode 100644
index 0000000..5694689
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dh1.p8
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dsa.p8 b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dsa.p8
new file mode 100644
index 0000000..8e4a85c
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/dsa.p8
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml
new file mode 100644
index 0000000..21467fb
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192" />
+          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+            <KeyName>jeb</KeyName>
+          </KeyInfo>
+          <CipherData>
+            <CipherValue>
+              IbjZH7Mq564oMybpvCHWYM/5ER3eFsAV
+            </CipherValue>
+          </CipherData>
+        </EncryptedKey>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          YDYTxR+smxZDSVoXXEp3n6HzTgWqV7ZlG6I1lmEv7zLGZBF/o7eqe5QGT6L3DPNW
+          geflA8vVJHxwliixWcvHCnNKQkx+Sw8YbIknCQyr4mqtXEmHhsie5XYTEyqgKLVP
+          YdNXf56wLUTMEmBqq7cto9OrYcBWkrDcQQvHmDkHuG+Nom4m+623GsB0FNts6VyN
+          sdGMwo4K0bEFReLL04l6It+cgLJ2q+LKdBoMQL59IAQmrwi0bkiqee2cLlDuGyQ1
+          KD9IQ1qtlJpvQujN4xNVWT00UjtWxmpSMID/Kue/AnXn7Cf8zw1ZZQitgh8uWOX2
+          uMy99F2YlxqIK1r+MeXHuZDNf75S8dFaKIKtHMf7ioA=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </PaymentInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml
new file mode 100644
index 0000000..d124278
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+          <KA-Nonce>
+            bm9uY2U=
+          </KA-Nonce>
+          <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" />
+          <OriginatorKeyInfo>
+            <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+              <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+                <P>
+                  plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+                  6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+                  whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+                </P>
+                <Q>
+                  9jJXQijNovoq6QUBFcEUYwUvyTM=
+                </Q>
+                <Generator>
+                  PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+                  lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+                  3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+                </Generator>
+                <Public>
+                  Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+                  NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+                  m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+                </Public>
+              </DHKeyValue>
+            </KeyValue>
+            <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+              <X509Certificate>
+                MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+                czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+                Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+                DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+                T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+                JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+                n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+                9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+                qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+                Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+                wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+                m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+                oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+                BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+                AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+                cU0=
+              </X509Certificate>
+            </X509Data>
+          </OriginatorKeyInfo>
+          <RecipientKeyInfo>
+            <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+              <X509Certificate>
+                MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+                aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+                Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+                DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+                T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+                JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+                n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+                9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+                qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+                Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+                VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+                wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+                orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+                BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+                AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+                Yos=
+              </X509Certificate>
+            </X509Data>
+          </RecipientKeyInfo>
+        </AgreementMethod>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          5jIlxXZGhx8vUNbL0ZvdRry6mPapX8qLYlDgy3tE6nRbnBRWACviYQAXBqvDfn1R
+          TKmBWZ5NoJobM8lXWOk2nNQIuSQojcFYRuvcWU7DffDVX7dUCAVRJp6PS/5V1IHR
+          JJ2WBagWSW1lFW9mqjfe0ZflEZGYI3/5kUYQIpbMvEuXoF8129VGiKalZsCVTRxd
+          /IsdT8x/7L57GlGq0OzCMI5zG3QrBV7wUOoqBu5SxS8QUvUPucH8hsD4Bq4BwVEa
+          GlUVAj7H3HYYo7fviTO4i2lTMunGW9rcJVnKXjDM/Mds3oM4zbBo/Ao3m3rmpUUz
+          AwSe6ofh6ML418+cyCaRUoVQOlG+VwkHEKUiYYGhsKY=
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </PaymentInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml
new file mode 100644
index 0000000..03a7315
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-0" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          H8n1OuEJFyUgUguDFF6ml8nRbA0IaDYgmtGelWT4V7CSz9q/AvtfxyMzUH+tQZ+F
+          jyXh3otR1+V1+8EsevzEq5nUmNKl+wyxQmWaUvbvXpSwAJnlJdyvnP56JiXUBS+p
+          C2KzlO9kk8l6awtuRd9Z6eVjngwTf7kNprmu5Bv0o+x7dcq96G8wGLvMThbs4uxk
+          iIDK5+qGBzzIlFw3GG82MKmnVBveQw3LD52y76yBtoayuAJFJMnrXa0OEAaBRSI2
+          fjPNGJV3sCyKZDHqGlsQ4X+VvXzevLbBLkFy1xH9/zoUXo8cEaTvsIOBYu/Xn/CJ
+          y/dpe/dvOqqji+9vFccAyrBHxHeYSonuFsxfpSDVC6Y=
+        </CipherValue>
+      </CipherData>
+      <EncryptionProperties>
+        <EncryptionProperty Target="#encrypt-data-0">
+          <Certification xmlns="urn:example:prop">
+            certifiable
+          </Certification>
+        </EncryptionProperty>
+      </EncryptionProperties>
+    </EncryptedData>
+  </PaymentInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml
new file mode 100644
index 0000000..f5dafe9
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>bob</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          uchJT2QyzQe7BoBaDYKPR5BDgEW8jsJ3UOGEYz9EVrBKVztYfcu0xhif5Y9kqtyx
+          DDa7woNcTyhwQDZh9jGr5hzkcjrsKfMjJw+PnKNZzc+KMW0z861L8sdhdl8TA+bt
+          yudfaCEJaH4RdHABp+VMzL5CrXr5skvubolWs1KzUtqbRekkxucknzJmnqRY8yPp
+          4iBvVuvus+Bk0pj271NWu13CmHvdJRMMDSX30JMfsecW6mfdF5xjoFciL8VnemzJ
+          qt0SUVjMzoeY0PnCdk09Ej2OZdj8AtkLPCEKeiBBD+coCf5F8WaLrPTRPgjoAtiN
+          Wda+McaZPJje1IfoAKGTcg==
+        </CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </PaymentInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml
new file mode 100644
index 0000000..8ae0a06
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <KeyName>job</KeyName>
+  </KeyInfo>
+  <CipherData>
+    <CipherValue>
+      QMpxhXq1DtBeyC9KfSaMQWrEtefe+e935gF/x62spvmL6IW0XeS0W4Kk31OgWzN0
+    </CipherValue>
+  </CipherData>
+</EncryptedData>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml
new file mode 100644
index 0000000..55ccb1e
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          4AAgyi3M7xNdBimbQZKdGJLn3/cS4Yv8QKuA01+gUnY=
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+  <CipherData>
+    <CipherValue>
+      50lv94d/DFJirJXYOUXaBlrO+7gIXpx8cqH+G2xvE4mueoIxmGs8RH7FBXwjuMgf
+    </CipherValue>
+  </CipherData>
+</EncryptedData>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml
new file mode 100644
index 0000000..14e2b92
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>bob</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          ZyJbVsjRM4MEsswwwHz57aUz1eMqZHuEIoEPGS47CcmLvhuCtlzWZ9S/WcVJZIpz
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+  <CipherData>
+    <CipherValue>
+      Lp2ZWyJERT05icmHvWWbEtCCfmB2jvSlSclhS0oj3A3PU90aE6v+bFFQxrHw7VUd
+    </CipherValue>
+  </CipherData>
+</EncryptedData>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
new file mode 100644
index 0000000..c9c30e0
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+        <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <OAEPparams>
+          MTIzNDU2Nzg=
+        </OAEPparams>
+      </EncryptionMethod>
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <X509Data>
+          <X509Certificate>
+            MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+            dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+            dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+            9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+            McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+            a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+            HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+            BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+            TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+            2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+          </X509Certificate>
+        </X509Data>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          1SVctZA/RB6vVjsu5NYTxowdvsViJJ1skDXX09RmNU3YlCuPpSqWWhCU5u5ILfr9
+          6AFcascXbdFyEZ9tjDhK8Nid2MEqkR/Mc9zFHf7mPMnO7C8bRggkjjdILSIF/Ft7
+          FXzm/DFP50IF3zPe/n5jy2Nk8uRvTmKUDcnoV6qnUgY=
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+  <CipherData>
+    <CipherValue>
+      QOImekuU44UeCmVaMma9bCT5h5a6mWXDSndTB81jvHw=
+    </CipherValue>
+  </CipherData>
+</EncryptedData>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml
new file mode 100644
index 0000000..29daa4e
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+  <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+        <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      </EncryptionMethod>
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <X509Data>
+          <X509Certificate>
+            MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+            dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+            dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+            9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+            McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+            a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+            HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+            BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+            TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+            2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+          </X509Certificate>
+        </X509Data>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          S5SqVG+QxxpCNWobuqQFAI6db1pTEpWNMQXQVJAPjlfmvnVmTtq5v6fgMA2l/r7M
+          iX7gUPZthrKezkSavDfi057cK6YKpC5/KACXjNJvUoaVXj/aXpcoMOO+ZTPq36eo
+          pyeW99DWYgCbY88Kf9R3r3QMx/ogwjScfRVJTRZL3Lo=
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+  <CipherData>
+    <CipherValue>
+      HG02AxNyn4iA9NH5x+PQ9lgPNzTkljThotXWKz0UYrE=
+    </CipherValue>
+  </CipherData>
+</EncryptedData>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml
new file mode 100644
index 0000000..ae34928
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
+        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <X509Data>
+            <X509Certificate>
+              MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+              AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+              b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+              dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+              AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+              b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+              dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+              9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+              McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+              a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+              HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+              BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+              TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+              2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+            </X509Certificate>
+          </X509Data>
+        </KeyInfo>
+        <CipherData>
+          <CipherValue>
+            heZshNX5m7arS3OmR72+8WNCMMpznxE41dLWkgd6XJpzl+IN2xuijAf4YPEjjJmZ
+            nt9PlO3/hiHl0Cvpg5vMR6AhvL49BvCz9JCeMG6x3MHBiKbRNhyEq2rX7o1GdJhC
+            5cm35Q/ZDKV9DHG8jWmPcOb8yKU9NYo2LJKDb3YHOJY=
+          </CipherValue>
+        </CipherData>
+      </EncryptedKey>
+    </KeyInfo>
+    <CipherData>
+      <CipherValue>
+        0wkECpTy60/FDwbVM4zgd9qJVjR4h0q4PLm5pyyIxAuhbEh0art03yEikmbWBt2H
+        7qOk2G9iufUdwwqNPuZV5Qw5Rg2FMvTx234lDERGn5p+hhjOTcss5JF9QDzgdiec
+        KABX3vbCESi/f3uwQ8BYDT+6SnxTR+xtcNv5xhbUCIFk/TaenSWx6p6fntTwTl1e
+        lpwnI0EtM1yf4a9tBiH9PNd36BUv2rvSi4cZvJqSB3ZKvGtuwwyRzOzlzl259d1u
+        QuoYysTBEAHw/WIop8eAexU9PUv7UbTkQAQag1yStda+GepVdpXEpu4hcxXQcvfs
+        9AQgkAgh4JKrnY4Bhz2B/e4CHHfbEedDOi+FVYlZuLn0CzrKMnM+1nUmqxJVWHz7
+        hytidpuqNRw3gcMkYvgH6g==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml
new file mode 100644
index 0000000..b092d7f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
+    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <KeyName>jeb</KeyName>
+    </KeyInfo>
+    <CipherData>
+      <CipherReference URI="">
+        <Transforms>
+          <Transform xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath xmlns:rep="http://www.example.org/repository">self::text()[parent::rep:CipherValue[@Id="example1"]]</XPath>
+          </Transform>
+          <Transform xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+        </Transforms>
+      </CipherReference>
+    </CipherData>
+  </EncryptedData>
+  <CipherValue xmlns="http://www.example.org/repository" Id="example1">
+    zih1MFU6Px1m2U1lSEIV9LUIsnb3SIWBfRHlRrOWKFFFcVvXiE6z3nCbkNYMuy1T
+    nPwXDd9/BkOGiPuFT2jixN7Zowe2ANK1dZXKVjZ1+ACx+Kg17U+EMPEuq481OW7e
+    wm0vnbur0L2lCXb4DP7c6sotV89W53v2MlaYqWHhlBO/zasqwhl6q/c/L/GdPUHH
+    ovKZ+24ZWYktxCLEXMslIAysQ0UFBLolrtC/7XDgYY9s4UvbedgeqbrdnxQ4LiRn
+    L+aKN1bnKF3KlWKCJFvVrRESriGPBfpasWA/A1LOK333a8LaOlS7RFamflfICk+t
+    VqCspVnIs6vBBtrGLI5SsJS+rh1r42jI/h/ivELUOmUq1sZCFQvEhx7AiHi4/9SY
+    LWcR4w3ZH3aqFL/XtAzKYQ==
+  </CipherValue>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml
new file mode 100644
index 0000000..3594a7f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <KeyName>Foo Key</KeyName>
+    </KeyInfo>
+    <CipherData>
+      <CipherValue>
+        pdDtiyd7XQ/BFEEN0PMJuHnLUfCY+bJlsW+q04OiKSPnRd4/dS1tjaTfj5dPpGXe
+        cY3fJvRsq9QP1CJiwyEC/EQ1zSLbzwOtZ+NtxtsFgYvPBJ9t86ZcXIjlErQ85z3L
+        wnb8rSHpE9tu4tJ1rjgf2i6NCbdFnSMXLSDgLEs48+gkX0cJCmKxzRaSE4cV0OSl
+        hBWND4EYzX1M679VlSYrI0de+lSPO3Vx+y/TuZ5Vo+uu9+YP+ce0LRkx2BicjjsP
+        QO9sp+yjHPNDIV1Z7VHsDIWqqmBaNQo3GuzF5WzWgaXTKnPv/IgUQn+1t3EtgHyb
+        JhnfR/1em16z/Zaf9Uy1Lfd//yfEJ9BCjqwe1UjwN6ytu1v2BHd+8bVjD2o+Dg8V
+        7ayOLlkWOTOLvtJMPOXPqw==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Recipient="someone else">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>ned</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          EWlIkFPGrkeW4cyjWSznLVoClVh/OEC7Klya9d9o7R6wll6JswZb2w==
+        </CipherValue>
+      </CipherData>
+      <CarriedKeyName>Foo Key</CarriedKeyName>
+    </EncryptedKey>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Recipient="you">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          bsL63D0hPN6EOyzdgfEmKsAAvoJiGM+Wp9a9KZM92IKdl7s3YSntRg==
+        </CipherValue>
+      </CipherData>
+      <CarriedKeyName>Foo Key</CarriedKeyName>
+    </EncryptedKey>
+  </KeyInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
new file mode 100644
index 0000000..5fb336a
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+            <KA-Nonce>
+              bm9uY2U=
+            </KA-Nonce>
+            <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160" />
+            <OriginatorKeyInfo>
+              <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+                <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+                  <P>
+                    plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+                    6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+                    whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+                  </P>
+                  <Q>
+                    9jJXQijNovoq6QUBFcEUYwUvyTM=
+                  </Q>
+                  <Generator>
+                    PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+                    lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+                    3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+                  </Generator>
+                  <Public>
+                    Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+                    NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+                    m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+                  </Public>
+                </DHKeyValue>
+              </KeyValue>
+              <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+                <X509Certificate>
+                  MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                  DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                  cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                  MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+                  DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                  cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+                  czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+                  Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+                  DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+                  T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+                  JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+                  n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+                  9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+                  qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+                  Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+                  wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+                  m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+                  oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+                  BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+                  AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+                  cU0=
+                </X509Certificate>
+              </X509Data>
+            </OriginatorKeyInfo>
+            <RecipientKeyInfo>
+              <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+                <X509Certificate>
+                  MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                  DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                  cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                  MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+                  DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                  cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+                  aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+                  Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+                  DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+                  T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+                  JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+                  n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+                  9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+                  qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+                  Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+                  VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+                  wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+                  orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+                  BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+                  AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+                  Yos=
+                </X509Certificate>
+              </X509Data>
+            </RecipientKeyInfo>
+          </AgreementMethod>
+        </KeyInfo>
+        <CipherData>
+          <CipherValue>
+            qKWnCxVIlNvPEqBMxhCaY6z9NK0ZFCmRef1U5wbIMPaR/g2Zdw7VZg==
+          </CipherValue>
+        </CipherData>
+      </EncryptedKey>
+    </KeyInfo>
+    <CipherData>
+      <CipherValue>
+        betMfG/VMLdwNGdkspCrJSo092PltInklQisKd8ImQgeFMzjn73OpXhK0KJtB9IB
+        1xGjENZ8Yzu625ehhCZGGFK4mp8DkIE7Sfw7O+5UEqprE/cGrWL0bbcz0U7X2Evh
+        4/9va6h+DHAzmVYW7bqsa0WkiHkELRq44ORdSzyPUIwpGUCsOWyThsYfIn4uhIHQ
+        NJVTKPRHTb5H5lsxNtobSeXACSYAHk/BmJM99h4IQ9Gh7bCkhkmZsIvo/lNOW+6r
+        xtvLqHfYw9XhJe7hL0Q5EluMCBZQJ/Vx2r5lTXzBeonlurpzNdRa+ClKSVRUwKYH
+        Vjemr/o+Y4e4r8gD3TVP3auVuUCmi3XLpj4WjOsPDcekzZUgXA/xuJ+7jHXjOEOK
+        RViMiwIk0cqOa6s0Qg63EQ==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
new file mode 100644
index 0000000..7311b84
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <RetrievalMethod Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey" URI="#encrypt-key-0" />
+    </KeyInfo>
+    <CipherData>
+      <CipherValue>
+        cudR6Hg0xqhrOjbvQz4C/WOdHbcB7Duc+xFxbObkfkW6jXweDOf8Tq87FPbj5bby
+        oCLbWqq3ap/zx/gN8Xv3Fj6fYUz3dIb1wzXy7B0/3me7i4fBHyGropflLi7iEag2
+        WU7aGJ0CA9/jQr6Td2qhH0CDU47QN9eK/PVMPPfLX1D1A90uK32wPn+SCysE58Q3
+        rCi7Jwo+OsrxT0qqjP82T3FjVi0i/dsnPb5GQWLE3/y7OsIuknuMRO4mWma+bO/m
+        aAN9JNeom5Kn3IKHCK2+kyx+LsGo2daKxF7RF9QqlaA/imsMS4trRjZjYhgfgm96
+        kb1l4AI7VZcfRXwYdzLqKNHty6ZxbSQBMeEca0mEuIbor7IH34641a/BuFME/BLm
+        MoVaLUCE0rg1e1U0S18UCg==
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-key-0">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          bsL63D0hPN6EOyzdgfEmKsAAvoJiGM+Wp9a9KZM92IKdl7s3YSntRg==
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml
new file mode 100644
index 0000000..1ede064
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128" />
+        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <KeyName>job</KeyName>
+        </KeyInfo>
+        <CipherData>
+          <CipherValue>
+            dV45TUpJbidb9iKa34xj1WVtTZ036cnqvym2TBJWR5c=
+          </CipherValue>
+        </CipherData>
+      </EncryptedKey>
+    </KeyInfo>
+    <CipherData>
+      <CipherValue>
+        bmExbDyrUQtsGjNBU7TRpMhOC76O/wBDWVMQML43lWNP0xp7QwVPce1XdbB4AVUn
+        xxAuJh18jOd9UzPTzrJHrKWvsWP8Xp1m/HL3A1XhOUe+MEcFyJB9fXazhDmyaSYU
+        SvieaPXcpzKWiHhZE8RKUyAYw9nU9wf2SEUgCVRuRPfsrXg4Uyr83VTn84LPe9sL
+        dd2hMj4jhgHL86b7PTYBWdtrYXq0Jwzptuw+TZ1C706BAZDYNAiSTdx3J17Ey3ex
+        IeIFBBIq8D8Gp7XiH4UxiDB6rtA2czox6+FCvaIsrGFaaw9XdzvhiZ3HxYROjprz
+        qiXcJlZzG6j8yRdpHSjsDkN3w7XjEgRODieGx110rBytZcwtqb0zc6JTZH5DzoJy
+      </CipherValue>
+    </CipherData>
+  </EncryptedData>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml
new file mode 100644
index 0000000..a69d936
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    255LFQdP+eAK2aeuuLnz10pmaw4WEYb6TZa3B6H4z8c=
+  </SignatureValue>
+  <KeyInfo>
+    <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+      <KA-Nonce>
+        bm9uY2U=
+      </KA-Nonce>
+      <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+      <OriginatorKeyInfo>
+        <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+            <P>
+              plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+              6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+              whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+            </P>
+            <Q>
+              9jJXQijNovoq6QUBFcEUYwUvyTM=
+            </Q>
+            <Generator>
+              PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+              lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+              3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+            </Generator>
+            <Public>
+              Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+              NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+              m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+            </Public>
+          </DHKeyValue>
+        </KeyValue>
+        <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <X509Certificate>
+            MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+            czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+            Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+            DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+            T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+            JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+            n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+            9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+            qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+            Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+            wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+            m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+            oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+            BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+            AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+            cU0=
+          </X509Certificate>
+        </X509Data>
+      </OriginatorKeyInfo>
+      <RecipientKeyInfo>
+        <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <X509Certificate>
+            MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+            MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+            DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+            cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+            aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+            Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+            DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+            T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+            JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+            n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+            9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+            qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+            Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+            VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+            wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+            orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+            BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+            AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+            Yos=
+          </X509Certificate>
+        </X509Data>
+      </RecipientKeyInfo>
+    </AgreementMethod>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml
new file mode 100644
index 0000000..79ef3f1
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    9XBpYbFplNqqF7U/QtCHYE20U7oIxcyCr0L19MlenNo=
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+          <KA-Nonce>
+            bm9uY2U=
+          </KA-Nonce>
+          <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <OriginatorKeyInfo>
+            <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+              <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+                <P>
+                  plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+                  6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+                  whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+                </P>
+                <Q>
+                  9jJXQijNovoq6QUBFcEUYwUvyTM=
+                </Q>
+                <Generator>
+                  PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+                  lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+                  3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+                </Generator>
+                <Public>
+                  Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+                  NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+                  m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+                </Public>
+              </DHKeyValue>
+            </KeyValue>
+            <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+              <X509Certificate>
+                MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+                czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+                Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+                DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+                T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+                JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+                n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+                9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+                qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+                Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+                wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+                m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+                oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+                BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+                AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+                cU0=
+              </X509Certificate>
+            </X509Data>
+          </OriginatorKeyInfo>
+          <RecipientKeyInfo>
+            <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+              <X509Certificate>
+                MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+                DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+                aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+                Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+                DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+                T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+                JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+                n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+                9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+                qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+                Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+                VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+                wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+                orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+                BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+                AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+                Yos=
+              </X509Certificate>
+            </X509Data>
+          </RecipientKeyInfo>
+        </AgreementMethod>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          2s+2ji8opL0SLKziiyNZ+mZ8Ibfu7cTwe4C0MmyarYDwGmsiRSqff8trHUwa+njZ
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml
new file mode 100644
index 0000000..ecc2987
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    9XBpYbFplNqqF7U/QtCHYE20U7oIxcyCr0L19MlenNo=
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <X509Data>
+          <X509Certificate>
+            MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+            dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+            dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+            9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+            McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+            a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+            HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+            BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+            TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+            2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+          </X509Certificate>
+        </X509Data>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          BRhPOKN/KLCih2Q2RoxQiaV0s1FfpOM+kisl9MwRSPow5CyX91rBVfoWpP/Qq1T3
+          Rj/f0gVoJyE008uLic4X/S4spnudlOzTkVB6bUzoBt4j+z4hEq/cIfHqVdEJ+lN0
+          iu1sJk3k6ESl22OWEqQB7Rl5sAdhFPOqXsnLUNWmqA8=
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml
new file mode 100644
index 0000000..1779093
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    9XBpYbFplNqqF7U/QtCHYE20U7oIxcyCr0L19MlenNo=
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+        <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <OAEPparams>
+          MTIzNDU2Nzg=
+        </OAEPparams>
+      </EncryptionMethod>
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <X509Data>
+          <X509Certificate>
+            MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+            dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+            b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+            dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+            9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+            McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+            a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+            HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+            BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+            TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+            2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+          </X509Certificate>
+        </X509Data>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          NGIOL9UzhGwPYvVzbBxOGzxXfTIkzIsmtNSkWA03p64aS41vVA0sKWvcr/79Nf7T
+          6RdA61TmwOKa5GDUYRumEadC7Z0zKFDKcuN78iJzlj2WwVqr5vBx14X2BSVW+de1
+          UTmXRZFRosFOk9etvD7Lm1V+kqIxqSrod68G8gJvGrY=
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
new file mode 100644
index 0000000..532800b
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160" />
+      <DigestValue>ixv9ZpIiqEzBC3Uztm5Rl6tXd9Q=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    kwV4uELL96oFm8/+VGzq+xAOgUg=
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>bob</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          gHMpx5iF7+KXtNHLasZrkcLHn8Ti4rxUjCIRK+IcgbQir6FUsQ/uxQ3o8enEMWq1
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml
new file mode 100644
index 0000000..535510c
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+      <DigestValue>eI1OLVStn6Z4q7Byq8XGUJ4bce1LMSlanI6o+SvYzt0=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    cOQGJE3d3fXi1BIfdvr1v6tz/4lt9xGznfyDPXEvc4Q=
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>job</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          rPnY/XoSGCbuwy7vpslf29rs9dbvSCmGFOjEs3LT6g/qyZjfDA+2fQ==
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml
new file mode 100644
index 0000000..836aba2
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384" />
+      <DigestValue>bWetGDV3M5oEiecfEHILQxVQRa1XgdY37VH8eWi9yVVx7Rr7UNhk+v6Jk7sMNPoA</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    iEjhOJoKiwsOBduxHj7bxILSsl6TLhNO3w/vlRcw9RZAe24HIxLRfhj4Xqsz1Orr
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jeb</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          19D633XVohP6UJvaVRAhJek+ahtM3gOiVs6nZyAasDEb+WCUQOcWZw==
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml
new file mode 100644
index 0000000..9adfafd
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" />
+      <DigestValue>c8+KT9+qCSbNpdZm7/dp9Mv/lgF51ATycY0Ttz/0bw2p5nvnmeEgQpIPw5HhVJ9Ku6dDf0RKVVR/CsYvPGfnEg==</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    zB8ZUo9bQxzxnxW2aZ217eu//1e5xHB6RlfEOFOlx1l5PIhadKAlQo0z1D9B2HVU
+    Kj4StSnlUsrvDo2BxgiAoA==
+  </SignatureValue>
+  <KeyInfo>
+    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <KeyName>jed</KeyName>
+      </KeyInfo>
+      <CipherData>
+        <CipherValue>
+          tPCC89jQShB+WDINCdRfKgf8wTlAx8xRXD73RmEHPBfix8zS1N82KQ==
+        </CipherValue>
+      </CipherData>
+    </EncryptedKey>
+  </KeyInfo>
+</Signature>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/ids.p12 b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/ids.p12
new file mode 100644
index 0000000..503960f
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/ids.p12
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.txt b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.txt
new file mode 100644
index 0000000..9d04ac3
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.txt
@@ -0,0 +1 @@
+top secret message
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.xml b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.xml
new file mode 100644
index 0000000..2690798
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+  <Items>
+    <Item Code="001-001-001" Quantity="1">
+      spade
+    </Item>
+    <Item Code="001-001-002" Quantity="1">
+      shovel
+    </Item>
+  </Items>
+  <ShippingAddress>
+    Dig PLC, 1 First Ave, Dublin 1, Ireland
+  </ShippingAddress>
+  <PaymentInfo>
+    <BillingAddress>
+      Dig PLC, 1 First Ave, Dublin 1, Ireland
+    </BillingAddress>
+    <CreditCard Type="Amex">
+      <Name>Foo B Baz</Name>
+      <Number>1234 567890 12345</Number>
+      <Expires Month="1" Year="2005" />
+    </CreditCard>
+  </PaymentInfo>
+</PurchaseOrder>
diff --git a/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/rsa.p8 b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/rsa.p8
new file mode 100644
index 0000000..6a7d828
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/merlin-xmlenc-five/rsa.p8
Binary files differ
diff --git a/data/ie/baltimore/merlin-examples/urls.txt b/data/ie/baltimore/merlin-examples/urls.txt
new file mode 100644
index 0000000..d52e54a
--- /dev/null
+++ b/data/ie/baltimore/merlin-examples/urls.txt
@@ -0,0 +1,15 @@
+Examples by merlin@baltimore.ie
+
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000JulSep/att-0153/01-merlin-xmldsig.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000JulSep/att-0235/01-merlin-xmldsig-three.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000OctDec/att-0036/01-merlin-xmldsig-seven.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000OctDec/att-0059/01-merlin-xmldsig-eight.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2000OctDec/att-0065/01-merlin-xmldsig-nine.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JanMar/att-0139/01-merlin-xmldsig-twelve.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JanMar/att-0139/02-merlin-xmldsig-thirteen.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JanMar/att-0155/03-merlin-xmldsig-fourteen.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JanMar/att-0155/04-merlin-xmldsig-fifteen.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/att-0033/01-merlin-xmldsig-sixteen.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/att-0110/01-merlin-xmldsig-seventeen.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/att-0124/01-merlin-xmldsig-eighteen.tar.gz
+http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002AprJun/att-0016/01-merlin-xmldsig-twenty-three.tar.gz
diff --git a/data/interop/c14n/Y1/.cvsignore b/data/interop/c14n/Y1/.cvsignore
new file mode 100644
index 0000000..ea0c7f1
--- /dev/null
+++ b/data/interop/c14n/Y1/.cvsignore
@@ -0,0 +1 @@
+c14n-*.apache.html
diff --git a/data/interop/c14n/Y1/Readme.txt b/data/interop/c14n/Y1/Readme.txt
new file mode 100644
index 0000000..1ba1cd9
--- /dev/null
+++ b/data/interop/c14n/Y1/Readme.txt
@@ -0,0 +1,3 @@
+untested exclusive c14n example signature + c14n output
+merlin@baltimore.ie
+mon jan 14 2002
diff --git a/data/interop/c14n/Y1/c14n-0.html b/data/interop/c14n/Y1/c14n-0.html
new file mode 100644
index 0000000..ac6bcf7
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-0.html
@@ -0,0 +1,110 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;Foo</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xml:space="preserve"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;dsig:Signature</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignedInfo</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:SignatureMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:SignatureMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">7yOTjUu+9oEhShgyIIXDLjQ08aY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">09xMy0RTQM1Q91demYe/0F6AGXo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">ZQH+SkCN8c5y0feAr+aRTZDwyvY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">a1cTqBgbqpUt6bMJN4C6zFtnoyo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:SignedInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignatureValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+    </span><span class="EXCLUDED">&lt;/dsig:SignatureValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:KeyInfo</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:KeyValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DSAKeyValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:P</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+            nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+            L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+          </span><span class="EXCLUDED">&lt;/dsig:P&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Q</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            mFf8DiMVNFXy0vag9oNGNW/g4u0=
+          </span><span class="EXCLUDED">&lt;/dsig:Q&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:G</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+            apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+            wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+          </span><span class="EXCLUDED">&lt;/dsig:G&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Y</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+            B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+            7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+          </span><span class="EXCLUDED">&lt;/dsig:Y&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:DSAKeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:KeyValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:KeyInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="INCLUDED">&lt;dsig:Object</span><span class="INCLUDED"> xmlns="urn:foo"</span><span class="INCLUDED"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED"> Id="to-be-signed"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;bar:Baz</span><span class="INCLUDED"> xmlns="urn:foo"</span><span class="INCLUDED"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+        </span><span class="INCLUDED">&lt;!--  comment --&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;/bar:Baz&gt;</span><span class="INCLUDED">
+    </span><span class="INCLUDED">&lt;/dsig:Object&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;/dsig:Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/Foo&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-0.txt b/data/interop/c14n/Y1/c14n-0.txt
new file mode 100644
index 0000000..f88f1ab
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-0.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz xmlns:bar="urn:bar">
+        
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-1.html b/data/interop/c14n/Y1/c14n-1.html
new file mode 100644
index 0000000..1588a58
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-1.html
@@ -0,0 +1,110 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;Foo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xml:space="preserve"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;dsig:Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:SignatureMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">7yOTjUu+9oEhShgyIIXDLjQ08aY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">09xMy0RTQM1Q91demYe/0F6AGXo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">ZQH+SkCN8c5y0feAr+aRTZDwyvY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">a1cTqBgbqpUt6bMJN4C6zFtnoyo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:SignedInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+    </span><span class="EXCLUDED">&lt;/dsig:SignatureValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+            nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+            L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+          </span><span class="EXCLUDED">&lt;/dsig:P&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            mFf8DiMVNFXy0vag9oNGNW/g4u0=
+          </span><span class="EXCLUDED">&lt;/dsig:Q&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+            apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+            wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+          </span><span class="EXCLUDED">&lt;/dsig:G&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+            B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+            7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+          </span><span class="EXCLUDED">&lt;/dsig:Y&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:DSAKeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:KeyValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:KeyInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="INCLUDED">&lt;dsig:Object</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED"> Id="to-be-signed"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;bar:Baz</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+        </span><span class="INCLUDED">&lt;!--  comment --&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;/bar:Baz&gt;</span><span class="INCLUDED">
+    </span><span class="INCLUDED">&lt;/dsig:Object&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;/dsig:Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/Foo&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-1.txt b/data/interop/c14n/Y1/c14n-1.txt
new file mode 100644
index 0000000..16815e3
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-1.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns="urn:foo" xmlns:bar="urn:bar" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz>
+        
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-2.html b/data/interop/c14n/Y1/c14n-2.html
new file mode 100644
index 0000000..ac6bcf7
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-2.html
@@ -0,0 +1,110 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;Foo</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xml:space="preserve"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;dsig:Signature</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignedInfo</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:SignatureMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:SignatureMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">7yOTjUu+9oEhShgyIIXDLjQ08aY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">09xMy0RTQM1Q91demYe/0F6AGXo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">ZQH+SkCN8c5y0feAr+aRTZDwyvY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">a1cTqBgbqpUt6bMJN4C6zFtnoyo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:SignedInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignatureValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+    </span><span class="EXCLUDED">&lt;/dsig:SignatureValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:KeyInfo</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:KeyValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DSAKeyValue</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:P</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+            nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+            L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+          </span><span class="EXCLUDED">&lt;/dsig:P&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Q</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            mFf8DiMVNFXy0vag9oNGNW/g4u0=
+          </span><span class="EXCLUDED">&lt;/dsig:Q&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:G</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+            apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+            wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+          </span><span class="EXCLUDED">&lt;/dsig:G&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Y</span><span class="EXCLUDED"> xmlns="urn:foo"</span><span class="EXCLUDED"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+            B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+            7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+          </span><span class="EXCLUDED">&lt;/dsig:Y&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:DSAKeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:KeyValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:KeyInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="INCLUDED">&lt;dsig:Object</span><span class="INCLUDED"> xmlns="urn:foo"</span><span class="INCLUDED"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED"> Id="to-be-signed"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;bar:Baz</span><span class="INCLUDED"> xmlns="urn:foo"</span><span class="INCLUDED"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+        </span><span class="INCLUDED">&lt;!--  comment --&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;/bar:Baz&gt;</span><span class="INCLUDED">
+    </span><span class="INCLUDED">&lt;/dsig:Object&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;/dsig:Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/Foo&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-2.txt b/data/interop/c14n/Y1/c14n-2.txt
new file mode 100644
index 0000000..ccd9534
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-2.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz xmlns:bar="urn:bar">
+        <!--  comment -->
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-3.html b/data/interop/c14n/Y1/c14n-3.html
new file mode 100644
index 0000000..1588a58
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-3.html
@@ -0,0 +1,110 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;Foo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xml:space="preserve"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;dsig:Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:SignatureMethod&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">7yOTjUu+9oEhShgyIIXDLjQ08aY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">09xMy0RTQM1Q91demYe/0F6AGXo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">ZQH+SkCN8c5y0feAr+aRTZDwyvY=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> URI="#xpointer(id('to-be-signed'))"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> PrefixList="bar #default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;/dsig:Transform&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:Transforms&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/dsig:DigestMethod&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">a1cTqBgbqpUt6bMJN4C6zFtnoyo=</span><span class="EXCLUDED">&lt;/dsig:DigestValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:Reference&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:SignedInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+    </span><span class="EXCLUDED">&lt;/dsig:SignatureValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;dsig:KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;dsig:KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;dsig:DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+            nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+            L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+          </span><span class="EXCLUDED">&lt;/dsig:P&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            mFf8DiMVNFXy0vag9oNGNW/g4u0=
+          </span><span class="EXCLUDED">&lt;/dsig:Q&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+            apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+            wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+          </span><span class="EXCLUDED">&lt;/dsig:G&gt;</span><span class="EXCLUDED">
+          </span><span class="EXCLUDED">&lt;dsig:Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="EXCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+            B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+            7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+          </span><span class="EXCLUDED">&lt;/dsig:Y&gt;</span><span class="EXCLUDED">
+        </span><span class="EXCLUDED">&lt;/dsig:DSAKeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/dsig:KeyValue&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/dsig:KeyInfo&gt;</span><span class="EXCLUDED">
+    </span><span class="INCLUDED">&lt;dsig:Object</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED"> Id="to-be-signed"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;bar:Baz</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="urn:foo"</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:bar="urn:bar"</span><span class="INCLUDED"> xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+        </span><span class="INCLUDED">&lt;!--  comment --&gt;</span><span class="INCLUDED">
+      </span><span class="INCLUDED">&lt;/bar:Baz&gt;</span><span class="INCLUDED">
+    </span><span class="INCLUDED">&lt;/dsig:Object&gt;</span><span class="EXCLUDED">
+  </span><span class="EXCLUDED">&lt;/dsig:Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/Foo&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-3.txt b/data/interop/c14n/Y1/c14n-3.txt
new file mode 100644
index 0000000..0adfc73
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-3.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns="urn:foo" xmlns:bar="urn:bar" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+      <bar:Baz>
+        <!--  comment -->
+      </bar:Baz>
+    </dsig:Object>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/c14n-4.txt b/data/interop/c14n/Y1/c14n-4.txt
new file mode 100644
index 0000000..37f3303
--- /dev/null
+++ b/data/interop/c14n/Y1/c14n-4.txt
@@ -0,0 +1,36 @@
+<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:CanonicalizationMethod>
+      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></dsig:SignatureMethod>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>7yOTjUu+9oEhShgyIIXDLjQ08aY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default"></InclusiveNamespaces>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>09xMy0RTQM1Q91demYe/0F6AGXo=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"></dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>ZQH+SkCN8c5y0feAr+aRTZDwyvY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default"></InclusiveNamespaces>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>a1cTqBgbqpUt6bMJN4C6zFtnoyo=</dsig:DigestValue>
+      </dsig:Reference>
+    </dsig:SignedInfo>
\ No newline at end of file
diff --git a/data/interop/c14n/Y1/exc-signature.xml b/data/interop/c14n/Y1/exc-signature.xml
new file mode 100644
index 0000000..e805940
--- /dev/null
+++ b/data/interop/c14n/Y1/exc-signature.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Foo xmlns:bar="urn:bar" xmlns="urn:foo" xml:space="preserve">
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+    <dsig:SignedInfo>
+      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>7yOTjUu+9oEhShgyIIXDLjQ08aY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>09xMy0RTQM1Q91demYe/0F6AGXo=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" />
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>ZQH+SkCN8c5y0feAr+aRTZDwyvY=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>a1cTqBgbqpUt6bMJN4C6zFtnoyo=</dsig:DigestValue>
+      </dsig:Reference>
+    </dsig:SignedInfo>
+    <dsig:SignatureValue>
+      Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+    </dsig:SignatureValue>
+    <dsig:KeyInfo>
+      <dsig:KeyValue>
+        <dsig:DSAKeyValue>
+          <dsig:P>
+            8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+            nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+            L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+          </dsig:P>
+          <dsig:Q>
+            mFf8DiMVNFXy0vag9oNGNW/g4u0=
+          </dsig:Q>
+          <dsig:G>
+            g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+            apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+            wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+          </dsig:G>
+          <dsig:Y>
+            j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+            B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+            7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+          </dsig:Y>
+        </dsig:DSAKeyValue>
+      </dsig:KeyValue>
+    </dsig:KeyInfo>
+    <dsig:Object Id="to-be-signed">
+      <bar:Baz>
+        <!--  comment -->
+      </bar:Baz>
+    </dsig:Object>
+  </dsig:Signature>
+</Foo>
diff --git a/data/interop/c14n/Y2/.cvsignore b/data/interop/c14n/Y2/.cvsignore
new file mode 100644
index 0000000..ea0c7f1
--- /dev/null
+++ b/data/interop/c14n/Y2/.cvsignore
@@ -0,0 +1 @@
+c14n-*.apache.html
diff --git a/data/interop/c14n/Y2/c14n-0.html b/data/interop/c14n/Y2/c14n-0.html
new file mode 100644
index 0000000..b5460b3
--- /dev/null
+++ b/data/interop/c14n/Y2/c14n-0.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;doc</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> xml:base="http://www.example.org/2002/"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e1</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e1&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e2</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e2&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e3</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> id="elem3"</span><span class="EXCLUDED"> name="elem3"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e3&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e4</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> id="elem4"</span><span class="EXCLUDED"> name="elem4"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e4&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e5</span><span class="EXCLUDED"> xmlns="http://example.org"</span><span class="EXCLUDED"> xmlns:a="http://www.w3.org"</span><span class="EXCLUDED"> xmlns:b="http://www.ietf.org"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> attr="I'm"</span><span class="EXCLUDED"> attr2="all"</span><span class="EXCLUDED"> b:attr="sorted"</span><span class="EXCLUDED"> a:attr="out"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e5&gt;</span><span class="EXCLUDED">
+   </span><span class="INCLUDED">&lt;e6</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> test="../baz"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+       </span><span class="INCLUDED">&lt;e7</span><span class="INCLUDED"> xmlns="http://www.ietf.org"</span><span class="INCLUDED"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+           </span><span class="INCLUDED">&lt;e8</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> a:foo="bar"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+               </span><span class="INCLUDED">&lt;e9</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:a="http://www.ietf.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> attr="default"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/e9&gt;</span><span class="INCLUDED">
+           </span><span class="INCLUDED">&lt;/e8&gt;</span><span class="INCLUDED">
+       </span><span class="INCLUDED">&lt;/e7&gt;</span><span class="INCLUDED">
+   </span><span class="INCLUDED">&lt;/e6&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> xml:base="http://www.example.org/2002/"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AaBWmuBu+YJ6/VVXKwlrdA==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SjyCLpdMX/5X+8Wueu3tlg==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> PrefixList="a"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lOOQdTLkMX7sv41ZlpwO0g==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         QY8y1yZWODi6TR/vlmHwz17B6dk5mekvRNJozYZUBovxQat0F2o4/Q==
+      </span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+                  nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+                  L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+               </span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  mFf8DiMVNFXy0vag9oNGNW/g4u0=
+               </span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+                  apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+                  wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+               </span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+                  B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+                  7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+               </span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/doc&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y2/c14n-0.txt b/data/interop/c14n/Y2/c14n-0.txt
new file mode 100644
index 0000000..318cb19
--- /dev/null
+++ b/data/interop/c14n/Y2/c14n-0.txt
@@ -0,0 +1,7 @@
+<e6 xmlns:a="http://www.w3.org" xmlns:foo="http://www.bar.org" test="../baz" xml:base="http://www.example.org/2002/">
+       <e7 xmlns="http://www.ietf.org">
+           <e8 xmlns="" a:foo="bar">
+               <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+           </e8>
+       </e7>
+   </e6>
\ No newline at end of file
diff --git a/data/interop/c14n/Y2/c14n-1.html b/data/interop/c14n/Y2/c14n-1.html
new file mode 100644
index 0000000..b5460b3
--- /dev/null
+++ b/data/interop/c14n/Y2/c14n-1.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;doc</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> xml:base="http://www.example.org/2002/"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e1</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e1&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e2</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e2&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e3</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> id="elem3"</span><span class="EXCLUDED"> name="elem3"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e3&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e4</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> id="elem4"</span><span class="EXCLUDED"> name="elem4"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e4&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e5</span><span class="EXCLUDED"> xmlns="http://example.org"</span><span class="EXCLUDED"> xmlns:a="http://www.w3.org"</span><span class="EXCLUDED"> xmlns:b="http://www.ietf.org"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> attr="I'm"</span><span class="EXCLUDED"> attr2="all"</span><span class="EXCLUDED"> b:attr="sorted"</span><span class="EXCLUDED"> a:attr="out"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e5&gt;</span><span class="EXCLUDED">
+   </span><span class="INCLUDED">&lt;e6</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> test="../baz"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+       </span><span class="INCLUDED">&lt;e7</span><span class="INCLUDED"> xmlns="http://www.ietf.org"</span><span class="INCLUDED"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+           </span><span class="INCLUDED">&lt;e8</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> a:foo="bar"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+               </span><span class="INCLUDED">&lt;e9</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:a="http://www.ietf.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> attr="default"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/e9&gt;</span><span class="INCLUDED">
+           </span><span class="INCLUDED">&lt;/e8&gt;</span><span class="INCLUDED">
+       </span><span class="INCLUDED">&lt;/e7&gt;</span><span class="INCLUDED">
+   </span><span class="INCLUDED">&lt;/e6&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> xml:base="http://www.example.org/2002/"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AaBWmuBu+YJ6/VVXKwlrdA==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SjyCLpdMX/5X+8Wueu3tlg==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> PrefixList="a"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lOOQdTLkMX7sv41ZlpwO0g==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         QY8y1yZWODi6TR/vlmHwz17B6dk5mekvRNJozYZUBovxQat0F2o4/Q==
+      </span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+                  nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+                  L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+               </span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  mFf8DiMVNFXy0vag9oNGNW/g4u0=
+               </span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+                  apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+                  wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+               </span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+                  B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+                  7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+               </span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/doc&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y2/c14n-1.txt b/data/interop/c14n/Y2/c14n-1.txt
new file mode 100644
index 0000000..3806ea0
--- /dev/null
+++ b/data/interop/c14n/Y2/c14n-1.txt
@@ -0,0 +1,7 @@
+<e6 test="../baz">
+       <e7 xmlns="http://www.ietf.org">
+           <e8 xmlns="" xmlns:a="http://www.w3.org" a:foo="bar">
+               <e9 attr="default"></e9>
+           </e8>
+       </e7>
+   </e6>
\ No newline at end of file
diff --git a/data/interop/c14n/Y2/c14n-2.html b/data/interop/c14n/Y2/c14n-2.html
new file mode 100644
index 0000000..a490704
--- /dev/null
+++ b/data/interop/c14n/Y2/c14n-2.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;doc</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> xml:base="http://www.example.org/2002/"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e1</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e1&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e2</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e2&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e3</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> id="elem3"</span><span class="EXCLUDED"> name="elem3"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e3&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e4</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> id="elem4"</span><span class="EXCLUDED"> name="elem4"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e4&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;e5</span><span class="EXCLUDED"> xmlns="http://example.org"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:a="http://www.w3.org"</span><span class="EXCLUDED"> xmlns:b="http://www.ietf.org"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> attr="I'm"</span><span class="EXCLUDED"> attr2="all"</span><span class="EXCLUDED"> b:attr="sorted"</span><span class="EXCLUDED"> a:attr="out"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/e5&gt;</span><span class="EXCLUDED">
+   </span><span class="INCLUDED">&lt;e6</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> test="../baz"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+       </span><span class="INCLUDED">&lt;e7</span><span class="INCLUDED"> xmlns="http://www.ietf.org"</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+           </span><span class="INCLUDED">&lt;e8</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:a="http://www.w3.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> a:foo="bar"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+               </span><span class="INCLUDED">&lt;e9</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:a="http://www.ietf.org"</span><span class="INCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="INCLUDED"> attr="default"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/e9&gt;</span><span class="INCLUDED">
+           </span><span class="INCLUDED">&lt;/e8&gt;</span><span class="INCLUDED">
+       </span><span class="INCLUDED">&lt;/e7&gt;</span><span class="INCLUDED">
+   </span><span class="INCLUDED">&lt;/e6&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> xml:base="http://www.example.org/2002/"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AaBWmuBu+YJ6/VVXKwlrdA==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SjyCLpdMX/5X+8Wueu3tlg==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                     ancestor-or-self::e6
+                  </span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  </span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> PrefixList="a"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lOOQdTLkMX7sv41ZlpwO0g==</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         QY8y1yZWODi6TR/vlmHwz17B6dk5mekvRNJozYZUBovxQat0F2o4/Q==
+      </span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+                  nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+                  L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+               </span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  mFf8DiMVNFXy0vag9oNGNW/g4u0=
+               </span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+                  apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+                  wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+               </span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">
+               </span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:foo="http://www.bar.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+                  j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+                  B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+                  7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+               </span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">
+            </span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">
+         </span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">
+      </span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">
+   </span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/doc&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y2/c14n-2.txt b/data/interop/c14n/Y2/c14n-2.txt
new file mode 100644
index 0000000..bd5930f
--- /dev/null
+++ b/data/interop/c14n/Y2/c14n-2.txt
@@ -0,0 +1,7 @@
+<e6 xmlns:a="http://www.w3.org" test="../baz">
+       <e7 xmlns="http://www.ietf.org">
+           <e8 xmlns="" a:foo="bar">
+               <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+           </e8>
+       </e7>
+   </e6>
\ No newline at end of file
diff --git a/data/interop/c14n/Y2/signature-joseph-exc.xml b/data/interop/c14n/Y2/signature-joseph-exc.xml
new file mode 100644
index 0000000..8365031
--- /dev/null
+++ b/data/interop/c14n/Y2/signature-joseph-exc.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA 'default'>]>
+<doc xmlns:foo="http://www.bar.org" xml:base="http://www.example.org/2002/">
+   <e1 />
+   <e2 />
+   <e3 id="elem3" name="elem3" />
+   <e4 id="elem4" name="elem4" />
+   <e5 xmlns:b="http://www.ietf.org" xmlns:a="http://www.w3.org" xmlns="http://example.org" a:attr="out" attr="I'm" attr2="all" b:attr="sorted" />
+   <e6 xmlns:a="http://www.w3.org" test="../baz" xmlns="">
+       <e7 xmlns="http://www.ietf.org">
+           <e8 xmlns="" a:foo="bar" xmlns:a="http://www.w3.org">
+               <e9 xmlns:a="http://www.ietf.org" xmlns="" />
+           </e8>
+       </e7>
+   </e6>
+   <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+      <SignedInfo>
+         <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+         <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+         <Reference URI="">
+            <Transforms>
+               <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+                  <XPath>
+                     ancestor-or-self::e6
+                  </XPath>
+               </Transform>
+               <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5" />
+            <DigestValue>AaBWmuBu+YJ6/VVXKwlrdA==</DigestValue>
+         </Reference>
+         <Reference URI="">
+            <Transforms>
+               <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+                  <XPath>
+                     ancestor-or-self::e6
+                  </XPath>
+               </Transform>
+               <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5" />
+            <DigestValue>SjyCLpdMX/5X+8Wueu3tlg==</DigestValue>
+         </Reference>
+         <Reference URI="">
+            <Transforms>
+               <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+                  <XPath>
+                     ancestor-or-self::e6
+                  </XPath>
+               </Transform>
+               <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+                  <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="a" />
+               </Transform>
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5" />
+            <DigestValue>lOOQdTLkMX7sv41ZlpwO0g==</DigestValue>
+         </Reference>
+      </SignedInfo>
+      <SignatureValue>
+         QY8y1yZWODi6TR/vlmHwz17B6dk5mekvRNJozYZUBovxQat0F2o4/Q==
+      </SignatureValue>
+      <KeyInfo>
+         <KeyValue>
+            <DSAKeyValue>
+               <P>
+                  8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+                  nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+                  L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+               </P>
+               <Q>
+                  mFf8DiMVNFXy0vag9oNGNW/g4u0=
+               </Q>
+               <G>
+                  g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+                  apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+                  wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+               </G>
+               <Y>
+                  j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+                  B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+                  7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+               </Y>
+            </DSAKeyValue>
+         </KeyValue>
+      </KeyInfo>
+   </Signature>
+</doc>
+
diff --git a/data/interop/c14n/Y3/.cvsignore b/data/interop/c14n/Y3/.cvsignore
new file mode 100644
index 0000000..ea0c7f1
--- /dev/null
+++ b/data/interop/c14n/Y3/.cvsignore
@@ -0,0 +1 @@
+c14n-*.apache.html
diff --git a/data/interop/c14n/Y3/Readme.txt b/data/interop/c14n/Y3/Readme.txt
new file mode 100644
index 0000000..f332286
--- /dev/null
+++ b/data/interop/c14n/Y3/Readme.txt
@@ -0,0 +1,22 @@
+Gregor Karlinger <gregor.karlinger@iaik.at>'s exclusive
+c14n[1] examples[2] dumped in an XML Signature[3], thereby
+undoing their usefulness as standalone exclusive c14n
+examples, but simplifying their testing. All errors are
+my own. Version 2.
+
+. iaikTests.example?.xml - Gregor's examples (*)
+. signature.xml - Signature representing the examples
+. signature.tmpl - Signature template
+. c14n-?.txt - Intermediate c14n output
+
+(*) I ran perl -pi -e 's/foo.com/example.org/g' on the files.
+
+[1] http://www.w3.org/TR/2002/CR-xml-exc-c14n-20020212
+[2] http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002JanMar/0259.html
+[3] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+http://www.baltimore.com/
+
+Thursday, April 18, 2002
diff --git a/data/interop/c14n/Y3/c14n-0.html b/data/interop/c14n/Y3/c14n-0.html
new file mode 100644
index 0000000..fe26c42
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-0.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent xml:foo="bar" xml:fool="barbar" xml:lang="en" xml:space="default">
+    <GrandChild xml:foo="barbarossa" xml:fool="barbar" xml:lang="ge" xml:space="preserve"></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. Parent inherts xml:lang and xml:space since it is an orphan node.
+2. Parent has explicitly declared attributes xml:foo and xml:fool.
+3. GrandChild inherts xml:foo from its Child ancestor.
+4. GrandChild inherits xml:fool from its Parent ancestor.
+5. GrandChild inherits xml:lang from its Child ancestor.
+6. GrandChild has explicitly declared attribute xml:space.
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent xml:foo="bar" xml:fool="barbar">
+    <GrandChild xm:space="preserve"></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+1. Only those attributes in the xml namespace are rendered, which are
+   explicitely declared in the attribute axis of an element.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xml:lang="en"</span><span class="EXCLUDED"> xml:space="default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xml:foo="bar"</span><span class="INCLUDED"> xml:fool="barbar"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xml:foo="barbarossa"</span><span class="EXCLUDED"> xml:lang="ge"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xml:space="preserve"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-0.txt b/data/interop/c14n/Y3/c14n-0.txt
new file mode 100644
index 0000000..c5bd6dd
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-0.txt
@@ -0,0 +1,3 @@
+<Parent xml:foo="bar" xml:fool="barbar" xml:lang="en" xml:space="default">
+    <GrandChild xml:foo="barbarossa" xml:fool="barbar" xml:lang="ge" xml:space="preserve"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-1.html b/data/interop/c14n/Y3/c14n-1.html
new file mode 100644
index 0000000..fe26c42
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-1.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent xml:foo="bar" xml:fool="barbar" xml:lang="en" xml:space="default">
+    <GrandChild xml:foo="barbarossa" xml:fool="barbar" xml:lang="ge" xml:space="preserve"></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. Parent inherts xml:lang and xml:space since it is an orphan node.
+2. Parent has explicitly declared attributes xml:foo and xml:fool.
+3. GrandChild inherts xml:foo from its Child ancestor.
+4. GrandChild inherits xml:fool from its Parent ancestor.
+5. GrandChild inherits xml:lang from its Child ancestor.
+6. GrandChild has explicitly declared attribute xml:space.
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent xml:foo="bar" xml:fool="barbar">
+    <GrandChild xm:space="preserve"></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+1. Only those attributes in the xml namespace are rendered, which are
+   explicitely declared in the attribute axis of an element.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xml:lang="en"</span><span class="EXCLUDED"> xml:space="default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xml:foo="bar"</span><span class="INCLUDED"> xml:fool="barbar"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xml:foo="barbarossa"</span><span class="EXCLUDED"> xml:lang="ge"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xml:space="preserve"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-1.txt b/data/interop/c14n/Y3/c14n-1.txt
new file mode 100644
index 0000000..f41ece6
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-1.txt
@@ -0,0 +1,3 @@
+<Parent xml:foo="bar" xml:fool="barbar">
+    <GrandChild xml:space="preserve"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-2.html b/data/interop/c14n/Y3/c14n-2.html
new file mode 100644
index 0000000..d2f4d50
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-2.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- additionalNSPrefixes="default http://example.org" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. The xmlns="" of Parent is not rendered, although it is explicitly declared.
+   This is because Parent has no output parent with a default namespace decla-
+   ration that is in the node set.
+2. The xmlns="" of GrandChild is not rendered, although it is explicitly
+   declared. This is because GrandChild has no output parent with a default
+   namespace declaration that is in the node set.
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+See Annotation C14N.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns="http://example.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-2.txt b/data/interop/c14n/Y3/c14n-2.txt
new file mode 100644
index 0000000..61a48d3
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-2.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-3.html b/data/interop/c14n/Y3/c14n-3.html
new file mode 100644
index 0000000..d2f4d50
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-3.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- additionalNSPrefixes="default http://example.org" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. The xmlns="" of Parent is not rendered, although it is explicitly declared.
+   This is because Parent has no output parent with a default namespace decla-
+   ration that is in the node set.
+2. The xmlns="" of GrandChild is not rendered, although it is explicitly
+   declared. This is because GrandChild has no output parent with a default
+   namespace declaration that is in the node set.
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+See Annotation C14N.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns="http://example.org"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-3.txt b/data/interop/c14n/Y3/c14n-3.txt
new file mode 100644
index 0000000..61a48d3
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-3.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-4.html b/data/interop/c14n/Y3/c14n-4.html
new file mode 100644
index 0000000..91fc535
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-4.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- additionalNSPrefixes="default http://example.org/default ns1 http://example.org/ns1" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns="http://bar.com/default" xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild xmlns:ns1="http://example.org/ns1"></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
+ --&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. The default namespace node is rendered for Parent, since it is
+   inherited from GrandParent.
+2. The ns1 namespace node is rendered for the first GrandChild, since
+   it is inherited from Child.
+3. The default namespace node is not rendered for the first GrandChild,
+   since the output parent of GrandChild (Parent) has the same namespace
+   node with the same value, which is in the node set.
+4. The ns1 namespace node is rendered for the second GrandChild (same as 2).
+5. The default namespace node is rendered for the second GrandChild,
+   since it is explicitly declared, and has a different value than that of
+   Parent.
+6. The ns1 namespace node is rendered for the third GrandChild (same as 2).   
+7. The default namespace node is not rendered for the third GrandChild 
+   (same as 3).
+8. The ns1 namespace node is rendered for the fourth GrandChild (same as 2).   
+9. The default namespace node is not rendered fourth the third GrandChild 
+   (same as 3).
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild> 
+  </Parent>    
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+1. The default namespace node is rendered for Parent, since it is visibly
+   utilized by Parent.
+2. The ns1 namespace attribute is rendered for the first GrandChild, since it
+   is visibly utilized by GrandChild.
+3. The default namespace node is not rendered for the first GrandChild, since
+   it is not visibly utilized.
+4. The ns1 namespace attribute is rendered for the second GrandChild, since it
+   is visibly utilized by GrandChild.
+5. The default namespace node is not rendered for the second GrandChild, since
+   it is not visibly utilized by GrandChild. The Gender attribute is in no
+   namespace.
+6. The ns1 namespace node is not rendered for the third GrandChild, since it
+   is not visibly utilized.
+7. The default namespace node is not rendered for the third GrandChild. It is
+   visibly utilized, but the same namespace node with the same value has already
+   been rendered in Parent (an output parent of GrandChild).
+8. The default namespace node is not rendered for the fourth GrandChild, since
+   it is not visibly utilized.
+9. The ns1 namespace node is rendered for the fourth GrandChild, since it is
+   visibly utilized by the ns1:Gender attribute of GrandChild.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns="http://example.org/default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns="http://example.org/default"</span><span class="EXCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;ns1:GrandChild</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/ns1:GrandChild&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;ns1:GrandChild</span><span class="INCLUDED"> xmlns="http://bar.com/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED"> Gender="male"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/ns1:GrandChild&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED"> ns1:Gender="male"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-4.txt b/data/interop/c14n/Y3/c14n-4.txt
new file mode 100644
index 0000000..c42a3c9
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-4.txt
@@ -0,0 +1,3 @@
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns="http://bar.com/default" xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild xmlns:ns1="http://example.org/ns1"></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-5.html b/data/interop/c14n/Y3/c14n-5.html
new file mode 100644
index 0000000..91fc535
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-5.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- additionalNSPrefixes="default http://example.org/default ns1 http://example.org/ns1" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns="http://bar.com/default" xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild xmlns:ns1="http://example.org/ns1"></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
+ --&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. The default namespace node is rendered for Parent, since it is
+   inherited from GrandParent.
+2. The ns1 namespace node is rendered for the first GrandChild, since
+   it is inherited from Child.
+3. The default namespace node is not rendered for the first GrandChild,
+   since the output parent of GrandChild (Parent) has the same namespace
+   node with the same value, which is in the node set.
+4. The ns1 namespace node is rendered for the second GrandChild (same as 2).
+5. The default namespace node is rendered for the second GrandChild,
+   since it is explicitly declared, and has a different value than that of
+   Parent.
+6. The ns1 namespace node is rendered for the third GrandChild (same as 2).   
+7. The default namespace node is not rendered for the third GrandChild 
+   (same as 3).
+8. The ns1 namespace node is rendered for the fourth GrandChild (same as 2).   
+9. The default namespace node is not rendered fourth the third GrandChild 
+   (same as 3).
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild> 
+  </Parent>    
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+1. The default namespace node is rendered for Parent, since it is visibly
+   utilized by Parent.
+2. The ns1 namespace attribute is rendered for the first GrandChild, since it
+   is visibly utilized by GrandChild.
+3. The default namespace node is not rendered for the first GrandChild, since
+   it is not visibly utilized.
+4. The ns1 namespace attribute is rendered for the second GrandChild, since it
+   is visibly utilized by GrandChild.
+5. The default namespace node is not rendered for the second GrandChild, since
+   it is not visibly utilized by GrandChild. The Gender attribute is in no
+   namespace.
+6. The ns1 namespace node is not rendered for the third GrandChild, since it
+   is not visibly utilized.
+7. The default namespace node is not rendered for the third GrandChild. It is
+   visibly utilized, but the same namespace node with the same value has already
+   been rendered in Parent (an output parent of GrandChild).
+8. The default namespace node is not rendered for the fourth GrandChild, since
+   it is not visibly utilized.
+9. The ns1 namespace node is rendered for the fourth GrandChild, since it is
+   visibly utilized by the ns1:Gender attribute of GrandChild.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns="http://example.org/default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns="http://example.org/default"</span><span class="EXCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;ns1:GrandChild</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/ns1:GrandChild&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;ns1:GrandChild</span><span class="INCLUDED"> xmlns="http://bar.com/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED"> Gender="male"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/ns1:GrandChild&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;GrandChild</span><span class="INCLUDED"> xmlns="http://example.org/default"</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED"> ns1:Gender="male"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-5.txt b/data/interop/c14n/Y3/c14n-5.txt
new file mode 100644
index 0000000..ab188e6
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-5.txt
@@ -0,0 +1,3 @@
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-6.html b/data/interop/c14n/Y3/c14n-6.html
new file mode 100644
index 0000000..c3b69d4
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-6.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- additionalNSPrefixes="ns1 http://example.org/ns1" --&gt;
+</span><span class="EXCLUDED">&lt;!-- InlusiveNamespacePrefixList="ns2" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+ --&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. The namespace nodes ns1 und ns2 are rendered for GrandChild, since
+   they are both in scope for GrandChild and in the output node set.   
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+1. The namespace node ns1 is rendered for GrandChild since it is visibly
+   utilized by GrandChild.
+2. The namespace node ns2 is rendered since it is on the 
+   InlusiveNamespacePrefixList and is therefore treated as in C14N mode.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="EXCLUDED"> xmlns:ns2="http://example.org/ns2"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;ns1:GrandChild</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDED"> xmlns:ns2="http://example.org/ns2"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/ns1:GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-6.txt b/data/interop/c14n/Y3/c14n-6.txt
new file mode 100644
index 0000000..d9c810d
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-6.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-7.html b/data/interop/c14n/Y3/c14n-7.html
new file mode 100644
index 0000000..e6ef789
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-7.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild" --&gt;
+</span><span class="EXCLUDED">&lt;!-- additionalNSPrefixes="ns1 http://example.org/ns1" --&gt;
+</span><span class="EXCLUDED">&lt;!-- InlusiveNamespacePrefixList="ns2" --&gt;
+</span><span class="EXCLUDED">&lt;!-- Result C14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+ --&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation C14N:
+1. The namespace nodes ns1 und ns2 are rendered for GrandChild, since
+   they are both in scope for GrandChild and in the output node set.   
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Result EC14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+--&gt;
+</span><span class="EXCLUDED">&lt;!-- Annotation EC14N:
+1. The namespace node ns1 is rendered for GrandChild since it is visibly
+   utilized by GrandChild.
+2. The namespace node ns2 is rendered since it is on the 
+   InlusiveNamespacePrefixList and is therefore treated as in C14N mode.
+--&gt;
+</span><span class="EXCLUDED">&lt;GrandParent</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+  </span><span class="INCLUDED">&lt;Parent</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">
+    </span><span class="EXCLUDED">&lt;Child</span><span class="EXCLUDED"> xmlns=""</span><span class="EXCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns:ns2="http://example.org/ns2"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">
+      </span><span class="INCLUDED">&lt;ns1:GrandChild</span><span class="INCLUDED"> xmlns=""</span><span class="INCLUDED"> xmlns:ns1="http://example.org/ns1"</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns:ns2="http://example.org/ns2"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/ns1:GrandChild&gt;</span><span class="EXCLUDED">
+    </span><span class="EXCLUDED">&lt;/Child&gt;</span><span class="INCLUDED">
+  </span><span class="INCLUDED">&lt;/Parent&gt;</span><span class="EXCLUDED">
+</span><span class="EXCLUDED">&lt;/GrandParent&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-7.txt b/data/interop/c14n/Y3/c14n-7.txt
new file mode 100644
index 0000000..d9c810d
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-7.txt
@@ -0,0 +1,3 @@
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/c14n-8.txt b/data/interop/c14n/Y3/c14n-8.txt
new file mode 100644
index 0000000..2e1117c
--- /dev/null
+++ b/data/interop/c14n/Y3/c14n-8.txt
@@ -0,0 +1,82 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>ayC7IAjulu8Ujs1l7IOkr09X9Lo=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>tYcPYeXWUpBwCJKaPHpnT+oc7FQ=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>+9y4JHXxsQSJitQS+qdtKd7P5LE=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>HLOhaTrExlTg9ARVdOhHdm1DAKk=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+          <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ns2"></InclusiveNamespaces>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+  </SignedInfo>
\ No newline at end of file
diff --git a/data/interop/c14n/Y3/iaikTests.example1.xml b/data/interop/c14n/Y3/iaikTests.example1.xml
new file mode 100644
index 0000000..d3a912e
--- /dev/null
+++ b/data/interop/c14n/Y3/iaikTests.example1.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild" -->
+
+<!-- Result C14N:
+<Parent xml:foo="bar" xml:fool="barbar" xml:lang="en" xml:space="default">
+    <GrandChild xml:foo="barbarossa" xml:fool="barbar" xml:lang="ge" xml:space="preserve"></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation C14N:
+1. Parent inherts xml:lang and xml:space since it is an orphan node.
+2. Parent has explicitly declared attributes xml:foo and xml:fool.
+3. GrandChild inherts xml:foo from its Child ancestor.
+4. GrandChild inherits xml:fool from its Parent ancestor.
+5. GrandChild inherits xml:lang from its Child ancestor.
+6. GrandChild has explicitly declared attribute xml:space.
+-->
+
+<!-- Result EC14N:
+<Parent xml:foo="bar" xml:fool="barbar">
+    <GrandChild xm:space="preserve"></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation EC14N:
+1. Only those attributes in the xml namespace are rendered, which are
+   explicitely declared in the attribute axis of an element.
+-->
+
+<GrandParent xml:lang="en" xml:space="default">
+  <Parent xml:foo="bar" xml:fool="barbar">
+    <Child xml:foo="barbarossa" xml:lang="ge">
+      <GrandChild xml:space="preserve"/>
+    </Child>
+  </Parent>
+</GrandParent>
+
diff --git a/data/interop/c14n/Y3/iaikTests.example2.xml b/data/interop/c14n/Y3/iaikTests.example2.xml
new file mode 100644
index 0000000..31e3058
--- /dev/null
+++ b/data/interop/c14n/Y3/iaikTests.example2.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild" -->
+<!-- additionalNSPrefixes="default http://example.org" -->
+
+<!-- Result C14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation C14N:
+1. The xmlns="" of Parent is not rendered, although it is explicitly declared.
+   This is because Parent has no output parent with a default namespace decla-
+   ration that is in the node set.
+2. The xmlns="" of GrandChild is not rendered, although it is explicitly
+   declared. This is because GrandChild has no output parent with a default
+   namespace declaration that is in the node set.
+-->
+
+<!-- Result EC14N:
+<Parent>
+    <GrandChild></GrandChild>
+  </Parent>
+-->
+
+<!-- Annotation EC14N:
+See Annotation C14N.
+-->
+
+<GrandParent>
+  <Parent xmlns="">
+    <Child xmlns="http://example.org">
+      <GrandChild xmlns=""/>
+    </Child>
+  </Parent>
+</GrandParent>  
diff --git a/data/interop/c14n/Y3/iaikTests.example3.xml b/data/interop/c14n/Y3/iaikTests.example3.xml
new file mode 100644
index 0000000..5176974
--- /dev/null
+++ b/data/interop/c14n/Y3/iaikTests.example3.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild" -->
+<!-- additionalNSPrefixes="default http://example.org/default ns1 http://example.org/ns1" -->
+
+<!-- Result C14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns="http://bar.com/default" xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild xmlns:ns1="http://example.org/ns1"></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild>
+  </Parent>
+ -->
+
+<!-- Annotation C14N:
+1. The default namespace node is rendered for Parent, since it is
+   inherited from GrandParent.
+2. The ns1 namespace node is rendered for the first GrandChild, since
+   it is inherited from Child.
+3. The default namespace node is not rendered for the first GrandChild,
+   since the output parent of GrandChild (Parent) has the same namespace
+   node with the same value, which is in the node set.
+4. The ns1 namespace node is rendered for the second GrandChild (same as 2).
+5. The default namespace node is rendered for the second GrandChild,
+   since it is explicitly declared, and has a different value than that of
+   Parent.
+6. The ns1 namespace node is rendered for the third GrandChild (same as 2).   
+7. The default namespace node is not rendered for the third GrandChild 
+   (same as 3).
+8. The ns1 namespace node is rendered for the fourth GrandChild (same as 2).   
+9. The default namespace node is not rendered fourth the third GrandChild 
+   (same as 3).
+-->
+
+<!-- Result EC14N:
+<Parent xmlns="http://example.org/default">
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1"></ns1:GrandChild><ns1:GrandChild xmlns:ns1="http://example.org/ns1" Gender="male"></ns1:GrandChild><GrandChild></GrandChild><GrandChild xmlns:ns1="http://example.org/ns1" ns1:Gender="male"></GrandChild> 
+  </Parent>    
+-->
+
+<!-- Annotation EC14N:
+1. The default namespace node is rendered for Parent, since it is visibly
+   utilized by Parent.
+2. The ns1 namespace attribute is rendered for the first GrandChild, since it
+   is visibly utilized by GrandChild.
+3. The default namespace node is not rendered for the first GrandChild, since
+   it is not visibly utilized.
+4. The ns1 namespace attribute is rendered for the second GrandChild, since it
+   is visibly utilized by GrandChild.
+5. The default namespace node is not rendered for the second GrandChild, since
+   it is not visibly utilized by GrandChild. The Gender attribute is in no
+   namespace.
+6. The ns1 namespace node is not rendered for the third GrandChild, since it
+   is not visibly utilized.
+7. The default namespace node is not rendered for the third GrandChild. It is
+   visibly utilized, but the same namespace node with the same value has already
+   been rendered in Parent (an output parent of GrandChild).
+8. The default namespace node is not rendered for the fourth GrandChild, since
+   it is not visibly utilized.
+9. The ns1 namespace node is rendered for the fourth GrandChild, since it is
+   visibly utilized by the ns1:Gender attribute of GrandChild.
+-->
+
+<GrandParent xmlns="http://example.org/default">
+  <Parent>
+    <Child xmlns:ns1="http://example.org/ns1">
+      <ns1:GrandChild/>
+      <ns1:GrandChild xmlns="http://bar.com/default" Gender="male"/>
+      <GrandChild/>
+      <GrandChild ns1:Gender="male"/>
+    </Child>
+  </Parent>
+</GrandParent>  
diff --git a/data/interop/c14n/Y3/iaikTests.example4.xml b/data/interop/c14n/Y3/iaikTests.example4.xml
new file mode 100644
index 0000000..aedbbf9
--- /dev/null
+++ b/data/interop/c14n/Y3/iaikTests.example4.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild" -->
+<!-- additionalNSPrefixes="ns1 http://example.org/ns1" -->
+
+<!-- InlusiveNamespacePrefixList="ns2" -->
+
+<!-- Result C14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+ -->
+
+<!-- Annotation C14N:
+1. The namespace nodes ns1 und ns2 are rendered for GrandChild, since
+   they are both in scope for GrandChild and in the output node set.   
+-->
+
+<!-- Result EC14N:
+<Parent>
+    <ns1:GrandChild xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2"></ns1:GrandChild>
+  </Parent>    
+-->
+
+<!-- Annotation EC14N:
+1. The namespace node ns1 is rendered for GrandChild since it is visibly
+   utilized by GrandChild.
+2. The namespace node ns2 is rendered since it is on the 
+   InlusiveNamespacePrefixList and is therefore treated as in C14N mode.
+-->
+
+<GrandParent>
+  <Parent>
+    <Child xmlns:ns1="http://example.org/ns1" xmlns:ns2="http://example.org/ns2">
+      <ns1:GrandChild/>
+    </Child>
+  </Parent>
+</GrandParent>  
diff --git a/data/interop/c14n/Y3/signature.tmpl b/data/interop/c14n/Y3/signature.tmpl
new file mode 100644
index 0000000..b492833
--- /dev/null
+++ b/data/interop/c14n/Y3/signature.tmpl
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org/default" xmlns:ns1="http://example.org/ns1">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+          <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ns2" />
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue />
+    </Reference>
+  </SignedInfo>
+  <SignatureValue />
+</Signature>
diff --git a/data/interop/c14n/Y3/signature.xml b/data/interop/c14n/Y3/signature.xml
new file mode 100644
index 0000000..b774ff8
--- /dev/null
+++ b/data/interop/c14n/Y3/signature.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>ayC7IAjulu8Ujs1l7IOkr09X9Lo=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example1.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath>self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>tYcPYeXWUpBwCJKaPHpnT+oc7FQ=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example2.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:default="http://example.org">self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>3/E99/WWurMo5RB3R9mPMi8TNek=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1" xmlns:default="http://example.org/default">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>+9y4JHXxsQSJitQS+qdtKd7P5LE=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example3.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1" xmlns:default="http://example.org/default">self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>HLOhaTrExlTg9ARVdOhHdm1DAKk=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+    <Reference URI="iaikTests.example4.xml">
+      <Transforms>
+        <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+          <XPath xmlns:ns1="http://example.org/ns1">self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild</XPath>
+        </Transform>
+        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+          <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ns2" />
+        </Transform>
+      </Transforms>
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>C+g6VAAmq2rWCqmCfHpLn7BFB/c=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    NkRZexf7MJKmcBEGqorF3JHl6ewlZcghwbRWg96ae7Ob9118U73HVw==
+  </SignatureValue>
+  <KeyInfo>
+    <KeyValue>
+      <DSAKeyValue>
+        <P>
+          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+        </P>
+        <Q>
+          hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+        </Q>
+        <G>
+          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+        </G>
+        <Y>
+          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+        </Y>
+      </DSAKeyValue>
+    </KeyValue>
+    <X509Data>
+      <X509SubjectName>
+        CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+      </X509SubjectName>
+      <X509IssuerSerial>
+        <X509IssuerName>
+          CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509IssuerName>
+        <X509SerialNumber>1017788370348</X509SerialNumber>
+      </X509IssuerSerial>
+      <X509Certificate>
+        MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+        MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+        czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+        Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+        8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+        MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+        YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+        2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+        A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+        4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+        R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+        ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+        lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+        Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+      </X509Certificate>
+      <X509Certificate>
+        MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+        MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+        MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+        3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+        0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+        w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+        nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+        t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+        451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+        PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+        NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+        4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+        MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+        gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+      </X509Certificate>
+    </X509Data>
+  </KeyInfo>
+</Signature>
diff --git a/data/interop/c14n/Y4/.cvsignore b/data/interop/c14n/Y4/.cvsignore
new file mode 100644
index 0000000..ea0c7f1
--- /dev/null
+++ b/data/interop/c14n/Y4/.cvsignore
@@ -0,0 +1 @@
+c14n-*.apache.html
diff --git a/data/interop/c14n/Y4/Readme.txt b/data/interop/c14n/Y4/Readme.txt
new file mode 100644
index 0000000..72b1a64
--- /dev/null
+++ b/data/interop/c14n/Y4/Readme.txt
@@ -0,0 +1,20 @@
+Signature[1] using Canonical XML[2] and Exclusive Canonical XML[3]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] http://www.w3.org/TR/2001/REC-xml-c14n-20010315
+[3] http://www.w3.org/TR/2002/PR-xml-exc-c14n-20020524/
+
+. signature.xml - The signatures
+. c14n-*.xml - The intermediate c14n output
+
+This signature demonstrates canonicalization behaviour when
+parts of the namespace axis are excluded or included. The
+same examples are repeated for canonical XML, exclusive
+canonical XML and exclusive canonical XML with an inclusive
+namespace prefix list. Some examples repeat the same
+behaviour with different XPath expressions.
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Tuesday, May 28, 2002
diff --git a/data/interop/c14n/Y4/c14n-0.html b/data/interop/c14n/Y4/c14n-0.html
new file mode 100644
index 0000000..530e6f3
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-0.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-0.txt b/data/interop/c14n/Y4/c14n-0.txt
new file mode 100644
index 0000000..2ca2b30
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-0.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-1.html b/data/interop/c14n/Y4/c14n-1.html
new file mode 100644
index 0000000..7d115d8
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-1.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-1.txt b/data/interop/c14n/Y4/c14n-1.txt
new file mode 100644
index 0000000..be42edf
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-1.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something xmlns:bar="http://example.org/bar">
+           <foo:Something xmlns:foo="http://example.org/foo">
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-10.html b/data/interop/c14n/Y4/c14n-10.html
new file mode 100644
index 0000000..7d115d8
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-10.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-10.txt b/data/interop/c14n/Y4/c14n-10.txt
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-10.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+           <foo:Something>
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-11.html b/data/interop/c14n/Y4/c14n-11.html
new file mode 100644
index 0000000..7d115d8
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-11.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-11.txt b/data/interop/c14n/Y4/c14n-11.txt
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-11.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+           <foo:Something>
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-12.html b/data/interop/c14n/Y4/c14n-12.html
new file mode 100644
index 0000000..41ba368
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-12.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-12.txt b/data/interop/c14n/Y4/c14n-12.txt
new file mode 100644
index 0000000..cd53346
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-12.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     
+        <bar:Something>
+           
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           
+        </bar:Something>
+     
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-13.html b/data/interop/c14n/Y4/c14n-13.html
new file mode 100644
index 0000000..c15190e
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-13.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-13.txt b/data/interop/c14n/Y4/c14n-13.txt
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-13.txt
@@ -0,0 +1,9 @@
+<bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-14.html b/data/interop/c14n/Y4/c14n-14.html
new file mode 100644
index 0000000..c15190e
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-14.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-14.txt b/data/interop/c14n/Y4/c14n-14.txt
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-14.txt
@@ -0,0 +1,9 @@
+<bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-15.html b/data/interop/c14n/Y4/c14n-15.html
new file mode 100644
index 0000000..517f8b7
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-15.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;baz:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/baz:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-15.txt b/data/interop/c14n/Y4/c14n-15.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-15.txt
diff --git a/data/interop/c14n/Y4/c14n-16.html b/data/interop/c14n/Y4/c14n-16.html
new file mode 100644
index 0000000..8297708
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-16.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/baz:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-16.txt b/data/interop/c14n/Y4/c14n-16.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-16.txt
diff --git a/data/interop/c14n/Y4/c14n-17.html b/data/interop/c14n/Y4/c14n-17.html
new file mode 100644
index 0000000..d8c1b79
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-17.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-17.txt b/data/interop/c14n/Y4/c14n-17.txt
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-17.txt
@@ -0,0 +1,9 @@
+<bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-18.html b/data/interop/c14n/Y4/c14n-18.html
new file mode 100644
index 0000000..3fc6134
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-18.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-18.txt b/data/interop/c14n/Y4/c14n-18.txt
new file mode 100644
index 0000000..6675391
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-18.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns="http://example.org/" xmlns:bar="http://example.org/bar">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+           <foo:Something>
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-19.html b/data/interop/c14n/Y4/c14n-19.html
new file mode 100644
index 0000000..fe370c3
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-19.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-19.txt b/data/interop/c14n/Y4/c14n-19.txt
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-19.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+           <foo:Something>
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-2.html b/data/interop/c14n/Y4/c14n-2.html
new file mode 100644
index 0000000..7d115d8
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-2.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-2.txt b/data/interop/c14n/Y4/c14n-2.txt
new file mode 100644
index 0000000..be42edf
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-2.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something xmlns:bar="http://example.org/bar">
+           <foo:Something xmlns:foo="http://example.org/foo">
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-20.html b/data/interop/c14n/Y4/c14n-20.html
new file mode 100644
index 0000000..fe370c3
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-20.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-20.txt b/data/interop/c14n/Y4/c14n-20.txt
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-20.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+           <foo:Something>
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-21.html b/data/interop/c14n/Y4/c14n-21.html
new file mode 100644
index 0000000..818de06
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-21.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-21.txt b/data/interop/c14n/Y4/c14n-21.txt
new file mode 100644
index 0000000..cd53346
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-21.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     
+        <bar:Something>
+           
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           
+        </bar:Something>
+     
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-22.html b/data/interop/c14n/Y4/c14n-22.html
new file mode 100644
index 0000000..22b9d30
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-22.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-22.txt b/data/interop/c14n/Y4/c14n-22.txt
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-22.txt
@@ -0,0 +1,9 @@
+<bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-23.html b/data/interop/c14n/Y4/c14n-23.html
new file mode 100644
index 0000000..22b9d30
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-23.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-23.txt b/data/interop/c14n/Y4/c14n-23.txt
new file mode 100644
index 0000000..27fb6e5
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-23.txt
@@ -0,0 +1,9 @@
+<bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-24.html b/data/interop/c14n/Y4/c14n-24.html
new file mode 100644
index 0000000..9fdc56c
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-24.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;baz:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/baz:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-24.txt b/data/interop/c14n/Y4/c14n-24.txt
new file mode 100644
index 0000000..162c746
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-24.txt
@@ -0,0 +1 @@
+ xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/"
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-25.html b/data/interop/c14n/Y4/c14n-25.html
new file mode 100644
index 0000000..1ab810f
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-25.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/baz:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-25.txt b/data/interop/c14n/Y4/c14n-25.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-25.txt
diff --git a/data/interop/c14n/Y4/c14n-26.html b/data/interop/c14n/Y4/c14n-26.html
new file mode 100644
index 0000000..826fd84
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-26.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDEDINCLUSIVENAMESPACE"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-26.txt b/data/interop/c14n/Y4/c14n-26.txt
new file mode 100644
index 0000000..1f7eb6e
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-26.txt
@@ -0,0 +1,9 @@
+<bar:Something>
+     <foo:Something xmlns="http://example.org/">
+        <bar:Something xmlns="">
+           <foo:Something xmlns="http://example.org/">
+             <baz:Something xmlns=""></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-27.txt b/data/interop/c14n/Y4/c14n-27.txt
new file mode 100644
index 0000000..a06d512
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-27.txt
@@ -0,0 +1,430 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>lCOS/JtpmOE+4eXFaOpY4v4BOgI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>OyVqEWXE7C+5NyKtceUkdmiFO9A=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>OyVqEWXE7C+5NyKtceUkdmiFO9A=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>bQgF8ICymYZTuUP0FE40l3Q7BZk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>bQgF8ICymYZTuUP0FE40l3Q7BZk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>IJQgd59FJ1PAxxCY5mIL6cZemi0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>SXGijO1eArEaXGphF0dxwj5fp1g=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>rNm4Id9ah12nugzXAUJgjas7ls0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>uOQJQIIUETYyk0+YEBdbEQwrYbw=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>AWtqDbXWKf8TV78C2d16uarbpGk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>uOQJQIIUETYyk0+YEBdbEQwrYbw=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>NpjMPzEF5YZFbz4ls7eN36QWdXs=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>EacBN2aBBNSjpCOzZUOOvSv4zHU=</DigestValue>
+      </Reference>
+    </SignedInfo>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-3.html b/data/interop/c14n/Y4/c14n-3.html
new file mode 100644
index 0000000..41ba368
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-3.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-3.txt b/data/interop/c14n/Y4/c14n-3.txt
new file mode 100644
index 0000000..170354a
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-3.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+      xmlns:foo="http://example.org/foo"
+        <bar:Something xml:lang="en-ie">
+            xmlns:foo="http://example.org/foo"
+             <baz:Something xmlns:baz="http://example.org/baz" xml:lang="en-ie"></baz:Something>
+           
+        </bar:Something>
+     
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-4.html b/data/interop/c14n/Y4/c14n-4.html
new file mode 100644
index 0000000..c15190e
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-4.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-4.txt b/data/interop/c14n/Y4/c14n-4.txt
new file mode 100644
index 0000000..185cbf3
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-4.txt
@@ -0,0 +1,9 @@
+<bar:Something xml:lang="en-ie">
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-5.html b/data/interop/c14n/Y4/c14n-5.html
new file mode 100644
index 0000000..c15190e
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-5.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-5.txt b/data/interop/c14n/Y4/c14n-5.txt
new file mode 100644
index 0000000..185cbf3
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-5.txt
@@ -0,0 +1,9 @@
+<bar:Something xml:lang="en-ie">
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-6.html b/data/interop/c14n/Y4/c14n-6.html
new file mode 100644
index 0000000..517f8b7
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-6.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;baz:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/baz:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-6.txt b/data/interop/c14n/Y4/c14n-6.txt
new file mode 100644
index 0000000..bb45d0b
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-6.txt
@@ -0,0 +1 @@
+ xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo"
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-7.html b/data/interop/c14n/Y4/c14n-7.html
new file mode 100644
index 0000000..8297708
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-7.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;foo:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/baz:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/foo:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-7.txt b/data/interop/c14n/Y4/c14n-7.txt
new file mode 100644
index 0000000..c42ffc1
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-7.txt
@@ -0,0 +1 @@
+ xmlns:bar="http://example.org/bar" xmlns:foo="http://example.org/foo" xmlns:bar="http://example.org/bar" xmlns:foo="http://example.org/foo" xmlns:baz="http://example.org/baz"
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-8.html b/data/interop/c14n/Y4/c14n-8.html
new file mode 100644
index 0000000..d8c1b79
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-8.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-8.txt b/data/interop/c14n/Y4/c14n-8.txt
new file mode 100644
index 0000000..4f5bbb4
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-8.txt
@@ -0,0 +1,9 @@
+<bar:Something xml:lang="en-ie">
+     <foo:Something xmlns="http://example.org/">
+        <bar:Something xmlns="">
+           <foo:Something xmlns="http://example.org/">
+             <baz:Something xmlns=""></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-9.html b/data/interop/c14n/Y4/c14n-9.html
new file mode 100644
index 0000000..530e6f3
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-9.html
@@ -0,0 +1,557 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Caninical XML node set</title>
+<style type="text/css">
+<!-- 
+.INCLUDED { 
+   color: #000000; 
+   background-color: 
+   #FFFFFF; 
+   font-weight: bold; } 
+.EXCLUDED { 
+   color: #666666; 
+   background-color: 
+   #999999; } 
+.INCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #FFFFFF; 
+   font-weight: bold; 
+   font-style: italic; } 
+.EXCLUDEDINCLUSIVENAMESPACE { 
+   color: #0000FF; 
+   background-color: #999999; 
+   font-style: italic; } 
+--> 
+</style> 
+</head>
+<body bgcolor="#999999">
+<h1>Explanation of the output</h1>
+<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>
+<ul>
+<li class="INCLUDED">A node which is in the node set is labeled using the INCLUDED style.</li>
+<li class="EXCLUDED">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>
+<li class="INCLUDEDINCLUSIVENAMESPACE">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+<li class="EXCLUDEDINCLUSIVENAMESPACE">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>
+</ul>
+<h1>Output</h1>
+<pre>
+<span class="EXCLUDED">&lt;foo:Root</span><span class="EXCLUDED"> xmlns="http://example.org/"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;bar:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;foo:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;baz:Something</span><span class="INCLUDED"> xmlns="http://example.org/"</span><span class="INCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="INCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="INCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="INCLUDED">&gt;</span><span class="INCLUDED">&lt;/baz:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;</span><span class="INCLUDED">&lt;/foo:Something&gt;</span><span class="INCLUDED">&para;
+&middot;&middot;</span><span class="INCLUDED">&lt;/bar:Something&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;Signature</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignedInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> xml:lang="en-ie"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;CanonicalizationMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/CanonicalizationMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/SignatureMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">lCOS/JtpmOE+4eXFaOpY4v4BOgI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">OyVqEWXE7C+5NyKtceUkdmiFO9A=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">bQgF8ICymYZTuUP0FE40l3Q7BZk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">IJQgd59FJ1PAxxCY5mIL6cZemi0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">SXGijO1eArEaXGphF0dxwj5fp1g=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">rNm4Id9ah12nugzXAUJgjas7ls0=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">AWtqDbXWKf8TV78C2d16uarbpGk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"bar")&middot;or&middot;parent::bar:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"foo")&middot;or&middot;parent::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"baz")&middot;or&middot;parent::baz:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;!=&middot;"")&middot;or&middot;self::text())&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">Wa7sEWwUmSNsv6p75omGKXL6rjI=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;not&middot;(self::foo:Something)&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node())))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">uOQJQIIUETYyk0+YEBdbEQwrYbw=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;!=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;""))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">6Wmm693F38R+R8E9DZM+MVXXMME=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(count(parent::node()/namespace::*)&middot;&middot;=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;count(parent::node()/namespace::*&middot;|&middot;self::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">NpjMPzEF5YZFbz4ls7eN36QWdXs=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(string(self::node())&middot;=&middot;namespace-uri(parent::node()))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">2jmj7l5rSw0yVb/vlWAYkK/YBwk=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Reference</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> URI=""</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transforms</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;XPath</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ancestor-or-self::bar:Something&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(self::text()&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;(namespace-uri()&middot;!=&middot;"")&middot;&middot;or&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((name()&middot;=&middot;"")&middot;&middot;and&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;((count(ancestor-or-self::node())&middot;mod&middot;2)&middot;=&middot;1)))&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/XPath&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Transform</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;InclusiveNamespaces</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> PrefixList="#default"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/InclusiveNamespaces&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transform&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Transforms&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestMethod</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED"> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&lt;/DigestMethod&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DigestValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">EacBN2aBBNSjpCOzZUOOvSv4zHU=</span><span class="EXCLUDED">&lt;/DigestValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Reference&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignedInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;SignatureValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/SignatureValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyInfo</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;KeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;DSAKeyValue</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;P</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/P&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Q</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">hDLcFK0GO/Hz1arxOOvsgM/VLyU=</span><span class="EXCLUDED">&lt;/Q&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;G</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/G&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;Y</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;+OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/Y&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/DSAKeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyValue&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Data</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SubjectName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Merlin&middot;Hughes,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509SubjectName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerSerial</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509IssuerName</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;CN=Transient&middot;CA,OU=X/Secure,O=Baltimore&middot;Technologies&middot;Ltd.,ST=Dublin,C=IE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerName&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509SerialNumber</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">1017788370348</span><span class="EXCLUDED">&lt;/X509SerialNumber&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509IssuerSerial&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;X509Certificate</span><span class="EXCLUDED"> xmlns="http://www.w3.org/2000/09/xmldsig#"</span><span class="EXCLUDED"> xmlns:bar="http://example.org/bar"</span><span class="EXCLUDED"> xmlns:baz="http://example.org/baz"</span><span class="EXCLUDED"> xmlns:foo="http://example.org/foo"</span><span class="EXCLUDED">&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==&para;
+&middot;&middot;&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Certificate&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/X509Data&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;&middot;&middot;</span><span class="EXCLUDED">&lt;/KeyInfo&gt;</span><span class="EXCLUDED">&para;
+&middot;&middot;</span><span class="EXCLUDED">&lt;/Signature&gt;</span><span class="EXCLUDED">&para;
+</span><span class="EXCLUDED">&lt;/foo:Root&gt;</span></pre></body></html>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/c14n-9.txt b/data/interop/c14n/Y4/c14n-9.txt
new file mode 100644
index 0000000..279fd6c
--- /dev/null
+++ b/data/interop/c14n/Y4/c14n-9.txt
@@ -0,0 +1,9 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+     <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+           <foo:Something>
+             <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y4/signature.xml b/data/interop/c14n/Y4/signature.xml
new file mode 100644
index 0000000..a4f72c7
--- /dev/null
+++ b/data/interop/c14n/Y4/signature.xml
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+  <bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something />
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- everything -->
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>lCOS/JtpmOE+4eXFaOpY4v4BOgI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>OyVqEWXE7C+5NyKtceUkdmiFO9A=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>OyVqEWXE7C+5NyKtceUkdmiFO9A=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements, or directly-used namespace nodes but not foo:Something -->
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>mL1aAQ/RoOPO0SHj9KR+yY3n4CM=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes; I am not in my parent's namespace axis -->
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>bQgF8ICymYZTuUP0FE40l3Q7BZk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes; I am text or have nonempty namespace URI -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>bQgF8ICymYZTuUP0FE40l3Q7BZk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>IJQgd59FJ1PAxxCY5mIL6cZemi0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>SXGijO1eArEaXGphF0dxwj5fp1g=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes but the default on alternate elements -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>rNm4Id9ah12nugzXAUJgjas7ls0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- everything -->
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements, or directly-used namespace nodes but not foo:Something -->
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uOQJQIIUETYyk0+YEBdbEQwrYbw=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes; I am not in my parent's namespace axis -->
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes; I am text or have nonempty namespace URI -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes but the default on alternate elements -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- everything -->
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>AWtqDbXWKf8TV78C2d16uarbpGk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>Wa7sEWwUmSNsv6p75omGKXL6rjI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements, or directly-used namespace nodes but not foo:Something -->
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uOQJQIIUETYyk0+YEBdbEQwrYbw=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes; I am not in my parent's namespace axis -->
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes; I am text or have nonempty namespace URI -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>6Wmm693F38R+R8E9DZM+MVXXMME=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>NpjMPzEF5YZFbz4ls7eN36QWdXs=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- no namespace nodes but the default on alternate elements -->
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>EacBN2aBBNSjpCOzZUOOvSv4zHU=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </P>
+          <Q>hDLcFK0GO/Hz1arxOOvsgM/VLyU=</Q>
+          <G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </G>
+          <Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+      <X509Data>
+        <X509SubjectName>
+          CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509SubjectName>
+        <X509IssuerSerial>
+          <X509IssuerName>
+            CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509IssuerName>
+          <X509SerialNumber>1017788370348</X509SerialNumber>
+        </X509IssuerSerial>
+        <X509Certificate>
+          MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+          czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+          Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+          8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+          MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+          YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+          2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+          A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+          4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+          R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+          ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+          lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+          Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+        </X509Certificate>
+        <X509Certificate>
+          MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+          3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+          0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+          w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+          nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+          t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+          451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+          PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+          NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+          4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+          MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+          gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+        </X509Certificate>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</foo:Root>
diff --git a/data/interop/c14n/Y4/signatureStripped.xml b/data/interop/c14n/Y4/signatureStripped.xml
new file mode 100644
index 0000000..89b21d4
--- /dev/null
+++ b/data/interop/c14n/Y4/signatureStripped.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+  <bar:Something>
+     <foo:Something>
+        <bar:Something>
+           <foo:Something>
+             <baz:Something />
+           </foo:Something>
+        </bar:Something>
+     </foo:Something>
+  </bar:Something>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              <!-- only text, elements or directly-used namespace nodes -->
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>OyVqEWXE7C+5NyKtceUkdmiFO9A=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      Fx34Vc07fXac6qmshhhLe8ogjElSmC6YxTnhxj8wMTSkfvxY+wYtrQ==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </P>
+          <Q>hDLcFK0GO/Hz1arxOOvsgM/VLyU=</Q>
+          <G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </G>
+          <Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+      <X509Data>
+        <X509SubjectName>
+          CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509SubjectName>
+        <X509IssuerSerial>
+          <X509IssuerName>
+            CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509IssuerName>
+          <X509SerialNumber>1017788370348</X509SerialNumber>
+        </X509IssuerSerial>
+        <X509Certificate>
+          MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+          czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+          Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+          8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+          MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+          YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+          2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+          A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+          4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+          R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+          ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+          lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+          Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+        </X509Certificate>
+        <X509Certificate>
+          MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+          3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+          0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+          w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+          nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+          t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+          451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+          PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+          NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+          4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+          MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+          gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+        </X509Certificate>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</foo:Root>
diff --git a/data/interop/c14n/Y5/Readme.txt b/data/interop/c14n/Y5/Readme.txt
new file mode 100644
index 0000000..fdef3ef
--- /dev/null
+++ b/data/interop/c14n/Y5/Readme.txt
@@ -0,0 +1,20 @@
+Signature[1] using Canonical XML[2] and Exclusive Canonical XML[3]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] http://www.w3.org/TR/2001/REC-xml-c14n-20010315
+[3] http://www.w3.org/TR/2002/PR-xml-exc-c14n-20020524/
+
+. signature.xml - The signatures
+. c14n-*.xml - The intermediate c14n output
+
+This signature demonstrates canonicalization behaviour when
+parts of the namespace axis are excluded or included. The
+same examples are repeated for canonical XML, exclusive
+canonical XML and exclusive canonical XML with an inclusive
+namespace prefix list. Some examples repeat the same
+behaviour with different XPath expressions.
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Friday, May 31, 2002
diff --git a/data/interop/c14n/Y5/c14n-0.txt b/data/interop/c14n/Y5/c14n-0.txt
new file mode 100644
index 0000000..6bac93e
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-0.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-1.txt b/data/interop/c14n/Y5/c14n-1.txt
new file mode 100644
index 0000000..2bb5f06
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-1.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+    <foo:Nothing>
+      <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something xmlns:bar="http://example.org/bar">
+          <foo:Something xmlns:foo="http://example.org/foo">
+            <foo:Nothing>
+              <foo:Something xmlns:foo="http://example.org/foo">
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-10.txt b/data/interop/c14n/Y5/c14n-10.txt
new file mode 100644
index 0000000..7a86b5e
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-10.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing>
+      <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something xmlns:foo="http://example.org/foo">
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-11.txt b/data/interop/c14n/Y5/c14n-11.txt
new file mode 100644
index 0000000..1fcc351
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-11.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-12.txt b/data/interop/c14n/Y5/c14n-12.txt
new file mode 100644
index 0000000..afaa6a8
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-12.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      
+        <bar:Something>
+          
+            <foo:Nothing>
+              
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              
+            </foo:Nothing>
+          
+        </bar:Something>
+      
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-13.txt b/data/interop/c14n/Y5/c14n-13.txt
new file mode 100644
index 0000000..e8e07da
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-13.txt
@@ -0,0 +1,15 @@
+<bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-14.txt b/data/interop/c14n/Y5/c14n-14.txt
new file mode 100644
index 0000000..e8e07da
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-14.txt
@@ -0,0 +1,15 @@
+<bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-15.txt b/data/interop/c14n/Y5/c14n-15.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-15.txt
diff --git a/data/interop/c14n/Y5/c14n-16.txt b/data/interop/c14n/Y5/c14n-16.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-16.txt
diff --git a/data/interop/c14n/Y5/c14n-17.txt b/data/interop/c14n/Y5/c14n-17.txt
new file mode 100644
index 0000000..e8e07da
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-17.txt
@@ -0,0 +1,15 @@
+<bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-18.txt b/data/interop/c14n/Y5/c14n-18.txt
new file mode 100644
index 0000000..e3c3ce5
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-18.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns="http://example.org/" xmlns:bar="http://example.org/bar">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-19.txt b/data/interop/c14n/Y5/c14n-19.txt
new file mode 100644
index 0000000..7a86b5e
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-19.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing>
+      <foo:Something xmlns:foo="http://example.org/foo">
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something xmlns:foo="http://example.org/foo">
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-2.txt b/data/interop/c14n/Y5/c14n-2.txt
new file mode 100644
index 0000000..dfacdb4
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-2.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      <foo:Something>
+        <bar:Something xmlns:bar="http://example.org/bar">
+          <foo:Something xmlns:foo="http://example.org/foo">
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-20.txt b/data/interop/c14n/Y5/c14n-20.txt
new file mode 100644
index 0000000..1fcc351
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-20.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-21.txt b/data/interop/c14n/Y5/c14n-21.txt
new file mode 100644
index 0000000..afaa6a8
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-21.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      
+        <bar:Something>
+          
+            <foo:Nothing>
+              
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              
+            </foo:Nothing>
+          
+        </bar:Something>
+      
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-22.txt b/data/interop/c14n/Y5/c14n-22.txt
new file mode 100644
index 0000000..e8e07da
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-22.txt
@@ -0,0 +1,15 @@
+<bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-23.txt b/data/interop/c14n/Y5/c14n-23.txt
new file mode 100644
index 0000000..e8e07da
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-23.txt
@@ -0,0 +1,15 @@
+<bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-24.txt b/data/interop/c14n/Y5/c14n-24.txt
new file mode 100644
index 0000000..50dc423
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-24.txt
@@ -0,0 +1 @@
+ xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/" xmlns="http://example.org/"
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-25.txt b/data/interop/c14n/Y5/c14n-25.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-25.txt
diff --git a/data/interop/c14n/Y5/c14n-26.txt b/data/interop/c14n/Y5/c14n-26.txt
new file mode 100644
index 0000000..19c70cb
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-26.txt
@@ -0,0 +1,15 @@
+<bar:Something>
+    <foo:Nothing xmlns="http://example.org/">
+      <foo:Something xmlns="">
+        <bar:Something xmlns="http://example.org/">
+          <foo:Something xmlns="">
+            <foo:Nothing xmlns="http://example.org/">
+              <foo:Something xmlns="">
+                <baz:Something xmlns="http://example.org/"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-27.txt b/data/interop/c14n/Y5/c14n-27.txt
new file mode 100644
index 0000000..117f21a
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-27.txt
@@ -0,0 +1,430 @@
+<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></SignatureMethod>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>zDcKZDPIDity6ezoUjjYh5l5HD8=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>c6/BJXIi3MjZG8+1xfVv0U0OF/s=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>jT1amifr+CPI+9DdvhzLAJhMggs=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>rwkxkAxYpYzu6x85sa2RgCWmn2Q=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>wH13J/+xZdks1qYv5s8oQD1u4PE=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>wH13J/+xZdks1qYv5s8oQD1u4PE=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>TYZShIzLB4+/2u+yVB7OocXtWyI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>EhCKd+AMiKcL/i41otNu2FnO+/s=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>5oWfKR+g5kK86E3FRTBck+R/BQ0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>PMxe5U6Yzpybj86NXLeXND6J7z8=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>8yo+TMHoDprtw3V8HBuaX7I2eYA=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>K5OrULSkVjkuQd85gxbrkcowg60=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>PMxe5U6Yzpybj86NXLeXND6J7z8=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>8yo+TMHoDprtw3V8HBuaX7I2eYA=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>9nKcDwpjNsAMgP+d+YYSVix6DG0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default"></InclusiveNamespaces>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
+        <DigestValue>CwltHOmCf0tFSyrqRDYQNFT4eo8=</DigestValue>
+      </Reference>
+    </SignedInfo>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-3.txt b/data/interop/c14n/Y5/c14n-3.txt
new file mode 100644
index 0000000..fe10667
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-3.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      
+        <bar:Something xmlns:bar="http://example.org/bar" xml:lang="en-ie">
+           xmlns:foo="http://example.org/foo"
+            <foo:Nothing xmlns:foo="http://example.org/foo" xml:lang="en-ie">
+              
+                <baz:Something xmlns:baz="http://example.org/baz" xml:lang="en-ie"></baz:Something>
+              
+            </foo:Nothing>
+          
+        </bar:Something>
+      
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-4.txt b/data/interop/c14n/Y5/c14n-4.txt
new file mode 100644
index 0000000..bf97f5e
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-4.txt
@@ -0,0 +1,15 @@
+<bar:Something xml:lang="en-ie">
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-5.txt b/data/interop/c14n/Y5/c14n-5.txt
new file mode 100644
index 0000000..bf97f5e
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-5.txt
@@ -0,0 +1,15 @@
+<bar:Something xml:lang="en-ie">
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-6.txt b/data/interop/c14n/Y5/c14n-6.txt
new file mode 100644
index 0000000..eef68d4
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-6.txt
@@ -0,0 +1 @@
+ xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo"
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-7.txt b/data/interop/c14n/Y5/c14n-7.txt
new file mode 100644
index 0000000..6644ce3
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-7.txt
@@ -0,0 +1 @@
+ xmlns:bar="http://example.org/bar" xmlns:foo="http://example.org/foo" xmlns:foo="http://example.org/foo" xmlns:bar="http://example.org/bar" xmlns:foo="http://example.org/foo" xmlns:foo="http://example.org/foo" xmlns:foo="http://example.org/foo" xmlns:baz="http://example.org/baz"
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-8.txt b/data/interop/c14n/Y5/c14n-8.txt
new file mode 100644
index 0000000..2c4ed84
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-8.txt
@@ -0,0 +1,15 @@
+<bar:Something xml:lang="en-ie">
+    <foo:Nothing xmlns="http://example.org/">
+      <foo:Something xmlns="">
+        <bar:Something xmlns="http://example.org/">
+          <foo:Something xmlns="">
+            <foo:Nothing xmlns="http://example.org/">
+              <foo:Something xmlns="">
+                <baz:Something xmlns="http://example.org/"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/c14n-9.txt b/data/interop/c14n/Y5/c14n-9.txt
new file mode 100644
index 0000000..1fcc351
--- /dev/null
+++ b/data/interop/c14n/Y5/c14n-9.txt
@@ -0,0 +1,15 @@
+<bar:Something xmlns:bar="http://example.org/bar">
+    <foo:Nothing xmlns:foo="http://example.org/foo">
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something xmlns:baz="http://example.org/baz"></baz:Something>
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
\ No newline at end of file
diff --git a/data/interop/c14n/Y5/merlin-c14n-three.tar.gz b/data/interop/c14n/Y5/merlin-c14n-three.tar.gz
new file mode 100644
index 0000000..ccfe662
--- /dev/null
+++ b/data/interop/c14n/Y5/merlin-c14n-three.tar.gz
Binary files differ
diff --git a/data/interop/c14n/Y5/signature.xml b/data/interop/c14n/Y5/signature.xml
new file mode 100644
index 0000000..a344404
--- /dev/null
+++ b/data/interop/c14n/Y5/signature.xml
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+  <bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something />
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>zDcKZDPIDity6ezoUjjYh5l5HD8=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>c6/BJXIi3MjZG8+1xfVv0U0OF/s=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>jT1amifr+CPI+9DdvhzLAJhMggs=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>rwkxkAxYpYzu6x85sa2RgCWmn2Q=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>wH13J/+xZdks1qYv5s8oQD1u4PE=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>wH13J/+xZdks1qYv5s8oQD1u4PE=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>TYZShIzLB4+/2u+yVB7OocXtWyI=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>EhCKd+AMiKcL/i41otNu2FnO+/s=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>5oWfKR+g5kK86E3FRTBck+R/BQ0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>PMxe5U6Yzpybj86NXLeXND6J7z8=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>8yo+TMHoDprtw3V8HBuaX7I2eYA=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>K5OrULSkVjkuQd85gxbrkcowg60=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>PMxe5U6Yzpybj86NXLeXND6J7z8=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>8yo+TMHoDprtw3V8HBuaX7I2eYA=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>9nKcDwpjNsAMgP+d+YYSVix6DG0=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>CwltHOmCf0tFSyrqRDYQNFT4eo8=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      N6aqg79OKMQzkU7uTHRmn4ryplhaTh0OFlCRqa/rS+pUBV6M8nTX5A==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </P>
+          <Q>hDLcFK0GO/Hz1arxOOvsgM/VLyU=</Q>
+          <G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </G>
+          <Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+      <X509Data>
+        <X509SubjectName>
+          CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509SubjectName>
+        <X509IssuerSerial>
+          <X509IssuerName>
+            CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509IssuerName>
+          <X509SerialNumber>1017788370348</X509SerialNumber>
+        </X509IssuerSerial>
+        <X509Certificate>
+          MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+          czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+          Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+          8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+          MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+          YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+          2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+          A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+          4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+          R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+          ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+          lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+          Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+        </X509Certificate>
+        <X509Certificate>
+          MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+          3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+          0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+          w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+          nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+          t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+          451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+          PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+          NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+          4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+          MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+          gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+        </X509Certificate>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</foo:Root>
diff --git a/data/interop/c14n/Y5/signatureCommented.xml b/data/interop/c14n/Y5/signatureCommented.xml
new file mode 100644
index 0000000..b3bd230
--- /dev/null
+++ b/data/interop/c14n/Y5/signatureCommented.xml
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:Root xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xmlns="http://example.org/" xml:lang="en-ie">
+  <bar:Something>
+    <foo:Nothing>
+      <foo:Something>
+        <bar:Something>
+          <foo:Something>
+            <foo:Nothing>
+              <foo:Something>
+                <baz:Something />
+              </foo:Something>
+            </foo:Nothing>
+          </foo:Something>
+        </bar:Something>
+      </foo:Something>
+    </foo:Nothing>
+  </bar:Something>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <Reference URI=""><!--  0 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>zDcKZDPIDity6ezoUjjYh5l5HD8=</DigestValue>
+      </Reference><!--  1 -->
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>c6/BJXIi3MjZG8+1xfVv0U0OF/s=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  2 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>jT1amifr+CPI+9DdvhzLAJhMggs=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  3 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>rwkxkAxYpYzu6x85sa2RgCWmn2Q=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  4 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>wH13J/+xZdks1qYv5s8oQD1u4PE=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  5 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>wH13J/+xZdks1qYv5s8oQD1u4PE=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  6 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>TYZShIzLB4+/2u+yVB7OocXtWyI=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  7 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>EhCKd+AMiKcL/i41otNu2FnO+/s=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  8 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>5oWfKR+g5kK86E3FRTBck+R/BQ0=</DigestValue>
+      </Reference>
+      <Reference URI=""><!--  9 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 10 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>PMxe5U6Yzpybj86NXLeXND6J7z8=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 11 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 12 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>8yo+TMHoDprtw3V8HBuaX7I2eYA=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 13 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 14 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 15 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 16 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 17 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 18 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>K5OrULSkVjkuQd85gxbrkcowg60=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 19 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              ((name() != "bar") or parent::bar:Something)  and
+              ((name() != "foo") or parent::foo:Something)  and
+              ((name() != "baz") or parent::baz:Something)  and
+              ((name() != "") or self::text())
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>PMxe5U6Yzpybj86NXLeXND6J7z8=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 20 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>uKgNnJZ4MvqphhpPjor3iChHsQQ=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 21 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              not (self::foo:Something)  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               (string(self::node()) = namespace-uri(parent::node())))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>8yo+TMHoDprtw3V8HBuaX7I2eYA=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 22 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  !=
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 23 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != ""))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>yFhy1S9CS8j2bPAgM43KZcSX8Us=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 24 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (count(parent::node()/namespace::*)  =
+               count(parent::node()/namespace::* | self::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>9nKcDwpjNsAMgP+d+YYSVix6DG0=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 25 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (string(self::node()) = namespace-uri(parent::node()))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</DigestValue>
+      </Reference>
+      <Reference URI=""><!-- 26 -->
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+            <XPath>
+              
+              ancestor-or-self::bar:Something  and
+              (self::text()  or
+               (namespace-uri() != "")  or
+               ((name() = "")  and
+                ((count(ancestor-or-self::node()) mod 2) = 1)))
+            </XPath>
+          </Transform>
+          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+            <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default" />
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue>CwltHOmCf0tFSyrqRDYQNFT4eo8=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>
+      N6aqg79OKMQzkU7uTHRmn4ryplhaTh0OFlCRqa/rS+pUBV6M8nTX5A==
+    </SignatureValue>
+    <KeyInfo>
+      <KeyValue>
+        <DSAKeyValue>
+          <P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </P>
+          <Q>hDLcFK0GO/Hz1arxOOvsgM/VLyU=</Q>
+          <G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </G>
+          <Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </Y>
+        </DSAKeyValue>
+      </KeyValue>
+      <X509Data>
+        <X509SubjectName>
+          CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </X509SubjectName>
+        <X509IssuerSerial>
+          <X509IssuerName>
+            CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </X509IssuerName>
+          <X509SerialNumber>1017788370348</X509SerialNumber>
+        </X509IssuerSerial>
+        <X509Certificate>
+          MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+          czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+          Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+          8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+          MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+          YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+          2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+          A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+          4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+          R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+          ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+          lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+          Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+        </X509Certificate>
+        <X509Certificate>
+          MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+          3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+          0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+          w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+          nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+          t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+          451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+          PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+          NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+          4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+          MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+          gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+        </X509Certificate>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</foo:Root>
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three.tar.gz b/data/interop/xfilter2/merlin-xpath-filter2-three.tar.gz
new file mode 100644
index 0000000..d9bf04e
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three.tar.gz
Binary files differ
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/.cvsignore b/data/interop/xfilter2/merlin-xpath-filter2-three/.cvsignore
new file mode 100644
index 0000000..ea0c7f1
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/.cvsignore
@@ -0,0 +1 @@
+c14n-*.apache.html
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/Readme.txt b/data/interop/xfilter2/merlin-xpath-filter2-three/Readme.txt
new file mode 100644
index 0000000..728be33
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/Readme.txt
@@ -0,0 +1,23 @@
+Sample XML Signatures[1] using the revised XPath Filter 2.0[2]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] Were it considered, the URL would be http://www.w3.org/TR/xmldsig-filter2/
+    but in the meantime it is attached to the accompanying message
+
+First, the last example from the spec along with an example of
+an empty input node set:
+
+  sign-spec.tmpl - A basic signature template
+  sign-spec.xml - The signature
+  sign-spec-c14n-*.txt - C14n output
+
+Next, John Boyer's example (for performance testing):
+
+  sign-xfdl.tmpl - The signature template
+  sign-xfdl.xml - The signature
+  sign-xfdl-c14n-*.txt - C14n output
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Wednesday, June 10, 2002
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-0.txt b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-0.txt
new file mode 100644
index 0000000..6b9358f
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-0.txt
@@ -0,0 +1,11 @@
+<ToBeSigned>
+    
+    <Data></Data>
+    <ReallyToBeSigned>
+        
+        <Data></Data>
+      </ReallyToBeSigned>
+  </ToBeSigned><ToBeSigned>
+    <Data></Data>
+    
+  </ToBeSigned>
\ No newline at end of file
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-1.txt b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-1.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-1.txt
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-2.txt b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-2.txt
new file mode 100644
index 0000000..0a5d053
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec-c14n-2.txt
@@ -0,0 +1,25 @@
+<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></dsig:CanonicalizationMethod>
+      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></dsig:SignatureMethod>
+      <dsig:Reference URI="">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="intersect"> //ToBeSigned </XPath>
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract"> //NotToBeSigned </XPath>
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="union"> //ReallyToBeSigned </XPath>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>p6/HaYIdxbEdYX8/8zNfjED4H5Y=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#signature-value">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></dsig:Transform>
+          <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="union"> /</XPath>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+        <dsig:DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</dsig:DigestValue>
+      </dsig:Reference>
+    </dsig:SignedInfo>
\ No newline at end of file
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec.tmpl b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec.tmpl
new file mode 100644
index 0000000..198f01e
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec.tmpl
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<Document>
+  <ToBeSigned>
+    <!-- comment -->
+    <Data />
+    <NotToBeSigned>
+      <ReallyToBeSigned>
+        <!-- comment -->
+        <Data />
+      </ReallyToBeSigned>
+    </NotToBeSigned>
+  </ToBeSigned>
+  <ToBeSigned>
+    <Data />
+    <NotToBeSigned>
+      <Data />
+    </NotToBeSigned>
+  </ToBeSigned>
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig-xpath="http://www.w3.org/2002/06/xmldsig-filter2">
+    <dsig:SignedInfo>
+      <dsig:CanonicalizationMethod Algorithm="" />
+      <dsig:SignatureMethod Algorithm="" />
+      <dsig:Reference URI="">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <dsig-xpath:XPath Filter="intersect"> //ToBeSigned </dsig-xpath:XPath>
+            <dsig-xpath:XPath Filter="subtract"> //NotToBeSigned </dsig-xpath:XPath>
+            <dsig-xpath:XPath Filter="union"> //ReallyToBeSigned </dsig-xpath:XPath>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="" />
+        <dsig:DigestValue />
+      </dsig:Reference>
+      <dsig:Reference URI="#signature-value">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <dsig-xpath:XPath Filter="union"> /</dsig-xpath:XPath>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="" />
+        <dsig:DigestValue />
+      </dsig:Reference>
+    </dsig:SignedInfo>
+    <dsig:SignatureValue Id="signature-value" />
+  </dsig:Signature>
+</Document>
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec.xml b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec.xml
new file mode 100644
index 0000000..dd5dfd7
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-spec.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Document>
+  <ToBeSigned>
+    <!-- comment -->
+    <Data />
+    <NotToBeSigned>
+      <ReallyToBeSigned>
+        <!-- comment -->
+        <Data />
+      </ReallyToBeSigned>
+    </NotToBeSigned>
+  </ToBeSigned>
+  <ToBeSigned>
+    <Data />
+    <NotToBeSigned>
+      <Data />
+    </NotToBeSigned>
+  </ToBeSigned>
+  <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+    <dsig:SignedInfo>
+      <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+      <dsig:Reference URI="">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="intersect"> //ToBeSigned </XPath>
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract"> //NotToBeSigned </XPath>
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="union"> //ReallyToBeSigned </XPath>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>p6/HaYIdxbEdYX8/8zNfjED4H5Y=</dsig:DigestValue>
+      </dsig:Reference>
+      <dsig:Reference URI="#signature-value">
+        <dsig:Transforms>
+          <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+          <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="union"> /</XPath>
+          </dsig:Transform>
+        </dsig:Transforms>
+        <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <dsig:DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</dsig:DigestValue>
+      </dsig:Reference>
+    </dsig:SignedInfo>
+    <dsig:SignatureValue Id="signature-value">
+      Ft7PdmEYSC8GwxffIa4xiobr1iEaUf3LGNfPLiQnJBJI/1Cp5WiEiQ==
+    </dsig:SignatureValue>
+    <dsig:KeyInfo>
+      <dsig:KeyValue>
+        <dsig:DSAKeyValue>
+          <dsig:P>
+            3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+            Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+            89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+          </dsig:P>
+          <dsig:Q>hDLcFK0GO/Hz1arxOOvsgM/VLyU=</dsig:Q>
+          <dsig:G>
+            nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+            Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+            8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+          </dsig:G>
+          <dsig:Y>
+            cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+            Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+            +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+          </dsig:Y>
+        </dsig:DSAKeyValue>
+      </dsig:KeyValue>
+      <dsig:X509Data>
+        <dsig:X509SubjectName>
+          CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+        </dsig:X509SubjectName>
+        <dsig:X509IssuerSerial>
+          <dsig:X509IssuerName>
+            CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+          </dsig:X509IssuerName>
+          <dsig:X509SerialNumber>1017788370348</dsig:X509SerialNumber>
+        </dsig:X509IssuerSerial>
+        <dsig:X509Certificate>
+          MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+          czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+          Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+          8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+          MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+          YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+          2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+          A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+          4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+          R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+          ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+          lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+          Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+        </dsig:X509Certificate>
+        <dsig:X509Certificate>
+          MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+          DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+          cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+          MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+          3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+          0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+          w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+          nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+          t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+          451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+          PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+          NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+          4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+          MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+          gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+        </dsig:X509Certificate>
+      </dsig:X509Data>
+    </dsig:KeyInfo>
+  </dsig:Signature>
+</Document>
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl-c14n-0.txt b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl-c14n-0.txt
new file mode 100644
index 0000000..dea89da
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl-c14n-0.txt
@@ -0,0 +1,3986 @@
+<XFDL version="4.0.1">
+	<vfd_title>SF71</vfd_title>
+	<vfd_author>Thomas Mohr</vfd_author>
+	<vfd_revision>4/6/98</vfd_revision>
+	<vfd_date>4/6/98</vfd_date>
+	<saveformat>application/x-xfdl</saveformat>
+	<transmitformat>application/x-xfdl</transmitformat>
+	<formid content="array">
+		<version>1.0.0</version>
+	</formid>
+	<page sid="PAGE1">
+		<vfd_pagesize>letter</vfd_pagesize>
+		<vfd_pagedpi>120</vfd_pagedpi>
+		<vfd_printsize>8.0;10.5</vfd_printsize>
+		<label>PAGE1</label>
+		<bgcolor content="array">
+			<ae>235</ae>
+			<ae>235</ae>
+			<ae>235</ae>
+		</bgcolor>
+		<fontinfo content="array">
+			<ae>Courier</ae>
+			<ae>9</ae>
+			<ae>plain</ae>
+		</fontinfo>
+		<label sid="LABEL1">
+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>14</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+			<size content="array">
+				<ae>61</ae>
+				<ae>1</ae>
+			</size>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>3</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>874</ae>
+					<ae>34</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>1.  NAME</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>100</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>218</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Last, First, Middle Initial)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>385</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>85</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>3.  ORGANIZATION</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>248</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>4.  TYPE OF LEAVE/ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>32</ae>
+					<ae>155</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>236</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Check appropriate box(es) below.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>270</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Date</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>352</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Time</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>513</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>134</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>Total
+Hours</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>186</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accrued Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>232</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Restored Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>278</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>323</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accured Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>368</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>409</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Purpose:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>410</ae>
+				</ae>
+			</itemlocation>
+			<value>Medical/dental/optical Examination of requesting employee</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>45</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>535</ae>
+					<ae>410</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>46</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>Other</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>435</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>439</ae>
+					<ae>42</ae>
+				</ae>
+			</itemlocation>
+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>204</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Compensatory Time Off</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>535</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>180</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Other Paid Absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>556</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>158</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>(Specify in Remarks)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>593</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Leave Without Pay</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>676</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>677</ae>
+					<ae>183</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>214</ae>
+					<ae>126</ae>
+				</ae>
+			</itemlocation>
+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL30">
+			<value>I hereby invoke my</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>700</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>191</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL31">
+			<value>entitlement Family and</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>342</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>216</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL32">
+			<value>Medical Leave for:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>364</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>403</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>181</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Birth/Adoption/Foster Care</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>426</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>182</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>483</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>184</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Health Condition of Self</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>537</ae>
+				</ae>
+			</itemlocation>
+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>26</ae>
+				<ae>5</ae>
+			</size>
+		</label>
+		<label sid="LABEL37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>630</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>6.  REMARKS:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>7.  CERTIFICATION:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>178</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>715</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>767</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>66</ae>
+				</ae>
+			</itemlocation>
+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>230</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>EMPLOYEE SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>877</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>335</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>8.  OFFICAL ACTION ON REQUEST:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>897</ae>
+				</ae>
+			</itemlocation>
+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>53</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>388</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>APPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>638</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>DISAPPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>941</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>112</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL49">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>970</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>PRIVACY ACT STATEMENT</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL50">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>996</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>134</ae>
+				</ae>
+			</itemlocation>
+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL51">
+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>7</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1140</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>875</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL52">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>422</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL53">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>438</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>454</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<justify>right</justify>
+		</label>
+		<line sid="LINE1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>82</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>218</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>263</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>311</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>354</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>398</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>530</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>578</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>626</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>743</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>867</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>967</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>1164</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>51</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>892</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>265</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>673</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>494</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>591</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<field sid="FIELD1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>489</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>John Q. Public</value>
+		</field>
+		<field sid="FIELD2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>537</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>123</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>123456789</value>
+		</field>
+		<field sid="FIELD3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>109</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>872</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>PureEdge Solutions Inc.</value>
+		</field>
+		<check sid="CHECK1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>191</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>277</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>367</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>438</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>519</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>495</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD32">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>591</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>680</ae>
+					<ae>326</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<check sid="CHECK13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>404</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>428</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>485</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<field sid="FIELD44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>657</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>57</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK10.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<value></value>
+		</field>
+		<field sid="FIELD45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>712</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>31</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK8.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK8.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<value></value>
+		</field>
+		<button sid="BUTTON1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>250</ae>
+					<ae>839</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>346</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE1</signature>
+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<borderwidth>0</borderwidth>
+			<signitemrefs content="array">
+				<ae>omit</ae>
+				<ae>PAGE1.CHECK16</ae>
+				<ae>PAGE1.CHECK17</ae>
+				<ae>PAGE1.FIELD47</ae>
+				<ae>PAGE1.BUTTON2</ae>
+				<ae>SIGNATURE2</ae>
+				<ae>PAGE1.FIELD48</ae>
+			</signitemrefs>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<value content="compute">
+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+		</button>
+                
+		<field sid="FIELD46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>655</ae>
+					<ae>840</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval>05-08-02</cval>
+				<compute>
+					(BUTTON1.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		
+		
+		
+		
+		
+		<spacer sid="vfd_spacer">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>960</ae>
+					<ae>1260</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</spacer>
+	</page>
+</XFDL>
\ No newline at end of file
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.tmpl b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.tmpl
new file mode 100644
index 0000000..49773e6
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.tmpl
@@ -0,0 +1,4151 @@
+<?xml version="1.0"?>
+<XFDL version="4.0.1">
+	<vfd_title>SF71</vfd_title>
+	<vfd_author>Thomas Mohr</vfd_author>
+	<vfd_revision>4/6/98</vfd_revision>
+	<vfd_date>4/6/98</vfd_date>
+	<saveformat>application/x-xfdl</saveformat>
+	<transmitformat>application/x-xfdl</transmitformat>
+	<formid content="array">
+		<version>1.0.0</version>
+	</formid>
+	<page sid="PAGE1">
+		<vfd_pagesize>letter</vfd_pagesize>
+		<vfd_pagedpi>120</vfd_pagedpi>
+		<vfd_printsize>8.0;10.5</vfd_printsize>
+		<label>PAGE1</label>
+		<bgcolor content="array">
+			<ae>235</ae>
+			<ae>235</ae>
+			<ae>235</ae>
+		</bgcolor>
+		<fontinfo content="array">
+			<ae>Courier</ae>
+			<ae>9</ae>
+			<ae>plain</ae>
+		</fontinfo>
+		<label sid="LABEL1">
+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>14</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+			<size content="array">
+				<ae>61</ae>
+				<ae>1</ae>
+			</size>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>3</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>874</ae>
+					<ae>34</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>1.  NAME</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>100</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>218</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Last, First, Middle Initial)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>385</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>85</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>3.  ORGANIZATION</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>248</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>4.  TYPE OF LEAVE/ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>32</ae>
+					<ae>155</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>236</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Check appropriate box(es) below.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>270</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Date</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>352</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Time</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>513</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>134</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>Total
+Hours</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>186</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accrued Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>232</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Restored Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>278</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>323</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accured Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>368</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>409</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Purpose:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>410</ae>
+				</ae>
+			</itemlocation>
+			<value>Medical/dental/optical Examination of requesting employee</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>45</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>535</ae>
+					<ae>410</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>46</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>Other</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>435</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>439</ae>
+					<ae>42</ae>
+				</ae>
+			</itemlocation>
+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>204</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Compensatory Time Off</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>535</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>180</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Other Paid Absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>556</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>158</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>(Specify in Remarks)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>593</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Leave Without Pay</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>676</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>677</ae>
+					<ae>183</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>214</ae>
+					<ae>126</ae>
+				</ae>
+			</itemlocation>
+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL30">
+			<value>I hereby invoke my</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>700</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>191</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL31">
+			<value>entitlement Family and</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>342</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>216</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL32">
+			<value>Medical Leave for:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>364</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>403</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>181</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Birth/Adoption/Foster Care</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>426</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>182</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>483</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>184</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Health Condition of Self</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>537</ae>
+				</ae>
+			</itemlocation>
+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>26</ae>
+				<ae>5</ae>
+			</size>
+		</label>
+		<label sid="LABEL37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>630</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>6.  REMARKS:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>7.  CERTIFICATION:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>178</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>715</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>767</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>66</ae>
+				</ae>
+			</itemlocation>
+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>230</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>EMPLOYEE SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>877</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>335</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>8.  OFFICAL ACTION ON REQUEST:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>897</ae>
+				</ae>
+			</itemlocation>
+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>53</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>388</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>APPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>638</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>DISAPPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>941</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>112</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL49">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>970</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>PRIVACY ACT STATEMENT</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL50">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>996</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>134</ae>
+				</ae>
+			</itemlocation>
+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL51">
+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>7</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1140</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>875</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL52">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>422</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL53">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>438</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>454</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<justify>right</justify>
+		</label>
+		<line sid="LINE1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>82</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>218</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>263</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>311</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>354</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>398</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>530</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>578</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>626</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>743</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>867</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>967</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>1164</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>51</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>892</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>265</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>673</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>494</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>591</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<field sid="FIELD1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>489</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>John Q. Public</value>
+		</field>
+		<field sid="FIELD2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>537</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>123</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>123456789</value>
+		</field>
+		<field sid="FIELD3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>109</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>872</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>PureEdge Solutions Inc.</value>
+		</field>
+		<check sid="CHECK1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>191</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>277</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>367</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>438</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>519</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>495</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD32">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>591</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<field sid="FIELD39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</field>
+		<field sid="FIELD41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<field sid="FIELD43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value></value>
+		</field>
+		<check sid="CHECK12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>680</ae>
+					<ae>326</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value></value>
+		</check>
+		<check sid="CHECK13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>404</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>428</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<check sid="CHECK15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>485</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval></cval>
+				<compute>
+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value></value>
+		</check>
+		<field sid="FIELD44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>657</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>57</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK10.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<value></value>
+		</field>
+		<field sid="FIELD45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>712</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>31</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK8.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK8.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<value></value>
+		</field>
+		<button sid="BUTTON1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>250</ae>
+					<ae>839</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>346</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE1</signature>
+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<borderwidth>0</borderwidth>
+			<signitemrefs content="array">
+				<ae>omit</ae>
+				<ae>PAGE1.CHECK16</ae>
+				<ae>PAGE1.CHECK17</ae>
+				<ae>PAGE1.FIELD47</ae>
+				<ae>PAGE1.BUTTON2</ae>
+				<ae>SIGNATURE2</ae>
+				<ae>PAGE1.FIELD48</ae>
+			</signitemrefs>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<value content="compute">
+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+		</button>
+                <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+                  <SignedInfo>
+                    <CanonicalizationMethod Algorithm="" />
+                    <SignatureMethod Algorithm="" />
+                    <Reference URI="">
+                      <Transforms>
+                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+                        <Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+                          <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">
+                            /XFDL/page[@sid="PAGE1"]/*[@sid="CHECK16" or @sid="CHECK17" or @sid="FIELD47" or @sid="BUTTON2" or @sid="FIELD48"] |
+                            /XFDL/page/triggeritem[not(@sid)]
+                          </XPath>
+                        </Transform>
+                      </Transforms>
+                      <DigestMethod Algorithm="" />
+                      <DigestValue />
+                    </Reference>
+                  </SignedInfo>
+                  <SignatureValue />
+                  <!-- KeyInfo -->
+                </Signature>
+		<field sid="FIELD46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>655</ae>
+					<ae>840</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval>05-08-02</cval>
+				<compute>
+					(BUTTON1.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<check sid="CHECK16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>362</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK17.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value></value>
+		</check>
+		<check sid="CHECK17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>604</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval></cval>
+				<compute>
+					(CHECK16.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value></value>
+		</check>
+		<field sid="FIELD47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>917</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>770</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<Format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK17.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</Format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK17.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<borderwidth>0</borderwidth>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<value></value>
+		</field>
+		<button sid="BUTTON2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>132</ae>
+					<ae>939</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>466</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE2</signature>
+			<signer></signer>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<value content="compute">
+				<cval></cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+			<borderwidth>0</borderwidth>
+		</button>
+		<field sid="FIELD48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>656</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval></cval>
+				<compute>
+					(BUTTON2.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<spacer sid="vfd_spacer">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>960</ae>
+					<ae>1260</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</spacer>
+	</page>
+</XFDL>
diff --git a/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.xml b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.xml
new file mode 100644
index 0000000..897460b
--- /dev/null
+++ b/data/interop/xfilter2/merlin-xpath-filter2-three/sign-xfdl.xml
@@ -0,0 +1,4225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XFDL version="4.0.1">
+	<vfd_title>SF71</vfd_title>
+	<vfd_author>Thomas Mohr</vfd_author>
+	<vfd_revision>4/6/98</vfd_revision>
+	<vfd_date>4/6/98</vfd_date>
+	<saveformat>application/x-xfdl</saveformat>
+	<transmitformat>application/x-xfdl</transmitformat>
+	<formid content="array">
+		<version>1.0.0</version>
+	</formid>
+	<page sid="PAGE1">
+		<vfd_pagesize>letter</vfd_pagesize>
+		<vfd_pagedpi>120</vfd_pagedpi>
+		<vfd_printsize>8.0;10.5</vfd_printsize>
+		<label>PAGE1</label>
+		<bgcolor content="array">
+			<ae>235</ae>
+			<ae>235</ae>
+			<ae>235</ae>
+		</bgcolor>
+		<fontinfo content="array">
+			<ae>Courier</ae>
+			<ae>9</ae>
+			<ae>plain</ae>
+		</fontinfo>
+		<label sid="LABEL1">
+			<value>REQUEST FOR LEAVE OR APPROVED ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>14</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+			<size content="array">
+				<ae>61</ae>
+				<ae>1</ae>
+			</size>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>3</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>874</ae>
+					<ae>34</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>1.  NAME</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>100</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>218</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Last, First, Middle Initial)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>35</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>385</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>2.  EMPLOYEE OR SOCIAL SECURITY NUMBER</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>85</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>3.  ORGANIZATION</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>248</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>4.  TYPE OF LEAVE/ABSENCE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>32</ae>
+					<ae>155</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>236</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>(Check appropriate box(es) below.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>270</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Date</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>352</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>From:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>163</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Time</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>513</ae>
+					<ae>158</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>48</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>To:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>134</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>Total
+Hours</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>186</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accrued Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>232</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Restored Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>278</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Annual Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>323</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Accured Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>368</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>205</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Advance Sick Leave</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>409</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Purpose:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>410</ae>
+				</ae>
+			</itemlocation>
+			<value>Medical/dental/optical Examination of requesting employee</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>45</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>535</ae>
+					<ae>410</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>46</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>Other</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>142</ae>
+					<ae>435</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>439</ae>
+					<ae>42</ae>
+				</ae>
+			</itemlocation>
+			<value>Care of family member/bereavement, including medical/dental/optical examination of family member</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>204</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Compensatory Time Off</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>535</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>180</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Other Paid Absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>556</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>158</ae>
+					<ae>24</ae>
+				</ae>
+			</itemlocation>
+			<value>(Specify in Remarks)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>9</ae>
+				<ae>plain</ae>
+				<ae>italic</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>64</ae>
+					<ae>593</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>Leave Without Pay</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>676</ae>
+					<ae>135</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>46</ae>
+				</ae>
+			</itemlocation>
+			<value>5. FAMILY AND
+	MEDICAL LEAVE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>677</ae>
+					<ae>183</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>214</ae>
+					<ae>126</ae>
+				</ae>
+			</itemlocation>
+			<value>If annual leave, sick leave, or leave without pay will be used under the Family and Medical Leave Act of 1993, please provide the following information:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL30">
+			<value>I hereby invoke my</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>700</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>191</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL31">
+			<value>entitlement Family and</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>342</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>216</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL32">
+			<value>Medical Leave for:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>364</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>215</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>403</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>181</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Birth/Adoption/Foster Care</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>426</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>182</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Heath Condition of spouse, Son, Daughter, or Parent</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>708</ae>
+					<ae>483</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>184</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+			<value>Serious Health Condition of Self</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>675</ae>
+					<ae>537</ae>
+				</ae>
+			</itemlocation>
+			<value>Contact your supervisor and/or our personnel office to obtain additional information about your entitlements and responsibilities under the Family and Medical Leave Act of 1993.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>26</ae>
+				<ae>5</ae>
+			</size>
+		</label>
+		<label sid="LABEL37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>630</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>6.  REMARKS:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>170</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>7.  CERTIFICATION:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>178</ae>
+					<ae>747</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>715</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>I hereby request leave/approved absence from duty as indicated above and certify that such leave/absence</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>767</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>66</ae>
+				</ae>
+			</itemlocation>
+			<value>is reuested from the purpose(s) indicated. I understand that I must comply with my employing agency's procedures for requesting leave/approved absence (and provide additional documention, including medical certification, if required) and that falsification of information on this form may be grounds for disciplinary action, including removal.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>230</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>EMPLOYEE SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>841</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>877</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>335</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>8.  OFFICAL ACTION ON REQUEST:</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>897</ae>
+				</ae>
+			</itemlocation>
+			<value>(If disapproved, give reason. If annual leave, initiate action to reschedule.)</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<size content="array">
+				<ae>53</ae>
+				<ae>1</ae>
+			</size>
+		</label>
+		<label sid="LABEL45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>388</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>APPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>638</ae>
+					<ae>875</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>192</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>DISAPPROVED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>941</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>112</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>SIGNATURE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>597</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>58</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<value>DATE</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>11</ae>
+				<ae>bold</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL49">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>970</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>26</ae>
+				</ae>
+			</itemlocation>
+			<value>PRIVACY ACT STATEMENT</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>10</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<justify>center</justify>
+		</label>
+		<label sid="LABEL50">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>996</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>873</ae>
+					<ae>134</ae>
+				</ae>
+			</itemlocation>
+			<value>Section 6311 of title 5, United States Code, authorizes collection of this information. The primary use of this information is by management and your payroll office to approve and record your use of leave. Additional disclosures of the information mat be: To the Department of labor when processing a claim for compensation regarding a job connected injury or illness; to a State unemployment compensation office regarding a claim; the Federal Life Insurance or Health Benefits carries regarding a claim; to a Federal State, or local law enforcement agency when your agency becomes aware of a violation or possible violation of civil or criminal law; to a Federal agency when conducting an investigation for employment or Services Administration in connection with its responsibilities for records management.
+
+Where  the Employee identification number is your Social Security Number, collection of this information is authorized by Executive Order 9397. Furnishing the information on this form, including your Social Security Number, is voluntary, but to do so may result in disapproval request.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL51">
+			<value>If your agency uses the information furnished on this form for purposes other than those indicated above, it may provide you with an additional statement reflecting those purposes.</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>7</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1140</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>875</ae>
+					<ae>22</ae>
+				</ae>
+			</itemlocation>
+		</label>
+		<label sid="LABEL52">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>18</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>422</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>NSN 7540-000-753-5067
+PREVIOUS EDITION MAY BE USED</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+		</label>
+		<label sid="LABEL53">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>438</ae>
+					<ae>1168</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>454</ae>
+					<ae>38</ae>
+				</ae>
+			</itemlocation>
+			<value>STANDARD FORM 71 (Rev. 12-97)
+PRESCRIBED BY OFFICE OF PERSONNEL MANAGEMENT, 5 CFR PART 630</value>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<justify>right</justify>
+		</label>
+		<line sid="LINE1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>82</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>218</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>263</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>311</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>354</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>398</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>406</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>530</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>578</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>657</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>626</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>743</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>867</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>967</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>1164</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>876</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>17</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>51</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>892</ae>
+					<ae>32</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1133</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>430</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>266</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>179</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>220</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>265</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>673</ae>
+					<ae>133</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>494</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>268</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>349</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>510</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<line sid="LINE31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>591</ae>
+					<ae>484</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>143</ae>
+				</ae>
+			</itemlocation>
+		</line>
+		<field sid="FIELD1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>20</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>489</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>John Q. Public</value>
+		</field>
+		<field sid="FIELD2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>537</ae>
+					<ae>58</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>123</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>123456789</value>
+		</field>
+		<field sid="FIELD3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>19</ae>
+					<ae>109</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>872</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<value>PureEdge Solutions Inc.</value>
+		</field>
+		<check sid="CHECK1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>191</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>188</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK1.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK1.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK1.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>231</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK2.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK2.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK2.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK3">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>277</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD18">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>276</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK3.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK3.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK3.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK4">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>322</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD19">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD20">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD21">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>79</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD22">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD23">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>321</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK4.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK4.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK4.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK5">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>367</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD24">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD25">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD26">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>431</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD27">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD28">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>593</ae>
+					<ae>366</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK5.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK5.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK5.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK6">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK8.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK7">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>121</ae>
+					<ae>438</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK8.value == "on") || (CHECK6.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK8">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>519</ae>
+					<ae>412</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value>off</value>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK5.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK6.value == "on") || (CHECK7.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+		</check>
+		<check sid="CHECK9">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>495</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD29">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD30">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD31">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD32">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD33">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>498</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK9.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK9.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK9.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK10">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD34">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD35">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD36">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD37">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD38">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>543</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK10.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK10.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK10.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK11">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>28</ae>
+					<ae>591</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<field sid="FIELD39">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>269</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD40">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>350</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>date</ae>
+				<ae>case_insensitive</ae>
+				<ae>optional</ae>
+				<template content="array">
+					<ae>##-##-##</ae>
+				</template>
+				<presentation>MM-DD-YY</presentation>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<fontinfo content="array">
+				<ae>Courier</ae>
+				<ae>8</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</field>
+		<field sid="FIELD41">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>432</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>78</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD42">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>511</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>80</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<justify>center</justify>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>time</ae>
+				<ae>short</ae>
+				<ae>optional</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<field sid="FIELD43">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>592</ae>
+					<ae>590</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>81</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK11.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<check_off content="compute">
+				<cval />
+				<compute>
+					(CHECK11.value == "off") ? set("value", "") : ""
+				</compute>
+			</check_off>
+			<format content="array">
+				<ae>float</ae>
+				<ae>optional</ae>
+				<range content="array">
+					<ae>0</ae>
+					<ae>9999.9999</ae>
+				</range>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						((CHECK11.value == "on") ? "mandatory" : "optional")
+					</compute>
+				</ae>
+			</format>
+			<borderwidth>0</borderwidth>
+			<value />
+		</field>
+		<check sid="CHECK12">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>680</ae>
+					<ae>326</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<value />
+		</check>
+		<check sid="CHECK13">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>404</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK14.value == "on") || (CHECK15.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value />
+		</check>
+		<check sid="CHECK14">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>428</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK15.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value />
+		</check>
+		<check sid="CHECK15">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>689</ae>
+					<ae>485</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>15</ae>
+					<ae>14</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>10</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<active content="compute">
+				<cval>off</cval>
+				<compute>
+					(CHECK12.value == "on") ? "on" : "off"
+				</compute>
+			</active>
+			<editstate content="compute">
+				<cval>readwrite</cval>
+				<compute>
+					(value == "on") ? "readonly" : "readwrite"
+				</compute>
+			</editstate>
+			<radio_check content="compute">
+				<cval />
+				<compute>
+					((CHECK14.value == "on") || (CHECK13.value == "on")) ? set("value", "off") : ""
+				</compute>
+			</radio_check>
+			<value />
+		</check>
+		<field sid="FIELD44">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>657</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>57</ae>
+				</ae>
+			</itemlocation>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK10.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<value />
+		</field>
+		<field sid="FIELD45">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>42</ae>
+					<ae>712</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>846</ae>
+					<ae>31</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK8.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK8.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<value />
+		</field>
+		<button sid="BUTTON1">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>250</ae>
+					<ae>839</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>346</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE1</signature>
+			<signer>(cs) John M. Boyer, jboyer@pureedge.com</signer>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<borderwidth>0</borderwidth>
+			<signitemrefs content="array">
+				<ae>omit</ae>
+				<ae>PAGE1.CHECK16</ae>
+				<ae>PAGE1.CHECK17</ae>
+				<ae>PAGE1.FIELD47</ae>
+				<ae>PAGE1.BUTTON2</ae>
+				<ae>SIGNATURE2</ae>
+				<ae>PAGE1.FIELD48</ae>
+			</signitemrefs>
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<value content="compute">
+				<cval>(cs) John M. Boyer, jboyer@pureedge.com</cval>
+				<compute>
+					signer
+				</compute>
+			</value>
+		</button>
+                <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+                  <SignedInfo>
+                    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+                    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+                    <Reference URI="">
+                      <Transforms>
+                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+                        <Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+                          <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">
+                            /XFDL/page[@sid="PAGE1"]/*[@sid="CHECK16" or @sid="CHECK17" or @sid="FIELD47" or @sid="BUTTON2" or @sid="FIELD48"] |
+                            /XFDL/page/triggeritem[not(@sid)]
+                          </XPath>
+                        </Transform>
+                      </Transforms>
+                      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+                      <DigestValue>xtHvgrYCYiWUtvgbaA6yx4fY4hI=</DigestValue>
+                    </Reference>
+                  </SignedInfo>
+                  <SignatureValue>
+                    UCx213C5lb0LhhsAHEO+L5Pbkq8sBhh/yXJuL4zDZMyASF/cn6eoDA==
+                  </SignatureValue>
+                  <KeyInfo>
+                    <KeyValue>
+                      <DSAKeyValue>
+                        <P>
+                          3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+                          Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+                          89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+                        </P>
+                        <Q>hDLcFK0GO/Hz1arxOOvsgM/VLyU=</Q>
+                        <G>
+                          nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+                          Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+                          8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+                        </G>
+                        <Y>
+                          cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+                          Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+                          +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+                        </Y>
+                      </DSAKeyValue>
+                    </KeyValue>
+                    <X509Data>
+                      <X509SubjectName>
+                        CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+                      </X509SubjectName>
+                      <X509IssuerSerial>
+                        <X509IssuerName>
+                          CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+                        </X509IssuerName>
+                        <X509SerialNumber>1017788370348</X509SerialNumber>
+                      </X509IssuerSerial>
+                      <X509Certificate>
+                        MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                        MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+                        czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+                        Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+                        8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+                        MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+                        YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+                        2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+                        A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+                        4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+                        R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+                        ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+                        lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+                        Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+                      </X509Certificate>
+                      <X509Certificate>
+                        MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                        MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+                        DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+                        cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+                        MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+                        3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+                        0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+                        w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+                        nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+                        t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+                        451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+                        PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+                        NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+                        4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+                        MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+                        gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+                      </X509Certificate>
+                    </X509Data>
+                  </KeyInfo>
+                </Signature>
+		<field sid="FIELD46">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>655</ae>
+					<ae>840</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval>05-08-02</cval>
+				<compute>
+					(BUTTON1.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<check sid="CHECK16">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>362</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval />
+				<compute>
+					(CHECK17.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value />
+		</check>
+		<check sid="CHECK17">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>604</ae>
+					<ae>873</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>22</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<fontinfo content="array">
+				<ae>Helvetica</ae>
+				<ae>18</ae>
+				<ae>plain</ae>
+			</fontinfo>
+			<radio_behaviour content="compute">
+				<cval />
+				<compute>
+					(CHECK16.value == "on") ? set("value", "off") : ""
+				</compute>
+			</radio_behaviour>
+			<value />
+		</check>
+		<field sid="FIELD47">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>41</ae>
+					<ae>917</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>770</ae>
+					<ae>23</ae>
+				</ae>
+			</itemlocation>
+			<Format content="array">
+				<ae>string</ae>
+				<ae content="compute">
+					<cval>optional</cval>
+					<compute>
+						(CHECK17.value == "on") ? "mandatory" : "optional"
+					</compute>
+				</ae>
+			</Format>
+			<editstate content="compute">
+				<cval>readonly</cval>
+				<compute>
+					(CHECK17.value == "on") ? "readwrite" : "readonly"
+				</compute>
+			</editstate>
+			<borderwidth>0</borderwidth>
+			<scrollhoriz>wordwrap</scrollhoriz>
+			<scrollvert>fixed</scrollvert>
+			<value />
+		</field>
+		<button sid="BUTTON2">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>132</ae>
+					<ae>939</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>466</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<type>signature</type>
+			<signature>SIGNATURE2</signature>
+			<signer />
+			<format content="array">
+				<ae>string</ae>
+				<ae>mandatory</ae>
+			</format>
+			<signoptions content="array">
+				<ae>omit</ae>
+				<ae>triggeritem</ae>
+			</signoptions>
+			<fontinfo content="array">
+				<ae>Times</ae>
+				<ae>8</ae>
+				<ae>bold</ae>
+			</fontinfo>
+			<value content="compute">
+				<cval />
+				<compute>
+					signer
+				</compute>
+			</value>
+			<borderwidth>0</borderwidth>
+		</button>
+		<field sid="FIELD48">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>656</ae>
+					<ae>940</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>155</ae>
+					<ae>27</ae>
+				</ae>
+			</itemlocation>
+			<borderwidth>0</borderwidth>
+			<editstate>readonly</editstate>
+			<value content="compute">
+				<cval />
+				<compute>
+					(BUTTON2.value != "") ? "*" : ""
+				</compute>
+			</value>
+			<format content="array">
+				<ae>date</ae>
+				<ae>optional</ae>
+				<presentation>MM-DD-YY</presentation>
+			</format>
+		</field>
+		<spacer sid="vfd_spacer">
+			<itemlocation content="array">
+				<ae content="array">
+					<ae>absolute</ae>
+					<ae>960</ae>
+					<ae>1260</ae>
+				</ae>
+				<ae content="array">
+					<ae>extent</ae>
+					<ae>1</ae>
+					<ae>1</ae>
+				</ae>
+			</itemlocation>
+		</spacer>
+	</page>
+</XFDL>
diff --git a/data/org/apache/xml/security/c14n/in/31_c14n-comments.xml b/data/org/apache/xml/security/c14n/in/31_c14n-comments.xml
new file mode 100644
index 0000000..d98d168
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/31_c14n-comments.xml
@@ -0,0 +1,6 @@
+<?xml-stylesheet href="doc.xsl"
+   type="text/xsl"   ?>
+<doc>Hello, world!<!-- Comment 1 --></doc>
+<?pi-without-data?>
+<!-- Comment 2 -->
+<!-- Comment 3 -->
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/31_c14n.xml b/data/org/apache/xml/security/c14n/in/31_c14n.xml
new file mode 100644
index 0000000..af9a977
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/31_c14n.xml
@@ -0,0 +1,4 @@
+<?xml-stylesheet href="doc.xsl"
+   type="text/xsl"   ?>
+<doc>Hello, world!</doc>
+<?pi-without-data?>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/31_input.xml b/data/org/apache/xml/security/c14n/in/31_input.xml
new file mode 100644
index 0000000..ea0b768
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/31_input.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>

+

+<?xml-stylesheet   href="doc.xsl"

+   type="text/xsl"   ?>

+

+<!DOCTYPE doc SYSTEM "doc.dtd">

+

+<doc>Hello, world!<!-- Comment 1 --></doc>

+

+<?pi-without-data     ?>

+

+<!-- Comment 2 -->

+

+<!-- Comment 3 -->

diff --git a/data/org/apache/xml/security/c14n/in/32_c14n.xml b/data/org/apache/xml/security/c14n/in/32_c14n.xml
new file mode 100644
index 0000000..2afa15c
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/32_c14n.xml
@@ -0,0 +1,11 @@
+<doc>
+   <clean>   </clean>
+   <dirty>   A   B   </dirty>
+   <mixed>
+      A
+      <clean>   </clean>
+      B
+      <dirty>   A   B   </dirty>
+      C
+   </mixed>
+</doc>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/32_input.xml b/data/org/apache/xml/security/c14n/in/32_input.xml
new file mode 100644
index 0000000..a9ee40b
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/32_input.xml
@@ -0,0 +1,11 @@
+<doc>

+   <clean>   </clean>

+   <dirty>   A   B   </dirty>

+   <mixed>

+      A

+      <clean>   </clean>

+      B

+      <dirty>   A   B   </dirty>

+      C

+   </mixed>

+</doc>

diff --git a/data/org/apache/xml/security/c14n/in/33_c14n.xml b/data/org/apache/xml/security/c14n/in/33_c14n.xml
new file mode 100644
index 0000000..8676861
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/33_c14n.xml
@@ -0,0 +1,14 @@
+<doc>
+   <e1></e1>
+   <e2></e2>
+   <e3 id="elem3" name="elem3"></e3>
+   <e4 id="elem4" name="elem4"></e4>
+   <e5 xmlns="http://example.org" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="I'm" attr2="all" b:attr="sorted" a:attr="out"></e5>
+   <e6 xmlns:a="http://www.w3.org">
+       <e7 xmlns="http://www.ietf.org">
+           <e8 xmlns="">
+               <e9 xmlns:a="http://www.ietf.org" attr="default"></e9>
+           </e8>
+       </e7>
+   </e6>
+</doc>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/33_input.xml b/data/org/apache/xml/security/c14n/in/33_input.xml
new file mode 100644
index 0000000..bef3d69
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/33_input.xml
@@ -0,0 +1,19 @@
+<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]>

+<doc>

+   <e1   />

+   <e2   ></e2>

+   <e3    name = "elem3"   id="elem3"    />

+   <e4    name="elem4"   id="elem4"    ></e4>

+   <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm"

+       xmlns:b="http://www.ietf.org"

+       xmlns:a="http://www.w3.org"

+       xmlns="http://example.org"/>

+   <e6 xmlns="" xmlns:a="http://www.w3.org">

+       <e7 xmlns="http://www.ietf.org">

+           <e8 xmlns="" xmlns:a="http://www.w3.org">

+               <e9 xmlns="" xmlns:a="http://www.ietf.org"/>

+           </e8>

+       </e7>

+   </e6>

+</doc>

+

diff --git a/data/org/apache/xml/security/c14n/in/34_c14n.xml b/data/org/apache/xml/security/c14n/in/34_c14n.xml
new file mode 100644
index 0000000..243d0e6
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/34_c14n.xml
@@ -0,0 +1,10 @@
+<doc>
+   <text>First line&#xD;
+Second line</text>
+   <value>2</value>
+   <compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>
+   <compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>
+   <norm attr=" '    &#xD;&#xA;&#x9;   ' "></norm>
+   <normNames attr="A &#xD;&#xA;&#x9; B"></normNames>
+   <normId id="' &#xD;&#xA;&#x9; '"></normId>
+</doc>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/34_c14n_validatingParser.xml b/data/org/apache/xml/security/c14n/in/34_c14n_validatingParser.xml
new file mode 100644
index 0000000..6419b51
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/34_c14n_validatingParser.xml
@@ -0,0 +1,9 @@
+<doc>
+   <text>First line&#xD;
+Second line</text>
+   <value>2</value>
+   <compute>value&gt;"0" &amp;&amp; value&lt;"10" ?"valid":"error"</compute>
+   <compute expr="value>&quot;0&quot; &amp;&amp; value&lt;&quot;10&quot; ?&quot;valid&quot;:&quot;error&quot;">valid</compute>
+   <norm attr=" '    &#xD;&#xA;&#x9;   ' "></norm>
+   <normNames attr="A &#xD;&#xA;&#x9; B"></normNames>
+</doc>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/34_input.xml b/data/org/apache/xml/security/c14n/in/34_input.xml
new file mode 100644
index 0000000..1b41b08
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/34_input.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE doc [

+<!ATTLIST normId id ID #IMPLIED>

+<!ATTLIST normNames attr NMTOKENS #IMPLIED>

+]>

+<doc>

+   <text>First line&#x0d;&#10;Second line</text>

+   <value>&#x32;</value>

+   <compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>

+   <compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>

+   <norm attr=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>

+   <normNames attr='   A   &#x20;&#13;&#xa;&#9;   B   '/>

+   <normId id=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>

+</doc>

+

diff --git a/data/org/apache/xml/security/c14n/in/34_input_validatingParser.xml b/data/org/apache/xml/security/c14n/in/34_input_validatingParser.xml
new file mode 100644
index 0000000..c58a979
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/34_input_validatingParser.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE doc [

+<!ATTLIST normId id ID #IMPLIED>

+<!ATTLIST normNames attr NMTOKENS #IMPLIED>

+]>

+<doc>

+   <text>First line&#x0d;&#10;Second line</text>

+   <value>&#x32;</value>

+   <compute><![CDATA[value>"0" && value<"10" ?"valid":"error"]]></compute>

+   <compute expr='value>"0" &amp;&amp; value&lt;"10" ?"valid":"error"'>valid</compute>

+   <norm attr=' &apos;   &#x20;&#13;&#xa;&#9;   &apos; '/>

+   <normNames attr='   A   &#x20;&#13;&#xa;&#9;   B   '/>

+</doc>

+

diff --git a/data/org/apache/xml/security/c14n/in/34_validatingParser.txt b/data/org/apache/xml/security/c14n/in/34_validatingParser.txt
new file mode 100644
index 0000000..6589ef2
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/34_validatingParser.txt
@@ -0,0 +1,5 @@
+http://www.w3.org/TR/2001/PR-xml-c14n-20010119

+

+states that:

+

+Note: The last element, normId, is well-formed but violates a validity constraint for attributes of type ID. For testing canonical XML implementations based on validating processors, remove the line containing this element from the input and canonical form. In general, XML consumers should be discouraged from using this feature of XML.
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/35_c14n.xml b/data/org/apache/xml/security/c14n/in/35_c14n.xml
new file mode 100644
index 0000000..c232e74
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/35_c14n.xml
@@ -0,0 +1,3 @@
+<doc attrExtEnt="entExt">
+   Hello, world!
+</doc>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/35_input.xml b/data/org/apache/xml/security/c14n/in/35_input.xml
new file mode 100644
index 0000000..dac71a1
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/35_input.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc [

+<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>

+<!ENTITY ent1 "Hello">

+<!ENTITY ent2 SYSTEM "world.txt">

+<!ENTITY entExt SYSTEM "earth.gif" NDATA gif>

+<!NOTATION gif SYSTEM "viewgif.exe">

+]>

+<doc attrExtEnt="entExt">

+   &ent1;, &ent2;!

+</doc>

+

+<!-- Let world.txt contain "world" (excluding the quotes) -->

diff --git a/data/org/apache/xml/security/c14n/in/36_c14n.xml b/data/org/apache/xml/security/c14n/in/36_c14n.xml
new file mode 100644
index 0000000..0be38f9
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/36_c14n.xml
@@ -0,0 +1 @@
+<doc>©</doc>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/36_input.xml b/data/org/apache/xml/security/c14n/in/36_input.xml
new file mode 100644
index 0000000..7e1b68d
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/36_input.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<doc>&#169;</doc>

diff --git a/data/org/apache/xml/security/c14n/in/37_c14n.xml b/data/org/apache/xml/security/c14n/in/37_c14n.xml
new file mode 100644
index 0000000..0a96cc4
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/37_c14n.xml
@@ -0,0 +1 @@
+<e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"><e3 xmlns="" id="E3" xml:space="preserve"></e3></e1>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/37_input.xml b/data/org/apache/xml/security/c14n/in/37_input.xml
new file mode 100644
index 0000000..ed20f12
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/37_input.xml
@@ -0,0 +1,11 @@
+<!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">

+   <e1>

+      <e2 xmlns="">

+         <e3 id="E3"/>

+      </e2>

+   </e1>

+</doc>

diff --git a/data/org/apache/xml/security/c14n/in/37_subset.xpath b/data/org/apache/xml/security/c14n/in/37_subset.xpath
new file mode 100644
index 0000000..19940a7
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/37_subset.xpath
@@ -0,0 +1,8 @@
+<!-- Evaluate with declaration xmlns:ietf="http://www.ietf.org" -->

+

+(//. | //@* | //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())

+]

diff --git a/data/org/apache/xml/security/c14n/in/doc.dtd b/data/org/apache/xml/security/c14n/in/doc.dtd
new file mode 100644
index 0000000..3523274
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/doc.dtd
@@ -0,0 +1 @@
+<!ELEMENT DOC (#PCDATA)>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/foo.xml b/data/org/apache/xml/security/c14n/in/foo.xml
new file mode 100644
index 0000000..82ffb3e
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/foo.xml
@@ -0,0 +1,4 @@
+<?xml-stylesheet href="doc.xsl"

+   type="text/xsl"   ?>

+<doc>Hello, world!</doc>

+<?pi-without-data?>

diff --git a/data/org/apache/xml/security/c14n/in/md5sum.txt b/data/org/apache/xml/security/c14n/in/md5sum.txt
new file mode 100644
index 0000000..01fbf75
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/md5sum.txt
@@ -0,0 +1,9 @@
+6970546b01f0c23cd72d3f129f2ec0f2 *31_c14n-comments.xml
+e57988b5e57b06858913472b56dc5af4 *31_c14n.xml
+58a1a346351e7b01a29f547fd17985f1 *32_c14n.xml
+a2d57aa4441bee658bb44cdc4f1a1f0e *33_c14n.xml
+99c99c9a4d8d03843d1326a62d2b106c *34_c14n.xml
+62b232d0bae09b6973266fa0bc14bffd *35_c14n.xml
+28485db5b2f33ab50cb63e14586f3b76 *36_c14n.xml
+9e9968d430274be0b054bf7d2b13512f *37_c14n.xml
+7d793037a0760186574b0282f2f435e7 *world.txt
diff --git a/data/org/apache/xml/security/c14n/in/testTranslationFromUTF16toUTF8.xml b/data/org/apache/xml/security/c14n/in/testTranslationFromUTF16toUTF8.xml
new file mode 100644
index 0000000..d432208
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/testTranslationFromUTF16toUTF8.xml
@@ -0,0 +1 @@
+<UTF16>The german &amp;auml (which is Unicode &amp;#xE4;):  "ä"</UTF16>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/in/world.txt b/data/org/apache/xml/security/c14n/in/world.txt
new file mode 100644
index 0000000..04fea06
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/in/world.txt
@@ -0,0 +1 @@
+world
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_1.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_1.xml
new file mode 100644
index 0000000..6e0e6c1
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_1.xml
@@ -0,0 +1,5 @@
+<n0:local xmlns:n0="foo:bar" xmlns:n3="ftp://example.org">

+<n1:elem2 xmlns:n1="http://example.net" xml:lang="en">

+<n3:stuff xmlns:n3="ftp://example.org"/>

+</n1:elem2>

+</n0:local>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_1_c14nized.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_1_c14nized.xml
new file mode 100644
index 0000000..92326b1
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_1_c14nized.xml
@@ -0,0 +1,3 @@
+<n1:elem2 xmlns:n0="foo:bar" xmlns:n1="http://example.net" xmlns:n3="ftp://example.org" xml:lang="en">
+<n3:stuff></n3:stuff>
+</n1:elem2>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_2.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_2.xml
new file mode 100644
index 0000000..221d0ed
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_2.xml
@@ -0,0 +1,5 @@
+<n2:pdu xmlns:n1="http://example.com" xmlns:n2="http://foo.example" xml:lang="fr" xml:space="retain">

+<n1:elem2 xmlns:n1="http://example.net" xml:lang="en">

+<n3:stuff xmlns:n3="ftp://example.org"/>

+</n1:elem2>

+</n2:pdu>

diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_2_c14nized.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_2_c14nized.xml
new file mode 100644
index 0000000..ea553b4
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_2_c14nized.xml
@@ -0,0 +1,3 @@
+<n1:elem2 xmlns:n1="http://example.net" xmlns:n2="http://foo.example" xml:lang="en" xml:space="retain">
+<n3:stuff xmlns:n3="ftp://example.org"></n3:stuff>
+</n1:elem2>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_3.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_3.xml
new file mode 100644
index 0000000..191205f
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_3.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<x:sample xmlns:x="http://www.x.com/sample/">
+  <?testpi 123?>
+  <section xml:lang="en">
+    <p style="indented" abc='xy"z'>
+      <x:verbatim xml:space="preserve">
+        <b xml:lang="fr">def
+          <i xml:space="reset">jkl</i>
+        </b>
+      </x:verbatim>
+    </p>
+  </section>
+</x:sample>
diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_3_c14nized_exclusive.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_3_c14nized_exclusive.xml
new file mode 100644
index 0000000..dcb380a
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_3_c14nized_exclusive.xml
@@ -0,0 +1,7 @@
+<p abc="xy&quot;z" style="indented">
+      <x:verbatim xmlns:x="http://www.x.com/sample/" xml:space="preserve">
+        <b xml:lang="fr">def
+          <i xml:space="reset">jkl</i>
+        </b>
+      </x:verbatim>
+    </p>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/c14n/inExcl/example2_2_c14nized_exclusive.xml b/data/org/apache/xml/security/c14n/inExcl/example2_2_c14nized_exclusive.xml
new file mode 100644
index 0000000..271d6f0
--- /dev/null
+++ b/data/org/apache/xml/security/c14n/inExcl/example2_2_c14nized_exclusive.xml
@@ -0,0 +1,3 @@
+<n1:elem2 xmlns:n1="http://example.net" xml:lang="en">
+<n3:stuff xmlns:n3="ftp://example.org"></n3:stuff>
+</n1:elem2>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/samples/input/UniLogoA.gif b/data/org/apache/xml/security/samples/input/UniLogoA.gif
new file mode 100644
index 0000000..a7ed2dc
--- /dev/null
+++ b/data/org/apache/xml/security/samples/input/UniLogoA.gif
Binary files differ
diff --git a/data/org/apache/xml/security/samples/input/file_cert b/data/org/apache/xml/security/samples/input/file_cert
new file mode 100644
index 0000000..361ba29
--- /dev/null
+++ b/data/org/apache/xml/security/samples/input/file_cert
Binary files differ
diff --git a/data/org/apache/xml/security/samples/input/genkey.bat b/data/org/apache/xml/security/samples/input/genkey.bat
new file mode 100755
index 0000000..af744d7
--- /dev/null
+++ b/data/org/apache/xml/security/samples/input/genkey.bat
@@ -0,0 +1 @@
+keytool -genkey -alias test -keyalg DSA -dname "CN=Christian Geuer-Pollmann, OU=FB12NUE, O=University of Siegen, C=DE" -keypass xmlsecurity -storepass xmlsecurity -keystore keystore.jks -validity 2000
diff --git a/data/org/apache/xml/security/samples/input/keystore.jks b/data/org/apache/xml/security/samples/input/keystore.jks
new file mode 100644
index 0000000..31a0214
--- /dev/null
+++ b/data/org/apache/xml/security/samples/input/keystore.jks
Binary files differ
diff --git a/data/org/apache/xml/security/samples/input/mykeystore b/data/org/apache/xml/security/samples/input/mykeystore
new file mode 100644
index 0000000..a881194
--- /dev/null
+++ b/data/org/apache/xml/security/samples/input/mykeystore
Binary files differ
diff --git a/data/org/apache/xml/security/temp/extension.xsl b/data/org/apache/xml/security/temp/extension.xsl
new file mode 100644
index 0000000..0c16e06
--- /dev/null
+++ b/data/org/apache/xml/security/temp/extension.xsl
@@ -0,0 +1,13 @@
+<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml"

+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

+	xmlns:pe="xalan://org.xmlsecurity.temp.TestProperties"

+	extension-element-prefixes="pe"

+	version="1.0">

+

+	<xsl:output indent="yes" omit-xml-declaration="yes"/>

+	<xsl:template match="/">

+		<pe:properties>

+		   <xsl:apply-templates />

+		</pe:properties>

+	</xsl:template>

+</xsl:stylesheet>

diff --git a/data/org/apache/xml/security/temp/id.xml b/data/org/apache/xml/security/temp/id.xml
new file mode 100644
index 0000000..544a243
--- /dev/null
+++ b/data/org/apache/xml/security/temp/id.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>

+

+<!DOCTYPE doc [

+<!ATTLIST e9 Id ID #IMPLIED>

+]>

+

+

+<doc>

+   <e9 Id="NO3"></e9>

+   <e9 Id="id2"></e9>

+</doc> 

diff --git a/data/org/apache/xml/security/temp/id2.xml b/data/org/apache/xml/security/temp/id2.xml
new file mode 100644
index 0000000..a27d4b3
--- /dev/null
+++ b/data/org/apache/xml/security/temp/id2.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>

+<!DOCTYPE doc [

+<!ATTLIST e9 Id ID #IMPLIED>

+]>

+<doc>

+   <!-- A comment -->

+   <e9 Id='N3'><!-- A comment -->Das N3 Element</e9>

+   <e9 Id='id2'><!-- A comment --> Das id2 Element</e9>

+</doc> 

diff --git a/data/org/apache/xml/security/temp/key/dsavalue.xml b/data/org/apache/xml/security/temp/key/dsavalue.xml
new file mode 100644
index 0000000..9fa8846
--- /dev/null
+++ b/data/org/apache/xml/security/temp/key/dsavalue.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<DSAKeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <P>
+    rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+    FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+    UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+  </P>
+  <Q>
+    kEjAFpCe4lcUOdwphpzf+tBaUds=
+  </Q>
+  <G>
+    oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+    SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+    BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+  </G>
+  <Y>
+    pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+    AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+    jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+  </Y>
+</DSAKeyValue>
diff --git a/data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key.xml b/data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key.xml
new file mode 100644
index 0000000..445e76a
--- /dev/null
+++ b/data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key.xml
@@ -0,0 +1 @@
+<X509Data xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Certificate></X509Certificate></X509Data>
\ No newline at end of file
diff --git a/data/org/apache/xml/security/temp/key/retrieval-from-same-doc.xml b/data/org/apache/xml/security/temp/key/retrieval-from-same-doc.xml
new file mode 100644
index 0000000..5139ece
--- /dev/null
+++ b/data/org/apache/xml/security/temp/key/retrieval-from-same-doc.xml
@@ -0,0 +1,60 @@
+<Document>

+  <KeyMaterials Id="thecert" xmlns="http://www.xmlsecurity.org/temp/mytempns">

+    <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">

+        <X509Certificate>

+            MIICwzCCAiygAwIBAgIGAOZ75QhHMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT

+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s

+            b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMRQwEgYDVQQDEwtYL1NlY3Vy

+            ZSBDQTAeFw0wMTA1MTUxMDA0NDVaFw0wMjA1MTUxMDA0MzdaMGkxCzAJBgNVBAYT

+            AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s

+            b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3JpZ3Uw

+            gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALT4FJkxu+bB5lOwYa+irIb7sJU7

+            9sRQbYYnfw35D7NQkig+Lvi2LXXoA6ABull2bF+gu+sgRzezzOs6VsTL8z57TIz2

+            48HaMInFjOiqSANmzQKlXv1PjXSxSyHRi/3xc8gMfmCxeSPCZ5VpUiQoJ5ZpWcDz

+            /LKvb0l9X0YBzMZlAgMBAAGjcTBvMA4GA1UdDwEB/wQEAwIHgDARBgNVHQ4ECgQI

+            hbis35lIcu8wNQYDVR0SBC4wLIYqaHR0cDovL3d3dy5iYWx0aW1vcmUuY29tL3By

+            b2R1Y3RzL3hzZWN1cmUvMBMGA1UdIwQMMAqACIXsHwqPfxrRMA0GCSqGSIb3DQEB

+            BQUAA4GBAGSBdPou5CWAiyS5/f46m00mIIqO3xl6ZXOc/DRblF4gWnesd2F5v/s6

+            lAbqK8+wJM6GxvpOkSp6O1q6hZRyzF86QPlXCfhKAXkgzHXtb6PfT2m9t0iawnjy

+            P+oyYofnFU5FFVOCujSrmFx3FCU+Wg6RT3v1jRoM3YfMYZYEzfTT

+        </X509Certificate>

+    </X509Data>

+  </KeyMaterials>

+  <KeyMaterials Id="hjdsbadcret" xmlns="http://www.xmlsecurity.org/temp/mytempns">

+    <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">

+        <X509Certificate>

+            This is no valid base64 encoded X509 Certificate so if the XPath

+               ancestor::my:KeyMaterials[@Id="hjdsbadcret"]

+            would have been used this wouldn't resolve to a valid key

+        </X509Certificate>

+    </X509Data>

+  </KeyMaterials>

+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">

+    <SignedInfo>

+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />

+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />

+      <Reference URI="http://www.w3.org/TR/xml-stylesheet">

+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

+        <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>

+      </Reference>

+    </SignedInfo>

+    <SignatureValue>

+      FnwsSCWT6REW/8QnOjv0BK+r3Ly/4aB++pNnZp9pnz8f7+j33eKSj1soyQLq5zmN

+      FwyeeQhnlTbR1kfve014ub9uHVC9A1cfmGZxQF1DC+enHt+AAPJaa278/ocgpMb5

+      Gibl4w7e3HAdBn/RJCrFJH77wY2oU5Ob0zIQtECVNJk=

+    </SignatureValue>

+    <KeyInfo>

+      <RetrievalMethod URI="" Type="http://www.w3.org/2000/09/xmldsig#X509Data">

+        <Transforms>

+          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">

+            <XPath xmlns:my="http://www.xmlsecurity.org/temp/mytempns" 

+                   xmlns:ds="http://www.w3.org/2000/09/xmldsig#">

+               ancestor::my:KeyMaterials[@Id="thecert"]

+            </XPath>

+          </Transform>

+        </Transforms>

+      </RetrievalMethod>

+    </KeyInfo>

+  </Signature>

+</Document>

+  
\ No newline at end of file
diff --git a/data/org/apache/xml/security/temp/key/signature-retrievalmethod-dsavalue.xml b/data/org/apache/xml/security/temp/key/signature-retrievalmethod-dsavalue.xml
new file mode 100644
index 0000000..e24575c
--- /dev/null
+++ b/data/org/apache/xml/security/temp/key/signature-retrievalmethod-dsavalue.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    Fj9OwSxpJppDnihohduxEUqu9/p6TR9PpgNGapaiBHGcY2QUDBaOEw==
+  </SignatureValue>
+  <KeyInfo>
+    <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#DSAKeyValue" URI="dsavalue.xml" />
+  </KeyInfo>
+</Signature>
diff --git a/data/org/apache/xml/security/temp/key/signature-retrievalmethod-x509data.xml b/data/org/apache/xml/security/temp/key/signature-retrievalmethod-x509data.xml
new file mode 100644
index 0000000..e00bd86
--- /dev/null
+++ b/data/org/apache/xml/security/temp/key/signature-retrievalmethod-x509data.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+    <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>
+    ZrROxIcOSBvt5z2krEhQGSVIo4oAwTJwGAoFiWucvvEtY9k0L2R5RVHBnHCzk5GT
+    kHGaT8SUqtnDeiH6W/2FNfciiV/w1pxURvNcyW8cYCn1B5XF68vILXUaptWf0DKw
+    DvCFS+uLh0ACuEUfpe1Dx1fwB85lpK2iQcpx9dPaC4M=
+  </SignatureValue>
+  <KeyInfo>
+    <!--
+    <X509Data>
+      <X509Certificate>
+        MIICwzCCAiygAwIBAgIGAOZ75QhHMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMRQwEgYDVQQDEwtYL1NlY3Vy
+        ZSBDQTAeFw0wMTA1MTUxMDA0NDVaFw0wMjA1MTUxMDA0MzdaMGkxCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3JpZ3Uw
+        gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALT4FJkxu+bB5lOwYa+irIb7sJU7
+        9sRQbYYnfw35D7NQkig+Lvi2LXXoA6ABull2bF+gu+sgRzezzOs6VsTL8z57TIz2
+        48HaMInFjOiqSANmzQKlXv1PjXSxSyHRi/3xc8gMfmCxeSPCZ5VpUiQoJ5ZpWcDz
+        /LKvb0l9X0YBzMZlAgMBAAGjcTBvMA4GA1UdDwEB/wQEAwIHgDARBgNVHQ4ECgQI
+        hbis35lIcu8wNQYDVR0SBC4wLIYqaHR0cDovL3d3dy5iYWx0aW1vcmUuY29tL3By
+        b2R1Y3RzL3hzZWN1cmUvMBMGA1UdIwQMMAqACIXsHwqPfxrRMA0GCSqGSIb3DQEB
+        BQUAA4GBAGSBdPou5CWAiyS5/f46m00mIIqO3xl6ZXOc/DRblF4gWnesd2F5v/s6
+        lAbqK8+wJM6GxvpOkSp6O1q6hZRyzF86QPlXCfhKAXkgzHXtb6PfT2m9t0iawnjy
+        P+oyYofnFU5FFVOCujSrmFx3FCU+Wg6RT3v1jRoM3YfMYZYEzfTT
+      </X509Certificate>
+    </X509Data>
+    -->
+    <RetrievalMethod URI="./x509data.xml" />
+    <!-- Type="http://www.w3.org/2000/09/xmldsig#X509Data"  -->
+  </KeyInfo>
+</Signature>
diff --git a/data/org/apache/xml/security/temp/key/x509data.xml b/data/org/apache/xml/security/temp/key/x509data.xml
new file mode 100644
index 0000000..2a73f15
--- /dev/null
+++ b/data/org/apache/xml/security/temp/key/x509data.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <X509Certificate>
+        MIICwzCCAiygAwIBAgIGAOZ75QhHMA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMRQwEgYDVQQDEwtYL1NlY3Vy
+        ZSBDQTAeFw0wMTA1MTUxMDA0NDVaFw0wMjA1MTUxMDA0MzdaMGkxCzAJBgNVBAYT
+        AklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9s
+        b2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3JpZ3Uw
+        gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALT4FJkxu+bB5lOwYa+irIb7sJU7
+        9sRQbYYnfw35D7NQkig+Lvi2LXXoA6ABull2bF+gu+sgRzezzOs6VsTL8z57TIz2
+        48HaMInFjOiqSANmzQKlXv1PjXSxSyHRi/3xc8gMfmCxeSPCZ5VpUiQoJ5ZpWcDz
+        /LKvb0l9X0YBzMZlAgMBAAGjcTBvMA4GA1UdDwEB/wQEAwIHgDARBgNVHQ4ECgQI
+        hbis35lIcu8wNQYDVR0SBC4wLIYqaHR0cDovL3d3dy5iYWx0aW1vcmUuY29tL3By
+        b2R1Y3RzL3hzZWN1cmUvMBMGA1UdIwQMMAqACIXsHwqPfxrRMA0GCSqGSIb3DQEB
+        BQUAA4GBAGSBdPou5CWAiyS5/f46m00mIIqO3xl6ZXOc/DRblF4gWnesd2F5v/s6
+        lAbqK8+wJM6GxvpOkSp6O1q6hZRyzF86QPlXCfhKAXkgzHXtb6PfT2m9t0iawnjy
+        P+oyYofnFU5FFVOCujSrmFx3FCU+Wg6RT3v1jRoM3YfMYZYEzfTT
+    </X509Certificate>
+</X509Data>
diff --git a/data/org/apache/xml/security/temp/nuehomepage b/data/org/apache/xml/security/temp/nuehomepage
new file mode 100644
index 0000000..0cce7df
--- /dev/null
+++ b/data/org/apache/xml/security/temp/nuehomepage
@@ -0,0 +1,29 @@
+<HTML>

+<HEAD>

+	<!-- Style sheet added (21.09.99)-->

+	<link rel="stylesheet" type="text/css" href="NUE_Style.css">

+<!-- Last modification: 10.11.98 by Niko Schweitzer -->

+	<META Name="description" Content="Institut fuer Nachrichtenuebermittlung, UNI-Siegen">

+   <META Name="keywords" Content="UNI,Siegen,Institut,Nachrichtenübermittlung,Institute,Data,Communications,Security,Sicherheit,Kryptographie,Cryptography,Digitale,Mobilfunksysteme,Digital,Communication,Information,ATM,GSM,PDH,SDH,PKI,Access,Rights,Profile,Certificate,Management">

+   <META NAME="Content-Language" CONTENT="de"> 

+

+<!------------------------------------------------------------------>

+<title>Home-Page des Instituts fuer Nachrichtenuebermittlung</title>

+<!------------------------------------------------------------------>

+

+

+<FRAMESET COLS="170,*" BORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0 FRAMESPACING=0>

+	<FRAME NAME="contents_frame" SRC="contents.html" SCROLLING="Auto" BORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 FRAMEBORDER=0 FRAMESPACING=0>

+	<FRAMESET ><!--ROWS="80,*"> -->

+		<!-- <frame name="header_frame" src="header.html" scrolling="No" FRAMEBORDER="No"> -->

+		<frame name="main_frame" src="start.html" scrolling="Auto" FRAMEBORDER="No">

+	</FRAMESET>

+</FRAMESET>

+

+

+</HEAD>

+

+<BODY> 

+

+</BODY>

+</HTML>
\ No newline at end of file
diff --git a/data/org/w3c/www/TR/2000/REC-xml-20001006 b/data/org/w3c/www/TR/2000/REC-xml-20001006
new file mode 100644
index 0000000..cc363b0
--- /dev/null
+++ b/data/org/w3c/www/TR/2000/REC-xml-20001006
@@ -0,0 +1,3156 @@
+<?xml version="1.0" encoding="iso-8859-1"?>

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<!--ArborText, Inc., 1988-2000, v.4002-->

+<html lang="EN">

+<head>

+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

+<title>Extensible Markup Language (XML) 1.0 (Second Edition)</title>

+<link href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css"

+rel="stylesheet"/>

+<style type="text/css"> code           { font-family: monospace; }  div.constraint,

+div.issue, div.note, div.notice     { margin-left: 2em; }  dt.label      

+{ display: run-in; }  li p           { margin-top: 0.3em;                

+ margin-bottom: 0.3em; } </style>

+</head>

+<body>  <div class="head"><p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home"

+alt="W3C" height="48" width="72"/></a></p><h1>Extensible Markup Language (XML)

+1.0 (Second Edition)</h1>

+<h2>W3C Recommendation 6 October 2000</h2><dl>

+<dt>This version:</dt>

+<dd><a href="http://www.w3.org/TR/2000/REC-xml-20001006">http://www.w3.org/TR/2000/REC-xml-20001006</a>

+(<a href="http://www.w3.org/TR/2000/REC-xml-20001006.html">XHTML</a>, <a href="http://www.w3.org/TR/2000/REC-xml-20001006.xml">XML</a>, <a

+href="http://www.w3.org/TR/2000/REC-xml-20001006.pdf">PDF</a>, <a href="http://www.w3.org/TR/2000/REC-xml-20001006-review.html">XHTML

+review version</a> with color-coded revision indicators)</dd>

+<dt>Latest version:</dt>

+<dd><a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></dd>

+<dt>Previous versions:</dt>

+<dd><a href="http://www.w3.org/TR/2000/WD-xml-2e-20000814"> http://www.w3.org/TR/2000/WD-xml-2e-20000814</a> </dd>

+<dd><a href="http://www.w3.org/TR/1998/REC-xml-19980210"> http://www.w3.org/TR/1998/REC-xml-19980210</a> </dd>

+<dt>Editors:</dt>

+<dd>Tim Bray, Textuality and Netscape  <a href="mailto:tbray@textuality.com">&lt;tbray@textuality.com></a></dd>

+<dd>Jean Paoli, Microsoft  <a href="mailto:jeanpa@microsoft.com">&lt;jeanpa@microsoft.com></a></dd>

+<dd>C. M. Sperberg-McQueen, University of Illinois at Chicago and Text Encoding

+Initiative <a href="mailto:cmsmcq@uic.edu">&lt;cmsmcq@uic.edu></a> </dd>

+<dd>Eve Maler, Sun Microsystems, Inc. <a href="mailto:elm@east.sun.com">&lt;eve.maler@east.sun.com></a>

+ - Second Edition</dd>

+</dl><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>&nbsp;&copy;&nbsp;2000&nbsp;<a

+href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>&reg;</sup>

+(<a href="http://www.lcs.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a

+href="http://www.inria.fr/"><abbr title="Institut National de Recherche en Informatique et Automatique"

+lang="fr">INRIA</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All

+Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a

+href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>, <a

+href="http://www.w3.org/Consortium/Legal/copyright-documents-19990405">document

+use</a>, and <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">software

+licensing</a> rules apply.</p></div><hr class="html_compat"/><div><h2><a

+name="abstract">Abstract</a></h2> <p>The Extensible Markup Language (XML)

+is a subset of SGML that is completely described in this document. Its goal

+is to enable generic SGML to be served, received, and processed on the Web

+in the way that is now possible with HTML. XML has been designed for ease

+of implementation and for interoperability with both SGML and HTML.</p> </div><div>

+<h2><a name="status">Status of this Document</a></h2> <p>This

+document has been reviewed by W3C Members and other interested parties and

+has been endorsed by the Director as a W3C Recommendation. It is a stable

+document and may be used as reference material or cited as a normative reference

+from another document. W3C's role in making the Recommendation is to draw

+attention to the specification and to promote its widespread deployment. This

+enhances the functionality and interoperability of the Web.</p> <p>This document

+specifies a syntax created by subsetting an existing, widely used international

+text processing standard (Standard Generalized Markup Language, ISO 8879:1986(E)

+as amended and corrected) for use on the World Wide Web. It is a product of

+the W3C XML Activity, details of which can be found at <a href="http://www.w3.org/XML/">http://www.w3.org/XML</a>.

+ The English version of this specification is the only normative version.

+However, for translations of this document, see <a href="http://www.w3.org/XML/#trans">http://www.w3.org/XML/#trans</a>.

+A list of current W3C Recommendations and other technical documents can be

+found at <a href="http://www.w3.org/TR/">http://www.w3.org/TR</a>.</p>  <p>This

+second edition is <em>not</em> a new version of XML (first published 10 February 1998); it merely incorporates

+the changes dictated by the first-edition errata (available at <a href="http://www.w3.org/XML/xml-19980210-errata">http://www.w3.org/XML/xml-19980210-errata</a

+>) as a convenience to readers. The errata list for this second edition is

+available at <a href="http://www.w3.org/XML/xml-V10-2e-errata">http://www.w3.org/XML/xml-V10-2e-errata</a>.</p> <p>Please

+report errors in this document to <a href="mailto:xml-editor@w3.org">xml-editor@w3.org</a>; <a

+href="http://lists.w3.org/Archives/Public/xml-editor">archives</a> are available.</p> <div

+class="note"><p class="prefix"><b>Note:</b></p> <p>C. M. Sperberg-McQueen's

+affiliation has changed since the publication of the first edition. He is

+now at the World Wide Web Consortium, and can be contacted at <a href="mailto:cmsmcq@w3.org">cmsmcq@w3.org</a>.</p> </div> </div> <div

+class="toc"><h2><a name="contents">Table of Contents</a></h2><p class="toc">1 <a

+href="#sec-intro">Introduction</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;1.1 <a

+href="#sec-origin-goals">Origin and Goals</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;1.2 <a

+href="#sec-terminology">Terminology</a><br class="html_compat"/>2 <a href="#sec-documents">Documents</a><br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.1 <a href="#sec-well-formed">Well-Formed

+XML Documents</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.2 <a href="#charsets">Characters</a><br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.3 <a href="#sec-common-syn">Common

+Syntactic Constructs</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.4 <a

+href="#syntax">Character Data and Markup</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.5 <a

+href="#sec-comments">Comments</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.6 <a

+href="#sec-pi">Processing Instructions</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.7 <a

+href="#sec-cdata-sect">CDATA Sections</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.8 <a

+href="#sec-prolog-dtd">Prolog and Document Type Declaration</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.9 <a

+href="#sec-rmd">Standalone Document Declaration</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.10 <a

+href="#sec-white-space">White Space Handling</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.11 <a

+href="#sec-line-ends">End-of-Line Handling</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;2.12 <a

+href="#sec-lang-tag">Language Identification</a><br class="html_compat"/>3 <a

+href="#sec-logical-struct">Logical Structures</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;3.1 <a

+href="#sec-starttags">Start-Tags, End-Tags, and Empty-Element Tags</a><br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;3.2 <a href="#elemdecls">Element

+Type Declarations</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2.1 <a

+href="#sec-element-content">Element Content</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2.2 <a

+href="#sec-mixed-content">Mixed Content</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;3.3 <a

+href="#attdecls">Attribute-List Declarations</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3.1 <a

+href="#sec-attribute-types">Attribute Types</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3.2 <a

+href="#sec-attr-defaults">Attribute Defaults</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3.3 <a

+href="#AVNormalize">Attribute-Value Normalization</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;3.4 <a

+href="#sec-condition-sect">Conditional Sections</a><br class="html_compat"/>4 <a

+href="#sec-physical-struct">Physical Structures</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.1 <a

+href="#sec-references">Character and Entity References</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.2 <a

+href="#sec-entity-decl">Entity Declarations</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.2.1 <a

+href="#sec-internal-ent">Internal Entities</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.2.2 <a

+href="#sec-external-ent">External Entities</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.3 <a

+href="#TextEntities">Parsed Entities</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3.1 <a

+href="#sec-TextDecl">The Text Declaration</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3.2 <a

+href="#wf-entities">Well-Formed Parsed Entities</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3.3 <a

+href="#charencoding">Character Encoding in Entities</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.4 <a

+href="#entproc">XML Processor Treatment of Entities and References</a><br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.1 <a

+href="#not-recognized">Not Recognized</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.2 <a

+href="#included">Included</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.3 <a

+href="#include-if-valid">Included If Validating</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.4 <a

+href="#forbidden">Forbidden</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.5 <a

+href="#inliteral">Included in Literal</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.6 <a

+href="#notify">Notify</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.7 <a

+href="#bypass">Bypassed</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.8 <a

+href="#as-PE">Included as PE</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.5 <a

+href="#intern-replacement">Construction of Internal Entity Replacement Text</a><br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.6 <a href="#sec-predefined-ent">Predefined

+Entities</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.7 <a href="#Notations">Notation

+Declarations</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;4.8 <a href="#sec-doc-entity">Document

+Entity</a><br class="html_compat"/>5 <a href="#sec-conformance">Conformance</a><br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;5.1 <a href="#proc-types">Validating

+and Non-Validating Processors</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;5.2 <a

+href="#safe-behavior">Using XML Processors</a><br class="html_compat"/>6 <a

+href="#sec-notation">Notation</a><br class="html_compat"/></p><h3>Appendices</h3><p

+class="toc">A <a href="#sec-bibliography">References</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;A.1 <a

+href="#sec-existing-stds">Normative References</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;A.2 <a

+href="#null">Other References</a><br class="html_compat"/>B <a href="#CharClasses">Character

+Classes</a><br class="html_compat"/>C <a href="#sec-xml-and-sgml">XML and

+SGML</a> (Non-Normative)<br class="html_compat"/>D <a href="#sec-entexpand">Expansion

+of Entity and Character References</a> (Non-Normative)<br class="html_compat"/>E <a

+href="#determinism">Deterministic Content Models</a> (Non-Normative)<br class="html_compat"/>F <a

+href="#sec-guessing">Autodetection of Character Encodings</a> (Non-Normative)<br

+class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;F.1 <a href="#sec-guessing-no-ext-info">Detection

+Without External Encoding Information</a><br class="html_compat"/>&nbsp;&nbsp;&nbsp;&nbsp;F.2 <a

+href="#sec-guessing-with-ext-info">Priorities in the Presence of External

+Encoding Information</a><br class="html_compat"/>G <a href="#sec-xml-wg">W3C

+XML Working Group</a> (Non-Normative)<br class="html_compat"/>H <a href="#sec-core-wg">W3C

+XML Core Group</a> (Non-Normative)<br class="html_compat"/>I <a href="#b4d250b6c21">Production

+Notes</a> (Non-Normative)<br class="html_compat"/></p></div><hr class="html_compat"/><div

+class="body"> <div class="div1"> <h2><a name="sec-intro"></a>1 Introduction</h2> <p>Extensible

+Markup Language, abbreviated XML, describes a class of data objects called <a

+title="XML Document" href="#dt-xml-doc">XML documents</a> and partially describes

+the behavior of computer programs which process them. XML is an application

+profile or restricted form of SGML, the Standard Generalized Markup Language <a

+href="#ISO8879">[ISO 8879]</a>. By construction, XML documents are conforming

+SGML documents.</p> <p>XML documents are made up of storage units called <a

+title="Entity" href="#dt-entity">entities</a>, which contain either parsed

+or unparsed data. Parsed data is made up of <a title="Character" href="#dt-character">characters</a>,

+some of which form <a title="Character Data" href="#dt-chardata">character

+data</a>, and some of which form <a title="Markup" href="#dt-markup">markup</a>.

+Markup encodes a description of the document's storage layout and logical

+structure. XML provides a mechanism to impose constraints on the storage layout

+and logical structure.</p> <p>[<a title="XML Processor" name="dt-xml-proc">Definition</a>:

+A software module called an <b>XML processor</b> is used to read XML documents

+and provide access to their content and structure.] [<a title="Application"

+name="dt-app">Definition</a>: It is assumed that an XML processor is doing

+its work on behalf of another module, called the <b>application</b>.] This

+specification describes the required behavior of an XML processor in terms

+of how it must read XML data and the information it must provide to the application.</p> <div

+class="div2"> <h3><a name="sec-origin-goals"></a>1.1 Origin and Goals</h3> <p>XML

+was developed by an XML Working Group (originally known as the SGML Editorial

+Review Board) formed under the auspices of the World Wide Web Consortium (W3C)

+in 1996. It was chaired by Jon Bosak of Sun Microsystems with the active participation

+of an XML Special Interest Group (previously known as the SGML Working Group)

+also organized by the W3C. The membership of the XML Working Group is given

+in an appendix. Dan Connolly served as the WG's contact with the W3C.</p> <p>The

+design goals for XML are:</p> <ol>

+<li><p>XML shall be straightforwardly usable over the Internet.</p></li>

+<li><p>XML shall support a wide variety of applications.</p></li>

+<li><p>XML shall be compatible with SGML.</p></li>

+<li><p>It shall be easy to write programs which process XML documents.</p> </li>

+<li><p>The number of optional features in XML is to be kept to the absolute

+minimum, ideally zero.</p></li>

+<li><p>XML documents should be human-legible and reasonably clear.</p></li>

+<li><p>The XML design should be prepared quickly.</p></li>

+<li><p>The design of XML shall be formal and concise.</p></li>

+<li><p>XML documents shall be easy to create.</p></li>

+<li><p>Terseness in XML markup is of minimal importance.</p></li>

+</ol> <p>This specification, together with associated standards (Unicode and

+ISO/IEC 10646 for characters, Internet RFC 1766 for language identification

+tags, ISO 639 for language name codes, and ISO 3166 for country name codes),

+provides all the information necessary to understand XML Version 1.0 and construct

+computer programs to process it.</p> <p>This version of the XML specification

+ may be distributed freely, as long as all text and legal notices remain intact.</p> </div> <div

+class="div2"> <h3><a name="sec-terminology"></a>1.2 Terminology</h3> <p>The

+terminology used to describe XML documents is defined in the body of this

+specification. The terms defined in the following list are used in building

+those definitions and in describing the actions of an XML processor: </p><dl>

+<dt class="label">may</dt>

+<dd> <p>[<a title="May" name="dt-may">Definition</a>: Conforming documents

+and XML processors are permitted to but need not behave as described.]</p> </dd>

+<dt class="label">must</dt>

+<dd> <p>[<a title="Must" name="dt-must">Definition</a>: Conforming documents

+and XML processors are required to behave as described; otherwise they are

+in error. ]</p> </dd>

+<dt class="label">error</dt>

+<dd> <p>[<a title="Error" name="dt-error">Definition</a>: A violation of the

+rules of this specification; results are undefined. Conforming software may

+detect and report an error and may recover from it.]</p> </dd>

+<dt class="label">fatal error</dt>

+<dd> <p>[<a title="Fatal Error" name="dt-fatal">Definition</a>: An error which

+a conforming <a title="XML Processor" href="#dt-xml-proc">XML processor</a>

+must detect and report to the application. After encountering a fatal error,

+the processor may continue processing the data to search for further errors

+and may report such errors to the application. In order to support correction

+of errors, the processor may make unprocessed data from the document (with

+intermingled character data and markup) available to the application. Once

+a fatal error is detected, however, the processor must not continue normal

+processing (i.e., it must not continue to pass character data and information

+about the document's logical structure to the application in the normal way).]</p> </dd>

+<dt class="label">at user option</dt>

+<dd> <p>[<a title="At user option" name="dt-atuseroption">Definition</a>:

+Conforming software may or must (depending on the modal verb in the sentence)

+behave as described; if it does, it must provide users a means to enable or

+disable the behavior described.]</p> </dd>

+<dt class="label">validity constraint</dt>

+<dd> <p>[<a title="Validity constraint" name="dt-vc">Definition</a>: A rule

+which applies to all <a title="Validity" href="#dt-valid">valid</a> XML documents.

+Violations of validity constraints are errors; they must, at user option,

+be reported by <a title="Validating Processor" href="#dt-validating">validating

+XML processors</a>.]</p> </dd>

+<dt class="label">well-formedness constraint</dt>

+<dd> <p>[<a title="Well-formedness constraint" name="dt-wfc">Definition</a>:

+A rule which applies to all <a title="Well-Formed" href="#dt-wellformed">well-formed</a>

+XML documents. Violations of well-formedness constraints are <a title="Fatal Error"

+href="#dt-fatal">fatal errors</a>.]</p> </dd>

+<dt class="label">match</dt>

+<dd> <p>[<a title="match" name="dt-match">Definition</a>: (Of strings or names:)

+Two strings or names being compared must be identical. Characters with multiple

+possible representations in ISO/IEC 10646 (e.g. characters with both precomposed

+and base+diacritic forms) match only if they have the same representation

+in both strings. No case folding is performed. (Of strings and rules in the

+grammar:) A string matches a grammatical production if it belongs to the language

+generated by that production. (Of content and content models:) An element

+matches its declaration when it conforms in the fashion described in the constraint <a

+href="#elementvalid"><b>[VC: Element Valid]</b></a>.]</p> </dd>

+<dt class="label">for compatibility</dt>

+<dd> <p>[<a title="For Compatibility" name="dt-compat">Definition</a>: Marks

+a sentence describing a feature of XML included solely to ensure that XML

+remains compatible with SGML.]</p> </dd>

+<dt class="label">for interoperability</dt>

+<dd> <p>[<a title="For interoperability" name="dt-interop">Definition</a>:

+Marks a sentence describing a non-binding recommendation included to increase

+the chances that XML documents can be processed by the existing installed

+base of SGML processors which predate the WebSGML Adaptations Annex to ISO

+8879.]</p> </dd>

+</dl><p></p> </div> </div>  <div class="div1"> <h2><a name="sec-documents"></a>2

+Documents</h2> <p>[<a title="XML Document" name="dt-xml-doc">Definition</a>:

+ A data object is an <b>XML document</b> if it is <a title="Well-Formed" href="#dt-wellformed">well-formed</a>,

+as defined in this specification. A well-formed XML document may in addition

+be <a title="Validity" href="#dt-valid">valid</a> if it meets certain further

+constraints.]</p> <p>Each XML document has both a logical and a physical structure.

+Physically, the document is composed of units called <a title="Entity" href="#dt-entity">entities</a>.

+An entity may <a title="Entity Reference" href="#dt-entref">refer</a> to other

+entities to cause their inclusion in the document. A document begins in a

+"root" or <a title="Document Entity" href="#dt-docent">document entity</a>.

+Logically, the document is composed of declarations, elements, comments, character

+references, and processing instructions, all of which are indicated in the

+document by explicit markup. The logical and physical structures must nest

+properly, as described in <a href="#wf-entities"><b>4.3.2 Well-Formed Parsed

+Entities</b></a>.</p> <div class="div2"> <h3><a name="sec-well-formed"></a>2.1

+Well-Formed XML Documents</h3> <p>[<a title="Well-Formed" name="dt-wellformed">Definition</a>:

+ A textual object is a <b>well-formed</b> XML document if:]</p> <ol>

+<li><p>Taken as a whole, it matches the production labeled <a href="#NT-document">document</a>.</p> </li>

+<li><p>It meets all the well-formedness constraints given in this specification.</p> </li>

+<li><p>Each of the <a title="Text Entity" href="#dt-parsedent">parsed entities</a>

+which is referenced directly or indirectly within the document is <a title="Well-Formed"

+href="#dt-wellformed">well-formed</a>.</p></li>

+</ol> <h5>Document</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-document"></a>[1]&nbsp;&nbsp;&nbsp;</td>

+<td><code>document</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-prolog">prolog</a> <a href="#NT-element">element</a> <a

+href="#NT-Misc">Misc</a>*</code></td>

+</tr>

+</tbody></table> <p>Matching the <a href="#NT-document">document</a> production

+implies that:</p> <ol>

+<li><p>It contains one or more <a title="Element" href="#dt-element">elements</a>.</p> </li>

+<li><p>[<a title="Root Element" name="dt-root">Definition</a>: There is exactly

+one element, called the <b>root</b>, or document element, no part of which

+appears in the <a title="Content" href="#dt-content">content</a> of any other

+element.] For all other elements, if the <a title="Start-Tag" href="#dt-stag">start-tag</a>

+is in the content of another element, the <a title="End Tag" href="#dt-etag">end-tag</a>

+is in the content of the same element. More simply stated, the elements, delimited

+by start- and end-tags, nest properly within each other.</p></li>

+</ol> <p>[<a title="Parent/Child" name="dt-parentchild">Definition</a>: As

+a consequence of this, for each non-root element <code>C</code> in the document,

+there is one other element <code>P</code> in the document such that <code>C</code>

+is in the content of <code>P</code>, but is not in the content of any other

+element that is in the content of <code>P</code>. <code>P</code> is referred

+to as the <b>parent</b> of <code>C</code>, and <code>C</code> as a <b>child</b>

+of <code>P</code>.]</p> </div> <div class="div2"> <h3><a name="charsets"></a>2.2

+Characters</h3> <p>[<a title="Text" name="dt-text">Definition</a>: A parsed

+entity contains <b>text</b>, a sequence of <a title="Character" href="#dt-character">characters</a>,

+which may represent markup or character data.] [<a title="Character" name="dt-character">Definition</a>:

+A <b>character</b> is an atomic unit of text as specified by ISO/IEC 10646 <a

+href="#ISO10646">[ISO/IEC 10646]</a> (see also <a href="#ISO10646-2000">[ISO/IEC

+10646-2000]</a>). Legal characters are tab, carriage return, line feed, and

+the legal characters of Unicode and ISO/IEC 10646. The versions of these standards

+cited in <a href="#sec-existing-stds"><b>A.1 Normative References</b></a>

+were current at the time this document was prepared. New characters may be

+added to these standards by amendments or new editions. Consequently, XML

+processors must accept any character in the range specified for <a href="#NT-Char">Char</a>.

+The use of "compatibility characters", as defined in section 6.8 of <a href="#Unicode">[Unicode]</a>

+(see also D21 in section 3.6 of <a href="#Unicode3">[Unicode3]</a>), is discouraged.]</p> <h5>Character

+Range</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-Char"></a>[2]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Char</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]</code></td>

+<td><i>/* any Unicode character, excluding the surrogate blocks, FFFE, and

+FFFF. */</i></td>

+</tr>

+</tbody></table> <p>The mechanism for encoding character code points into

+bit patterns may vary from entity to entity. All XML processors must accept

+the UTF-8 and UTF-16 encodings of 10646; the mechanisms for signaling which

+of the two is in use, or for bringing other encodings into play, are discussed

+later, in <a href="#charencoding"><b>4.3.3 Character Encoding in Entities</b></a>.</p>

+ </div> <div class="div2"> <h3><a name="sec-common-syn"></a>2.3 Common Syntactic

+Constructs</h3> <p>This section defines some symbols used widely in the grammar.</p> <p><a

+href="#NT-S">S</a> (white space) consists of one or more space (#x20) characters,

+carriage returns, line feeds, or tabs.</p> <h5>White Space</h5><table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td><a name="NT-S"></a>[3]&nbsp;&nbsp;&nbsp;</td>

+<td><code>S</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>(#x20 | #x9 | #xD | #xA)+</code></td>

+</tr>

+</tbody></table> <p>Characters are classified for convenience as letters,

+digits, or other characters. A letter consists of an alphabetic or syllabic

+base character or an ideographic character. Full definitions of the specific

+characters in each class are given in <a href="#CharClasses"><b>B Character

+Classes</b></a>.</p> <p>[<a title="Name" name="dt-name">Definition</a>: A <b>Name</b>

+is a token beginning with a letter or one of a few punctuation characters,

+and continuing with letters, digits, hyphens, underscores, colons, or full

+stops, together known as name characters.] Names beginning with the string

+"<code>xml</code>", or any string which would match <code>(('X'|'x') ('M'|'m')

+('L'|'l'))</code>, are reserved for standardization in this or future versions

+of this specification.</p> <div class="note"><p class="prefix"><b>Note:</b></p> <p>The

+Namespaces in XML Recommendation <a href="#xml-names">[XML Names]</a> assigns

+a meaning to names containing colon characters. Therefore, authors should

+not use the colon in XML names except for namespace purposes, but XML processors

+must accept the colon as a name character.</p> </div> <p>An <a href="#NT-Nmtoken">Nmtoken</a>

+(name token) is any mixture of name characters.</p> <h5>Names and Tokens</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-NameChar"></a>[4]&nbsp;&nbsp;&nbsp;</td>

+<td><code>NameChar</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Letter">Letter</a> | <a href="#NT-Digit">Digit</a>

+| '.' | '-' | '_' | ':' | <a href="#NT-CombiningChar">CombiningChar</a> | <a

+href="#NT-Extender">Extender</a></code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-Name"></a>[5]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Name</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>(<a href="#NT-Letter">Letter</a> | '_' | ':') (<a href="#NT-NameChar">NameChar</a>)*</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-Names"></a>[6]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Names</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Name">Name</a> (<a href="#NT-S">S</a> <a href="#NT-Name">Name</a>)*</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-Nmtoken"></a>[7]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Nmtoken</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>(<a href="#NT-NameChar">NameChar</a>)+</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-Nmtokens"></a>[8]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Nmtokens</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Nmtoken">Nmtoken</a> (<a href="#NT-S">S</a> <a href="#NT-Nmtoken">Nmtoken</a>)*</code></td>

+</tr>

+</tbody></table> <p>Literal data is any quoted string not containing the quotation

+mark used as a delimiter for that string. Literals are used for specifying

+the content of internal entities (<a href="#NT-EntityValue">EntityValue</a>),

+the values of attributes (<a href="#NT-AttValue">AttValue</a>), and external

+identifiers (<a href="#NT-SystemLiteral">SystemLiteral</a>). Note that a <a

+href="#NT-SystemLiteral">SystemLiteral</a> can be parsed without scanning

+for markup.</p> <h5>Literals</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-EntityValue"></a>[9]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EntityValue</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'"' ([^%&amp;"] | <a href="#NT-PEReference">PEReference</a> | <a

+href="#NT-Reference">Reference</a>)* '"' </code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>|&nbsp; "'" ([^%&amp;'] | <a href="#NT-PEReference">PEReference</a>

+| <a href="#NT-Reference">Reference</a>)* "'"</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-AttValue"></a>[10]&nbsp;&nbsp;&nbsp;</td>

+<td><code>AttValue</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'"' ([^&lt;&amp;"] | <a href="#NT-Reference">Reference</a>)* '"' </code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>|&nbsp; "'" ([^&lt;&amp;'] | <a href="#NT-Reference">Reference</a>)*

+"'"</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-SystemLiteral"></a>[11]&nbsp;&nbsp;&nbsp;</td>

+<td><code>SystemLiteral</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>('"' [^"]* '"') |&nbsp;("'" [^']* "'") </code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-PubidLiteral"></a>[12]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PubidLiteral</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'"' <a href="#NT-PubidChar">PubidChar</a>* '"' | "'" (<a href="#NT-PubidChar">PubidChar</a>

+- "'")* "'"</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-PubidChar"></a>[13]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PubidChar</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>#x20 | #xD | #xA |&nbsp;[a-zA-Z0-9] |&nbsp;[-'()+,./:=?;!*#@$_%]</code></td>

+</tr>

+</tbody></table> <div class="note"><p class="prefix"><b>Note:</b></p> <p>Although

+the <a href="#NT-EntityValue">EntityValue</a> production allows the definition

+of an entity consisting of a single explicit <code>&lt;</code> in the literal

+(e.g., <code>&lt;!ENTITY mylt "&lt;"></code>), it is strongly advised to avoid

+this practice since any reference to that entity will cause a well-formedness

+error.</p> </div> </div> <div class="div2"> <h3><a name="syntax"></a>2.4 Character

+Data and Markup</h3> <p><a title="Text" href="#dt-text">Text</a> consists

+of intermingled <a title="Character Data" href="#dt-chardata">character data</a>

+and markup. [<a title="Markup" name="dt-markup">Definition</a>: <b>Markup</b>

+takes the form of <a title="Start-Tag" href="#dt-stag">start-tags</a>, <a

+title="End Tag" href="#dt-etag">end-tags</a>, <a title="Empty" href="#dt-empty">empty-element

+tags</a>, <a title="Entity Reference" href="#dt-entref">entity references</a>, <a

+title="Character Reference" href="#dt-charref">character references</a>, <a

+title="Comment" href="#dt-comment">comments</a>, <a title="CDATA Section"

+href="#dt-cdsection">CDATA section</a> delimiters, <a title="Document Type Declaration"

+href="#dt-doctype">document type declarations</a>, <a title="Processing instruction"

+href="#dt-pi">processing instructions</a>, <a href="#NT-XMLDecl">XML declarations</a>, <a

+href="#NT-TextDecl">text declarations</a>, and any white space that is at

+the top level of the document entity (that is, outside the document element

+and not inside any other markup).]</p> <p>[<a title="Character Data" name="dt-chardata">Definition</a>:

+All text that is not markup constitutes the <b>character data</b> of the document.]</p> <p>The

+ampersand character (&amp;) and the left angle bracket (&lt;) may appear in

+their literal form <em>only</em> when used as markup delimiters, or within

+a <a title="Comment" href="#dt-comment">comment</a>, a <a title="Processing instruction"

+href="#dt-pi">processing instruction</a>, or a <a title="CDATA Section" href="#dt-cdsection">CDATA

+section</a>.  If they are needed elsewhere, they must be <a title="escape"

+href="#dt-escape">escaped</a> using either <a title="Character Reference"

+href="#dt-charref">numeric character references</a> or the strings "<code>&amp;amp;</code>"

+and "<code>&amp;lt;</code>" respectively. The right angle bracket (>) may

+be represented using the string "<code>&amp;gt;</code>", and must, <a title="For Compatibility"

+href="#dt-compat">for compatibility</a>, be escaped using "<code>&amp;gt;</code>"

+or a character reference when it appears in the string "<code>]]&gt;</code>"

+in content, when that string is not marking the end of a <a title="CDATA Section"

+href="#dt-cdsection">CDATA section</a>.</p> <p>In the content of elements,

+character data is any string of characters which does not contain the start-delimiter

+of any markup. In a CDATA section, character data is any string of characters

+not including the CDATA-section-close delimiter, "<code>]]&gt;</code>".</p> <p>To

+allow attribute values to contain both single and double quotes, the apostrophe

+or single-quote character (') may be represented as "<code>&amp;apos;</code>",

+and the double-quote character (") as "<code>&amp;quot;</code>".</p> <h5>Character

+Data</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-CharData"></a>[14]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CharData</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</code></td>

+</tr>

+</tbody></table> </div> <div class="div2"> <h3><a name="sec-comments"></a>2.5

+Comments</h3> <p>[<a title="Comment" name="dt-comment">Definition</a>: <b>Comments</b>

+may appear anywhere in a document outside other <a title="Markup" href="#dt-markup">markup</a>;

+in addition, they may appear within the document type declaration at places

+allowed by the grammar. They are not part of the document's <a title="Character Data"

+href="#dt-chardata">character data</a>; an XML processor may, but need not,

+make it possible for an application to retrieve the text of comments. <a title="For Compatibility"

+href="#dt-compat">For compatibility</a>, the string "<code>--</code>" (double-hyphen)

+must not occur within comments.] Parameter entity references are not recognized

+within comments.</p> <h5>Comments</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-Comment"></a>[15]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Comment</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!--' ((<a href="#NT-Char">Char</a> - '-') | ('-' (<a href="#NT-Char">Char</a>

+- '-')))* '-->'</code></td>

+</tr>

+</tbody></table> <p>An example of a comment:</p> <table class="eg" width="100%"

+border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!-- declarations for &lt;head> &amp; &lt;body> --></pre></td>

+</tr>

+</table> <p>Note that the grammar does not allow a comment ending in <code>---></code>.

+The following example is <em>not</em> well-formed.</p> <table class="eg" width="100%"

+border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!-- B+, B, or B---></pre></td>

+</tr>

+</table> </div> <div class="div2"> <h3><a name="sec-pi"></a>2.6 Processing

+Instructions</h3> <p>[<a title="Processing instruction" name="dt-pi">Definition</a>: <b>Processing

+instructions</b> (PIs) allow documents to contain instructions for applications.]</p> <h5>Processing

+Instructions</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-PI"></a>[16]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PI</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;?' <a href="#NT-PITarget">PITarget</a> (<a href="#NT-S">S</a>

+(<a href="#NT-Char">Char</a>* - (<a href="#NT-Char">Char</a>* '?>' <a href="#NT-Char">Char</a>*)))?

+'?>'</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-PITarget"></a>[17]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PITarget</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Name">Name</a> - (('X' | 'x') ('M' | 'm') ('L' | 'l'))</code></td>

+</tr>

+</tbody></table> <p>PIs are not part of the document's <a title="Character Data"

+href="#dt-chardata">character data</a>, but must be passed through to the

+application. The PI begins with a target (<a href="#NT-PITarget">PITarget</a>)

+used to identify the application to which the instruction is directed. The

+target names "<code>XML</code>", "<code>xml</code>", and so on are reserved

+for standardization in this or future versions of this specification. The

+XML <a title="Notation" href="#dt-notation">Notation</a> mechanism may be

+used for formal declaration of PI targets. Parameter entity references are

+not recognized within processing instructions.</p> </div> <div class="div2"> <h3><a

+name="sec-cdata-sect"></a>2.7 CDATA Sections</h3> <p>[<a title="CDATA Section"

+name="dt-cdsection">Definition</a>: <b>CDATA sections</b> may occur anywhere

+character data may occur; they are used to escape blocks of text containing

+characters which would otherwise be recognized as markup. CDATA sections begin

+with the string "<code>&lt;![CDATA[</code>" and end with the string "<code>]]&gt;</code>":]</p> <h5>CDATA

+Sections</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-CDSect"></a>[18]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CDSect</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-CDStart">CDStart</a> <a href="#NT-CData">CData</a> <a

+href="#NT-CDEnd">CDEnd</a></code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-CDStart"></a>[19]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CDStart</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;![CDATA['</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-CData"></a>[20]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CData</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>(<a href="#NT-Char">Char</a>* - (<a href="#NT-Char">Char</a>* ']]&gt;' <a

+href="#NT-Char">Char</a>*)) </code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-CDEnd"></a>[21]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CDEnd</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>']]&gt;'</code></td>

+</tr>

+</tbody></table> <p>Within a CDATA section, only the <a href="#NT-CDEnd">CDEnd</a>

+string is recognized as markup, so that left angle brackets and ampersands

+may occur in their literal form; they need not (and cannot) be escaped using

+"<code>&amp;lt;</code>" and "<code>&amp;amp;</code>". CDATA sections cannot

+nest.</p> <p>An example of a CDATA section, in which "<code>&lt;greeting></code>"

+and "<code>&lt;/greeting></code>" are recognized as <a title="Character Data"

+href="#dt-chardata">character data</a>, not <a title="Markup" href="#dt-markup">markup</a>:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt; </pre></td>

+</tr>

+</table> </div> <div class="div2"> <h3><a name="sec-prolog-dtd"></a>2.8 Prolog

+and Document Type Declaration</h3> <p>[<a title="XML Declaration" name="dt-xmldecl">Definition</a>:

+XML documents should begin with an <b>XML declaration</b> which specifies

+the version of XML being used.] For example, the following is a complete XML

+document, <a title="Well-Formed" href="#dt-wellformed">well-formed</a> but

+not <a title="Validity" href="#dt-valid">valid</a>:</p> <table class="eg"

+width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;?xml version="1.0"?> &lt;greeting>Hello, world!&lt;/greeting> </pre></td>

+</tr>

+</table> <p>and so is this:</p> <table class="eg" width="100%" border="1"

+cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;greeting>Hello, world!&lt;/greeting></pre></td>

+</tr>

+</table> <p>The version number "<code>1.0</code>" should be used to indicate

+conformance to this version of this specification; it is an error for a document

+to use the value "<code>1.0</code>" if it does not conform to this version

+of this specification. It is the intent of the XML working group to give later

+versions of this specification numbers other than "<code>1.0</code>", but

+this intent does not indicate a commitment to produce any future versions

+of XML, nor if any are produced, to use any particular numbering scheme. Since

+future versions are not ruled out, this construct is provided as a means to

+allow the possibility of automatic version recognition, should it become necessary.

+Processors may signal an error if they receive documents labeled with versions

+they do not support.</p> <p>The function of the markup in an XML document

+is to describe its storage and logical structure and to associate attribute-value

+pairs with its logical structures. XML provides a mechanism, the <a title="Document Type Declaration"

+href="#dt-doctype">document type declaration</a>, to define constraints on

+the logical structure and to support the use of predefined storage units.

+[<a title="Validity" name="dt-valid">Definition</a>: An XML document is <b>valid</b>

+if it has an associated document type declaration and if the document complies

+with the constraints expressed in it.]</p> <p>The document type declaration

+must appear before the first <a title="Element" href="#dt-element">element</a>

+in the document.</p> <h5>Prolog</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-prolog"></a>[22]&nbsp;&nbsp;&nbsp;</td>

+<td><code>prolog</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-XMLDecl">XMLDecl</a>? <a href="#NT-Misc">Misc</a>*

+(<a href="#NT-doctypedecl">doctypedecl</a> <a href="#NT-Misc">Misc</a>*)?</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-XMLDecl"></a>[23]&nbsp;&nbsp;&nbsp;</td>

+<td><code>XMLDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;?xml' <a href="#NT-VersionInfo">VersionInfo</a> <a href="#NT-EncodingDecl">EncodingDecl</a>? <a

+href="#NT-SDDecl">SDDecl</a>? <a href="#NT-S">S</a>? '?>'</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-VersionInfo"></a>[24]&nbsp;&nbsp;&nbsp;</td>

+<td><code>VersionInfo</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-S">S</a> 'version' <a href="#NT-Eq">Eq</a> ("'" <a

+href="#NT-VersionNum">VersionNum</a> "'" | '"' <a href="#NT-VersionNum">VersionNum</a>

+'"')<i>/*  */</i></code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Eq"></a>[25]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Eq</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-S">S</a>? '=' <a href="#NT-S">S</a>?</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-VersionNum"></a>[26]&nbsp;&nbsp;&nbsp;</td>

+<td><code>VersionNum</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>([a-zA-Z0-9_.:] | '-')+</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Misc"></a>[27]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Misc</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Comment">Comment</a> | <a href="#NT-PI">PI</a> | <a

+href="#NT-S">S</a></code></td>

+</tr>

+</tbody></table> <p>[<a title="Document Type Declaration" name="dt-doctype">Definition</a>:

+The XML <b>document type declaration</b> contains or points to <a title="markup declaration"

+href="#dt-markupdecl">markup declarations</a> that provide a grammar for a

+class of documents. This grammar is known as a document type definition, or <b>DTD</b>.

+The document type declaration can point to an external subset (a special kind

+of <a title="External Entity" href="#dt-extent">external entity</a>) containing

+markup declarations, or can contain the markup declarations directly in an

+internal subset, or can do both. The DTD for a document consists of both subsets

+taken together.]</p> <p>[<a title="markup declaration" name="dt-markupdecl">Definition</a>:

+ A <b>markup declaration</b> is an <a title="Element Type declaration" href="#dt-eldecl">element

+type declaration</a>, an <a title="Attribute-List Declaration" href="#dt-attdecl">attribute-list

+declaration</a>, an <a title="entity declaration" href="#dt-entdecl">entity

+declaration</a>, or a <a title="Notation Declaration" href="#dt-notdecl">notation

+declaration</a>.] These declarations may be contained in whole or in part

+within <a title="Parameter entity" href="#dt-PE">parameter entities</a>, as

+described in the well-formedness and validity constraints below. For further

+information, see <a href="#sec-physical-struct"><b>4 Physical Structures</b></a>.</p> <h5>Document

+Type Definition</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-doctypedecl"></a>[28]&nbsp;&nbsp;&nbsp;</td>

+<td><code>doctypedecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!DOCTYPE' <a href="#NT-S">S</a> <a href="#NT-Name">Name</a>

+(<a href="#NT-S">S</a> <a href="#NT-ExternalID">ExternalID</a>)? <a href="#NT-S">S</a>?

+('[' (<a href="#NT-markupdecl">markupdecl</a> | <a href="#NT-DeclSep">DeclSep</a>)*

+']' <a href="#NT-S">S</a>?)? '>'</code></td>

+<td><a href="#vc-roottype">[VC: Root Element Type]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#ExtSubset">[WFC: External Subset]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-DeclSep"></a>[28a]&nbsp;&nbsp;&nbsp;</td>

+<td><code>DeclSep</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-PEReference">PEReference</a> | <a href="#NT-S">S</a></code></td>

+<td><a href="#PE-between-Decls">[WFC: PE Between Declarations]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-markupdecl"></a>[29]&nbsp;&nbsp;&nbsp;</td>

+<td><code>markupdecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-elementdecl">elementdecl</a> | <a href="#NT-AttlistDecl">AttlistDecl</a>

+| <a href="#NT-EntityDecl">EntityDecl</a> | <a href="#NT-NotationDecl">NotationDecl</a>

+| <a href="#NT-PI">PI</a> | <a href="#NT-Comment">Comment</a> </code></td>

+<td><a href="#vc-PEinMarkupDecl">[VC: Proper Declaration/PE Nesting]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#wfc-PEinInternalSubset">[WFC: PEs in Internal Subset]</a></td>

+</tr>

+</tbody></table> <p>Note that it is possible to construct a well-formed document

+containing a <a href="#NT-doctypedecl">doctypedecl</a> that neither points

+to an external subset nor contains an internal subset.</p> <p>The markup declarations

+may be made up in whole or in part of the <a title="Replacement Text" href="#dt-repltext">replacement

+text</a> of <a title="Parameter entity" href="#dt-PE">parameter entities</a>.

+The productions later in this specification for individual nonterminals (<a

+href="#NT-elementdecl">elementdecl</a>, <a href="#NT-AttlistDecl">AttlistDecl</a>,

+and so on) describe the declarations <em>after</em> all the parameter entities

+have been <a title="Include" href="#dt-include">included</a>.</p> <p>Parameter

+entity references are recognized anywhere in the DTD (internal and external

+subsets and external parameter entities), except in literals, processing instructions,

+comments, and the contents of ignored conditional sections (see <a href="#sec-condition-sect"><b>3.4

+Conditional Sections</b></a>). They are also recognized in entity value literals.

+The use of parameter entities in the internal subset is restricted as described

+below.</p> <div class="constraint"><p class="prefix"><a name="vc-roottype"></a><b>Validity

+constraint: Root Element Type</b></p><p>The <a href="#NT-Name">Name</a> in

+the document type declaration must match the element type of the <a title="Root Element"

+href="#dt-root">root element</a>.</p> </div> <div class="constraint"><p class="prefix"><a

+name="vc-PEinMarkupDecl"></a><b>Validity constraint: Proper Declaration/PE

+Nesting</b></p> <p>Parameter-entity <a title="Replacement Text" href="#dt-repltext">replacement

+text</a> must be properly nested with markup declarations. That is to say,

+if either the first character or the last character of a markup declaration

+(<a href="#NT-markupdecl">markupdecl</a> above) is contained in the replacement

+text for a <a title="Parameter-entity reference" href="#dt-PERef">parameter-entity

+reference</a>, both must be contained in the same replacement text.</p> </div> <div

+class="constraint"><p class="prefix"><a name="wfc-PEinInternalSubset"></a><b>Well-formedness

+constraint: PEs in Internal Subset</b></p><p>In the internal DTD subset, <a

+title="Parameter-entity reference" href="#dt-PERef">parameter-entity references</a>

+can occur only where markup declarations can occur, not within markup declarations.

+(This does not apply to references that occur in external parameter entities

+or to the external subset.)</p> </div> <div class="constraint"><p class="prefix"><a

+name="ExtSubset"></a><b>Well-formedness constraint: External Subset</b></p><p>The

+external subset, if any, must match the production for <a href="#NT-extSubset">extSubset</a>.</p> </div> <div

+class="constraint"><p class="prefix"><a name="PE-between-Decls"></a><b>Well-formedness

+constraint: PE Between Declarations</b></p><p>The replacement text of a parameter

+entity reference in a <a href="#NT-DeclSep">DeclSep</a> must match the production <a

+href="#NT-extSubsetDecl">extSubsetDecl</a>.</p> </div> <p>Like the internal

+subset, the external subset and any external parameter entities referenced

+in a <a href="#NT-DeclSep">DeclSep</a> must consist of a series of complete

+markup declarations of the types allowed by the non-terminal symbol <a href="#NT-markupdecl">markupdecl</a>,

+interspersed with white space or <a title="Parameter-entity reference" href="#dt-PERef">parameter-entity

+references</a>. However, portions of the contents of the external subset or

+of these  external parameter entities may conditionally be ignored by using

+the <a title="conditional section" href="#dt-cond-section">conditional section</a>

+construct; this is not allowed in the internal subset.</p> <h5>External Subset</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-extSubset"></a>[30]&nbsp;&nbsp;&nbsp;</td>

+<td><code>extSubset</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-TextDecl">TextDecl</a>? <a href="#NT-extSubsetDecl">extSubsetDecl</a></code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-extSubsetDecl"></a>[31]&nbsp;&nbsp;&nbsp;</td>

+<td><code>extSubsetDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>( <a href="#NT-markupdecl">markupdecl</a> | <a href="#NT-conditionalSect">conditionalSect</a>

+| <a href="#NT-DeclSep">DeclSep</a>)*</code></td>

+<td><i>/*  */</i></td>

+</tr>

+</tbody></table> <p>The external subset and external parameter entities also

+differ from the internal subset in that in them, <a title="Parameter-entity reference"

+href="#dt-PERef">parameter-entity references</a> are permitted <em>within</em>

+markup declarations, not only <em>between</em> markup declarations.</p> <p>An

+example of an XML document with a document type declaration:</p> <table class="eg"

+width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;?xml version="1.0"?> &lt;!DOCTYPE greeting SYSTEM "hello.dtd"> &lt;greeting>Hello, world!&lt;/greeting> </pre></td>

+</tr>

+</table> <p>The <a title="System Identifier" href="#dt-sysid">system identifier</a>

+"<code>hello.dtd</code>" gives the address (a URI reference) of a DTD for

+the document.</p> <p>The declarations can also be given locally, as in this

+example:</p> <table class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;?xml version="1.0" encoding="UTF-8" ?>

+&lt;!DOCTYPE greeting [

+  &lt;!ELEMENT greeting (#PCDATA)>

+]>

+&lt;greeting>Hello, world!&lt;/greeting></pre></td>

+</tr>

+</table> <p>If both the external and internal subsets are used, the internal

+subset is considered to occur before the external subset.  This has the effect

+that entity and attribute-list declarations in the internal subset take precedence

+over those in the external subset.</p> </div> <div class="div2"> <h3><a name="sec-rmd"></a>2.9

+Standalone Document Declaration</h3> <p>Markup declarations can affect the

+content of the document, as passed from an <a title="XML Processor" href="#dt-xml-proc">XML

+processor</a> to an application; examples are attribute defaults and entity

+declarations. The standalone document declaration, which may appear as a component

+of the XML declaration, signals whether or not there are such declarations

+which appear external to the <a title="Document Entity" href="#dt-docent">document

+entity</a> or in parameter entities. [<a title="External Markup Declaration"

+name="dt-extmkpdecl">Definition</a>: An <b>external markup declaration</b>

+is defined as a markup declaration occurring in the external subset or in

+a parameter entity (external or internal, the latter being included because

+non-validating processors are not required to read them).]</p> <h5>Standalone

+Document Declaration</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-SDDecl"></a>[32]&nbsp;&nbsp;&nbsp;</td>

+<td><code>SDDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code> <a href="#NT-S">S</a> 'standalone' <a href="#NT-Eq">Eq</a> (("'"

+('yes' | 'no') "'") | ('"' ('yes' | 'no') '"')) </code></td>

+<td><a href="#vc-check-rmd">[VC: Standalone Document Declaration]</a></td>

+</tr>

+</tbody></table> <p>In a standalone document declaration, the value "yes"

+indicates that there are no <a title="External Markup Declaration" href="#dt-extmkpdecl">external

+markup declarations</a> which affect the information passed from the XML processor

+to the application. The value "no" indicates that there are or may be such

+external markup declarations. Note that the standalone document declaration

+only denotes the presence of external <em>declarations</em>; the presence,

+in a document, of references to external <em>entities</em>, when those entities

+are internally declared, does not change its standalone status.</p> <p>If

+there are no external markup declarations, the standalone document declaration

+has no meaning. If there are external markup declarations but there is no

+standalone document declaration, the value "no" is assumed.</p> <p>Any XML

+document for which <code>standalone="no"</code> holds can be converted algorithmically

+to a standalone document, which may be desirable for some network delivery

+applications.</p> <div class="constraint"><p class="prefix"><a name="vc-check-rmd"></a><b>Validity

+constraint: Standalone Document Declaration</b></p><p>The standalone document

+declaration must have the value "no" if any external markup declarations contain

+declarations of:</p> <ul>

+<li><p>attributes with <a title="Attribute Default" href="#dt-default">default</a>

+values, if elements to which these attributes apply appear in the document

+without specifications of values for these attributes, or</p></li>

+<li><p>entities (other than <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>),

+if <a title="Entity Reference" href="#dt-entref">references</a> to those entities

+appear in the document, or</p></li>

+<li><p>attributes with values subject to <a href="#AVNormalize"><cite>normalization</cite></a>,

+where the attribute appears in the document with a value which will change

+as a result of normalization, or</p></li>

+<li><p>element types with <a title="Element content" href="#dt-elemcontent">element

+content</a>, if white space occurs directly within any instance of those types.</p></li>

+</ul> </div> <p>An example XML declaration with a standalone document declaration:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;?xml version="1.0" standalone='yes'?></pre></td>

+</tr>

+</table> </div> <div class="div2"> <h3><a name="sec-white-space"></a>2.10

+White Space Handling</h3> <p>In editing XML documents, it is often convenient

+to use "white space" (spaces, tabs, and blank lines) to set apart the markup

+for greater readability. Such white space is typically not intended for inclusion

+in the delivered version of the document. On the other hand, "significant"

+white space that should be preserved in the delivered version is common, for

+example in poetry and source code.</p> <p>An <a title="XML Processor" href="#dt-xml-proc">XML

+processor</a> must always pass all characters in a document that are not markup

+through to the application. A <a title="Validating Processor" href="#dt-validating">

+validating XML processor</a> must also inform the application which of these

+characters constitute white space appearing in <a title="Element content"

+href="#dt-elemcontent">element content</a>.</p> <p>A special <a title="Attribute"

+href="#dt-attr">attribute</a> named <code>xml:space</code> may be attached

+to an element to signal an intention that in that element, white space should

+be preserved by applications. In valid documents, this attribute, like any

+other, must be <a title="Attribute-List Declaration" href="#dt-attdecl">declared</a>

+if it is used. When declared, it must be given as an <a title="Enumerated Attribute Values"

+href="#dt-enumerated">enumerated type</a> whose values are one or both of

+"default" and "preserve". For example:</p> <table class="eg" width="100%"

+border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ATTLIST poem  xml:space (default|preserve) 'preserve'>

+

+&lt;!-- -->

+&lt;!ATTLIST pre xml:space (preserve) #FIXED 'preserve'></pre></td>

+</tr>

+</table> <p>The value "default" signals that applications' default white-space

+processing modes are acceptable for this element; the value "preserve" indicates

+the intent that applications preserve all the white space. This declared intent

+is considered to apply to all elements within the content of the element where

+it is specified, unless overriden with another instance of the <code>xml:space</code>

+attribute.</p> <p>The <a title="Root Element" href="#dt-root">root element</a>

+of any document is considered to have signaled no intentions as regards application

+space handling, unless it provides a value for this attribute or the attribute

+is declared with a default value.</p> </div> <div class="div2"> <h3><a name="sec-line-ends"></a>2.11

+End-of-Line Handling</h3> <p>XML <a title="Text Entity" href="#dt-parsedent">parsed

+entities</a> are often stored in computer files which, for editing convenience,

+are organized into lines. These lines are typically separated by some combination

+of the characters carriage-return (#xD) and line-feed (#xA).</p>  <p>To simplify

+the tasks of <a title="Application" href="#dt-app">applications</a>, the characters

+passed to an application by the <a title="XML Processor" href="#dt-xml-proc">XML

+processor</a> must be as if the XML processor normalized all line breaks in

+external parsed entities (including the document entity) on input, before

+parsing, by translating both the two-character sequence #xD #xA and any #xD

+that is not followed by #xA to a single #xA character.</p> </div> <div class="div2"> <h3><a

+name="sec-lang-tag"></a>2.12 Language Identification</h3> <p>In document processing,

+it is often useful to identify the natural or formal language in which the

+content is written. A special <a title="Attribute" href="#dt-attr">attribute</a>

+named <code>xml:lang</code> may be inserted in documents to specify the language

+used in the contents and attribute values of any element in an XML document.

+In valid documents, this attribute, like any other, must be <a title="Attribute-List Declaration"

+href="#dt-attdecl">declared</a> if it is used. The values of the attribute

+are language identifiers as defined by <a href="#RFC1766">[IETF RFC 1766]</a>, <cite>Tags

+for the Identification of Languages</cite>, or its successor on the IETF Standards

+Track.</p> <div class="note"><p class="prefix"><b>Note:</b></p> <p><a href="#RFC1766">[IETF

+RFC 1766]</a> tags are constructed from two-letter language codes as defined

+by <a href="#ISO639">[ISO 639]</a>, from two-letter country codes as defined

+by <a href="#ISO3166">[ISO 3166]</a>, or from language identifiers registered

+with the Internet Assigned Numbers Authority <a href="#IANA-LANGCODES">[IANA-LANGCODES]</a>.

+It is expected that the successor to <a href="#RFC1766">[IETF RFC 1766]</a>

+will introduce three-letter language codes for languages not presently covered

+by <a href="#ISO639">[ISO 639]</a>.</p> </div> <p>(Productions 33 through

+38 have been removed.)</p>      <p>For example:</p> <table class="eg" width="100%"

+border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;p xml:lang="en">The quick brown fox jumps over the lazy dog.&lt;/p>

+&lt;p xml:lang="en-GB">What colour is it?&lt;/p>

+&lt;p xml:lang="en-US">What color is it?&lt;/p>

+&lt;sp who="Faust" desc='leise' xml:lang="de">

+  &lt;l>Habe nun, ach! Philosophie,&lt;/l>

+  &lt;l>Juristerei, und Medizin&lt;/l>

+  &lt;l>und leider auch Theologie&lt;/l>

+  &lt;l>durchaus studiert mit hei&szlig;em Bem&uuml;h'n.&lt;/l>

+&lt;/sp></pre></td>

+</tr>

+</table>  <p>The intent declared with <code>xml:lang</code> is considered

+to apply to all attributes and content of the element where it is specified,

+unless overridden with an instance of <code>xml:lang</code> on another element

+within that content.</p>  <p>A simple declaration for <code>xml:lang</code>

+might take the form</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>xml:lang NMTOKEN #IMPLIED</pre></td>

+</tr>

+</table> <p>but specific default values may also be given, if appropriate.

+In a collection of French poems for English students, with glosses and notes

+in English, the <code>xml:lang</code> attribute might be declared this way:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ATTLIST poem   xml:lang NMTOKEN 'fr'>

+&lt;!ATTLIST gloss  xml:lang NMTOKEN 'en'>

+&lt;!ATTLIST note   xml:lang NMTOKEN 'en'></pre></td>

+</tr>

+</table> </div> </div>  <div class="div1"> <h2><a name="sec-logical-struct"></a>3

+Logical Structures</h2> <p>[<a title="Element" name="dt-element">Definition</a>:

+Each <a title="XML Document" href="#dt-xml-doc">XML document</a> contains

+one or more <b>elements</b>, the boundaries of which are either delimited

+by <a title="Start-Tag" href="#dt-stag">start-tags</a> and <a title="End Tag"

+href="#dt-etag">end-tags</a>, or, for <a title="Empty" href="#dt-empty">empty</a>

+elements, by an <a title="empty-element tag" href="#dt-eetag">empty-element

+tag</a>. Each element has a type, identified by name, sometimes called its

+"generic identifier" (GI), and may have a set of attribute specifications.]

+Each attribute specification has a <a title="Attribute Name" href="#dt-attrname">name</a>

+and a <a title="Attribute Value" href="#dt-attrval">value</a>.</p> <h5>Element</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-element"></a>[39]&nbsp;&nbsp;&nbsp;</td>

+<td><code>element</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-EmptyElemTag">EmptyElemTag</a></code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| <a href="#NT-STag">STag</a> <a href="#NT-content">content</a> <a

+href="#NT-ETag">ETag</a></code></td>

+<td><a href="#GIMatch">[WFC: Element Type Match]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#elementvalid">[VC: Element Valid]</a></td>

+</tr>

+</tbody></table> <p>This specification does not constrain the semantics, use,

+or (beyond syntax) names of the element types and attributes, except that

+names beginning with a match to <code>(('X'|'x')('M'|'m')('L'|'l'))</code>

+are reserved for standardization in this or future versions of this specification.</p> <div

+class="constraint"><p class="prefix"><a name="GIMatch"></a><b>Well-formedness

+constraint: Element Type Match</b></p><p>The <a href="#NT-Name">Name</a> in

+an element's end-tag must match the element type in the start-tag.</p> </div> <div

+class="constraint"><p class="prefix"><a name="elementvalid"></a><b>Validity

+constraint: Element Valid</b></p><p>An element is valid if there is a declaration

+matching <a href="#NT-elementdecl">elementdecl</a> where the <a href="#NT-Name">Name</a>

+matches the element type, and one of the following holds:</p> <ol>

+<li><p>The declaration matches <b>EMPTY</b> and the element has no <a title="Content"

+href="#dt-content">content</a>.</p></li>

+<li><p>The declaration matches <a href="#NT-children">children</a> and the

+sequence of <a title="Parent/Child" href="#dt-parentchild">child elements</a>

+belongs to the language generated by the regular expression in the content

+model, with optional white space (characters matching the nonterminal <a href="#NT-S">S</a>)

+between the start-tag and the first child element, between child elements,

+or between the last child element and the end-tag. Note that a CDATA section

+containing only white space does not match the nonterminal <a href="#NT-S">S</a>,

+and hence cannot appear in these positions.</p></li>

+<li><p>The declaration matches <a href="#NT-Mixed">Mixed</a> and the content

+consists of <a title="Character Data" href="#dt-chardata">character data</a>

+and <a title="Parent/Child" href="#dt-parentchild">child elements</a> whose

+types match names in the content model.</p></li>

+<li><p>The declaration matches <b>ANY</b>, and the types of any <a title="Parent/Child"

+href="#dt-parentchild">child elements</a> have been declared.</p></li>

+</ol> </div> <div class="div2"> <h3><a name="sec-starttags"></a>3.1 Start-Tags,

+End-Tags, and Empty-Element Tags</h3> <p>[<a title="Start-Tag" name="dt-stag">Definition</a>:

+The beginning of every non-empty XML element is marked by a <b>start-tag</b>.]</p> <h5>Start-tag</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-STag"></a>[40]&nbsp;&nbsp;&nbsp;</td>

+<td><code>STag</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;' <a href="#NT-Name">Name</a> (<a href="#NT-S">S</a> <a href="#NT-Attribute">Attribute</a>)* <a

+href="#NT-S">S</a>? '>'</code></td>

+<td><a href="#uniqattspec">[WFC: Unique Att Spec]</a></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Attribute"></a>[41]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Attribute</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Name">Name</a> <a href="#NT-Eq">Eq</a> <a href="#NT-AttValue">AttValue</a></code></td>

+<td><a href="#ValueType">[VC: Attribute Value Type]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#NoExternalRefs">[WFC: No External Entity References]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#CleanAttrVals">[WFC: No &lt; in Attribute Values]</a></td>

+</tr>

+</tbody></table> <p>The <a href="#NT-Name">Name</a> in the start- and end-tags

+gives the element's <b>type</b>. [<a title="Attribute" name="dt-attr">Definition</a>:

+ The <a href="#NT-Name">Name</a>-<a href="#NT-AttValue">AttValue</a> pairs

+are referred to as the <b>attribute specifications</b> of the element], [<a

+title="Attribute Name" name="dt-attrname">Definition</a>: with the <a href="#NT-Name">Name</a>

+in each pair referred to as the <b>attribute name</b>] and [<a title="Attribute Value"

+name="dt-attrval">Definition</a>: the content of the <a href="#NT-AttValue">AttValue</a>

+(the text between the <code>'</code> or <code>"</code> delimiters) as the <b>attribute

+value</b>.]Note that the order of attribute specifications in a start-tag

+or empty-element tag is not significant.</p> <div class="constraint"><p class="prefix"><a

+name="uniqattspec"></a><b>Well-formedness constraint: Unique Att Spec</b></p><p>No

+attribute name may appear more than once in the same start-tag or empty-element

+tag.</p> </div> <div class="constraint"><p class="prefix"><a name="ValueType"></a><b>Validity

+constraint: Attribute Value Type</b></p><p>The attribute must have been declared;

+the value must be of the type declared for it. (For attribute types, see <a

+href="#attdecls"><b>3.3 Attribute-List Declarations</b></a>.)</p> </div> <div

+class="constraint"><p class="prefix"><a name="NoExternalRefs"></a><b>Well-formedness

+constraint: No External Entity References</b></p><p>Attribute values cannot

+contain direct or indirect entity references to external entities.</p> </div> <div

+class="constraint"><p class="prefix"><a name="CleanAttrVals"></a><b>Well-formedness

+constraint: No <code>&lt;</code> in Attribute Values</b></p> <p>The <a title="Replacement Text"

+href="#dt-repltext">replacement text</a> of any entity referred to directly

+or indirectly in an attribute value must not contain a <code>&lt;</code>.</p> </div> <p>An

+example of a start-tag:</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;termdef id="dt-dog" term="dog"></pre></td>

+</tr>

+</table> <p>[<a title="End Tag" name="dt-etag">Definition</a>: The end of

+every element that begins with a start-tag must be marked by an <b>end-tag</b>

+containing a name that echoes the element's type as given in the start-tag:]</p> <h5>End-tag</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-ETag"></a>[42]&nbsp;&nbsp;&nbsp;</td>

+<td><code>ETag</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;/' <a href="#NT-Name">Name</a> <a href="#NT-S">S</a>? '>'</code></td>

+</tr>

+</tbody></table> <p>An example of an end-tag:</p> <table class="eg" width="100%"

+border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;/termdef></pre></td>

+</tr>

+</table> <p>[<a title="Content" name="dt-content">Definition</a>: The <a title="Text"

+href="#dt-text">text</a> between the start-tag and end-tag is called the element's <b>content</b>:]</p> <h5>Content

+of Elements</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-content"></a>[43]&nbsp;&nbsp;&nbsp;</td>

+<td><code>content</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-CharData">CharData</a>? ((<a href="#NT-element">element</a>

+| <a href="#NT-Reference">Reference</a> | <a href="#NT-CDSect">CDSect</a>

+| <a href="#NT-PI">PI</a> | <a href="#NT-Comment">Comment</a>) <a href="#NT-CharData">CharData</a>?)*</code></td>

+<td><i>/*  */</i></td>

+</tr>

+</tbody></table> <p>[<a title="Empty" name="dt-empty">Definition</a>: An element

+with no content is said to be <b>empty</b>.] The representation of an empty

+element is either a start-tag immediately followed by an end-tag, or an empty-element

+tag. [<a title="empty-element tag" name="dt-eetag">Definition</a>: An <b>empty-element

+tag</b> takes a special form:]</p> <h5>Tags for Empty Elements</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-EmptyElemTag"></a>[44]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EmptyElemTag</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;' <a href="#NT-Name">Name</a> (<a href="#NT-S">S</a> <a href="#NT-Attribute">Attribute</a>)* <a

+href="#NT-S">S</a>? '/>'</code></td>

+<td><a href="#uniqattspec">[WFC: Unique Att Spec]</a></td>

+</tr>

+</tbody></table> <p>Empty-element tags may be used for any element which has

+no content, whether or not it is declared using the keyword <b>EMPTY</b>. <a

+title="For interoperability" href="#dt-interop">For interoperability</a>,

+the empty-element tag should be used, and should only be used, for elements

+which are declared EMPTY.</p> <p>Examples of empty elements:</p> <table class="eg"

+width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;IMG align="left"

+ src="http://www.w3.org/Icons/WWW/w3c_home" />

+&lt;br>&lt;/br>

+&lt;br/></pre></td>

+</tr>

+</table> </div> <div class="div2"> <h3><a name="elemdecls"></a>3.2 Element

+Type Declarations</h3> <p>The <a title="Element" href="#dt-element">element</a>

+structure of an <a title="XML Document" href="#dt-xml-doc">XML document</a>

+may, for <a title="Validity" href="#dt-valid">validation</a> purposes, be

+constrained using element type and attribute-list declarations. An element

+type declaration constrains the element's <a title="Content" href="#dt-content">content</a>.</p> <p>Element

+type declarations often constrain which element types can appear as <a title="Parent/Child"

+href="#dt-parentchild">children</a> of the element. At user option, an XML

+processor may issue a warning when a declaration mentions an element type

+for which no declaration is provided, but this is not an error.</p> <p>[<a

+title="Element Type declaration" name="dt-eldecl">Definition</a>: An <b>element

+type declaration</b> takes the form:]</p> <h5>Element Type Declaration</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-elementdecl"></a>[45]&nbsp;&nbsp;&nbsp;</td>

+<td><code>elementdecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!ELEMENT' <a href="#NT-S">S</a> <a href="#NT-Name">Name</a> <a

+href="#NT-S">S</a> <a href="#NT-contentspec">contentspec</a> <a href="#NT-S">S</a>?

+'>'</code></td>

+<td><a href="#EDUnique">[VC: Unique Element Type Declaration]</a></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-contentspec"></a>[46]&nbsp;&nbsp;&nbsp;</td>

+<td><code>contentspec</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'EMPTY' | 'ANY' | <a href="#NT-Mixed">Mixed</a> | <a href="#NT-children">children</a> </code></td>

+</tr>

+</tbody></table> <p>where the <a href="#NT-Name">Name</a> gives the element

+type being declared.</p> <div class="constraint"><p class="prefix"><a name="EDUnique"></a><b>Validity

+constraint: Unique Element Type Declaration</b></p><p>No element type may

+be declared more than once.</p> </div> <p>Examples of element type declarations:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ELEMENT br EMPTY>

+&lt;!ELEMENT p (#PCDATA|emph)* >

+&lt;!ELEMENT %name.para; %content.para; >

+&lt;!ELEMENT container ANY></pre></td>

+</tr>

+</table> <div class="div3"> <h4><a name="sec-element-content"></a>3.2.1 Element

+Content</h4> <p>[<a title="Element content" name="dt-elemcontent">Definition</a>:

+An element <a title="Start-Tag" href="#dt-stag">type</a> has <b>element content</b>

+when elements of that type must contain only <a title="Parent/Child" href="#dt-parentchild">child</a>

+elements (no character data), optionally separated by white space (characters

+matching the nonterminal <a href="#NT-S">S</a>).][<a title="Content model"

+name="dt-content-model">Definition</a>: In this case, the constraint includes

+a <b>content model</b>, a simple grammar governing the allowed types of the

+child elements and the order in which they are allowed to appear.] The grammar

+is built on content particles (<a href="#NT-cp">cp</a>s), which consist of

+names, choice lists of content particles, or sequence lists of content particles:</p> <h5>Element-content

+Models</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-children"></a>[47]&nbsp;&nbsp;&nbsp;</td>

+<td><code>children</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>(<a href="#NT-choice">choice</a> | <a href="#NT-seq">seq</a>) ('?'

+| '*' | '+')?</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-cp"></a>[48]&nbsp;&nbsp;&nbsp;</td>

+<td><code>cp</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>(<a href="#NT-Name">Name</a> | <a href="#NT-choice">choice</a> | <a

+href="#NT-seq">seq</a>) ('?' | '*' | '+')?</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-choice"></a>[49]&nbsp;&nbsp;&nbsp;</td>

+<td><code>choice</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'(' <a href="#NT-S">S</a>? <a href="#NT-cp">cp</a> ( <a href="#NT-S">S</a>?

+'|' <a href="#NT-S">S</a>? <a href="#NT-cp">cp</a> )+ <a href="#NT-S">S</a>?

+')'</code></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#vc-PEinGroup">[VC: Proper Group/PE Nesting]</a></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-seq"></a>[50]&nbsp;&nbsp;&nbsp;</td>

+<td><code>seq</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'(' <a href="#NT-S">S</a>? <a href="#NT-cp">cp</a> ( <a href="#NT-S">S</a>?

+',' <a href="#NT-S">S</a>? <a href="#NT-cp">cp</a> )* <a href="#NT-S">S</a>?

+')'</code></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#vc-PEinGroup">[VC: Proper Group/PE Nesting]</a></td>

+</tr>

+</tbody></table> <p>where each <a href="#NT-Name">Name</a> is the type of

+an element which may appear as a <a title="Parent/Child" href="#dt-parentchild">child</a>.

+Any content particle in a choice list may appear in the <a title="Element content"

+href="#dt-elemcontent">element content</a> at the location where the choice

+list appears in the grammar; content particles occurring in a sequence list

+must each appear in the <a title="Element content" href="#dt-elemcontent">element

+content</a> in the order given in the list. The optional character following

+a name or list governs whether the element or the content particles in the

+list may occur one or more (<code>+</code>), zero or more (<code>*</code>),

+or zero or one times (<code>?</code>). The absence of such an operator means

+that the element or content particle must appear exactly once. This syntax

+and meaning are identical to those used in the productions in this specification.</p> <p>The

+content of an element matches a content model if and only if it is possible

+to trace out a path through the content model, obeying the sequence, choice,

+and repetition operators and matching each element in the content against

+an element type in the content model. <a title="For Compatibility" href="#dt-compat">For

+compatibility</a>, it is an error if an element in the document can match

+more than one occurrence of an element type in the content model. For more

+information, see <a href="#determinism"><b>E Deterministic Content Models</b></a>.</p>

+  <div class="constraint"><p class="prefix"><a name="vc-PEinGroup"></a><b>Validity

+constraint: Proper Group/PE Nesting</b></p><p>Parameter-entity <a title="Replacement Text"

+href="#dt-repltext">replacement text</a> must be properly nested with parenthesized

+groups. That is to say, if either of the opening or closing parentheses in

+a <a href="#NT-choice">choice</a>, <a href="#NT-seq">seq</a>, or <a href="#NT-Mixed">Mixed</a>

+construct is contained in the replacement text for a <a title="Parameter-entity reference"

+href="#dt-PERef">parameter entity</a>, both must be contained in the same

+replacement text.</p> <p><a title="For interoperability" href="#dt-interop">For

+interoperability</a>, if a parameter-entity reference appears in a <a href="#NT-choice">choice</a>, <a

+href="#NT-seq">seq</a>, or <a href="#NT-Mixed">Mixed</a> construct, its replacement

+text should contain at least one non-blank character, and neither the first

+nor last non-blank character of the replacement text should be a connector

+(<code>|</code> or <code>,</code>).</p> </div> <p>Examples of element-content

+models:</p> <table class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ELEMENT spec (front, body, back?)>

+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>

+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></pre></td>

+</tr>

+</table> </div> <div class="div3"> <h4><a name="sec-mixed-content"></a>3.2.2

+Mixed Content</h4> <p>[<a title="Mixed Content" name="dt-mixed">Definition</a>:

+An element <a title="Start-Tag" href="#dt-stag">type</a> has <b>mixed content</b>

+when elements of that type may contain character data, optionally interspersed

+with <a title="Parent/Child" href="#dt-parentchild">child</a> elements.] In

+this case, the types of the child elements may be constrained, but not their

+order or their number of occurrences:</p> <h5>Mixed-content Declaration</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-Mixed"></a>[51]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Mixed</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'(' <a href="#NT-S">S</a>? '#PCDATA' (<a href="#NT-S">S</a>? '|' <a

+href="#NT-S">S</a>? <a href="#NT-Name">Name</a>)* <a href="#NT-S">S</a>? ')*' </code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| '(' <a href="#NT-S">S</a>? '#PCDATA' <a href="#NT-S">S</a>? ')' </code></td>

+<td><a href="#vc-PEinGroup">[VC: Proper Group/PE Nesting]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#vc-MixedChildrenUnique">[VC: No Duplicate Types]</a></td>

+</tr>

+</tbody></table> <p>where the <a href="#NT-Name">Name</a>s give the types

+of elements that may appear as children. The keyword <b>#PCDATA</b> derives

+historically from the term "parsed character data."</p> <div class="constraint"><p

+class="prefix"><a name="vc-MixedChildrenUnique"></a><b>Validity constraint:

+No Duplicate Types</b></p><p>The same name must not appear more than once

+in a single mixed-content declaration.</p> </div> <p>Examples of mixed content

+declarations:</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>

+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >

+&lt;!ELEMENT b (#PCDATA)></pre></td>

+</tr>

+</table> </div> </div> <div class="div2"> <h3><a name="attdecls"></a>3.3 Attribute-List

+Declarations</h3> <p><a title="Attribute" href="#dt-attr">Attributes</a> are

+used to associate name-value pairs with <a title="Element" href="#dt-element">elements</a>.

+Attribute specifications may appear only within <a title="Start-Tag" href="#dt-stag">start-tags</a>

+and <a title="empty-element tag" href="#dt-eetag">empty-element tags</a>;

+thus, the productions used to recognize them appear in <a href="#sec-starttags"><b>3.1

+Start-Tags, End-Tags, and Empty-Element Tags</b></a>. Attribute-list declarations

+may be used:</p> <ul>

+<li><p>To define the set of attributes pertaining to a given element type.</p> </li>

+<li><p>To establish type constraints for these attributes.</p></li>

+<li><p>To provide <a title="Attribute Default" href="#dt-default">default

+values</a> for attributes.</p></li>

+</ul> <p>[<a title="Attribute-List Declaration" name="dt-attdecl">Definition</a>:

+ <b>Attribute-list declarations</b> specify the name, data type, and default

+value (if any) of each attribute associated with a given element type:]</p> <h5>Attribute-list

+Declaration</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-AttlistDecl"></a>[52]&nbsp;&nbsp;&nbsp;</td>

+<td><code>AttlistDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!ATTLIST' <a href="#NT-S">S</a> <a href="#NT-Name">Name</a> <a

+href="#NT-AttDef">AttDef</a>* <a href="#NT-S">S</a>? '>'</code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-AttDef"></a>[53]&nbsp;&nbsp;&nbsp;</td>

+<td><code>AttDef</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-S">S</a> <a href="#NT-Name">Name</a> <a href="#NT-S">S</a> <a

+href="#NT-AttType">AttType</a> <a href="#NT-S">S</a> <a href="#NT-DefaultDecl">DefaultDecl</a></code></td>

+</tr>

+</tbody></table> <p>The <a href="#NT-Name">Name</a> in the <a href="#NT-AttlistDecl">AttlistDecl</a>

+rule is the type of an element. At user option, an XML processor may issue

+a warning if attributes are declared for an element type not itself declared,

+but this is not an error. The <a href="#NT-Name">Name</a> in the <a href="#NT-AttDef">AttDef</a>

+rule is the name of the attribute.</p> <p>When more than one <a href="#NT-AttlistDecl">AttlistDecl</a>

+is provided for a given element type, the contents of all those provided are

+merged. When more than one definition is provided for the same attribute of

+a given element type, the first declaration is binding and later declarations

+are ignored. <a title="For interoperability" href="#dt-interop">For interoperability,</a>

+writers of DTDs may choose to provide at most one attribute-list declaration

+for a given element type, at most one attribute definition for a given attribute

+name in an attribute-list declaration, and at least one attribute definition

+in each attribute-list declaration. For interoperability, an XML processor

+may at user option issue a warning when more than one attribute-list declaration

+is provided for a given element type, or more than one attribute definition

+is provided for a given attribute, but this is not an error.</p> <div class="div3"> <h4><a

+name="sec-attribute-types"></a>3.3.1 Attribute Types</h4> <p>XML attribute

+types are of three kinds: a string type, a set of tokenized types, and enumerated

+types. The string type may take any literal string as a value; the tokenized

+types have varying lexical and semantic constraints. The validity constraints

+noted in the grammar are applied after the attribute value has been normalized

+as described in <a href="#attdecls"><b>3.3 Attribute-List Declarations</b></a>.</p> <h5>Attribute

+Types</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-AttType"></a>[54]&nbsp;&nbsp;&nbsp;</td>

+<td><code>AttType</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-StringType">StringType</a> | <a href="#NT-TokenizedType">TokenizedType</a>

+| <a href="#NT-EnumeratedType">EnumeratedType</a> </code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-StringType"></a>[55]&nbsp;&nbsp;&nbsp;</td>

+<td><code>StringType</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'CDATA'</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-TokenizedType"></a>[56]&nbsp;&nbsp;&nbsp;</td>

+<td><code>TokenizedType</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'ID'</code></td>

+<td><a href="#id">[VC: ID]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#one-id-per-el">[VC: One ID per Element Type]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#id-default">[VC: ID Attribute Default]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'IDREF'</code></td>

+<td><a href="#idref">[VC: IDREF]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'IDREFS'</code></td>

+<td><a href="#idref">[VC: IDREF]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'ENTITY'</code></td>

+<td><a href="#entname">[VC: Entity Name]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'ENTITIES'</code></td>

+<td><a href="#entname">[VC: Entity Name]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'NMTOKEN'</code></td>

+<td><a href="#nmtok">[VC: Name Token]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'NMTOKENS'</code></td>

+<td><a href="#nmtok">[VC: Name Token]</a></td>

+</tr>

+</tbody></table> <div class="constraint"><p class="prefix"><a name="id"></a><b>Validity

+constraint: ID</b></p><p>Values of type <b>ID</b> must match the <a href="#NT-Name">Name</a>

+production. A name must not appear more than once in an XML document as a

+value of this type; i.e., ID values must uniquely identify the elements which

+bear them.</p> </div> <div class="constraint"><p class="prefix"><a name="one-id-per-el"></a><b>Validity

+constraint: One ID per Element Type</b></p><p>No element type may have more

+than one ID attribute specified.</p> </div> <div class="constraint"><p class="prefix"><a

+name="id-default"></a><b>Validity constraint: ID Attribute Default</b></p><p>An

+ID attribute must have a declared default of <b>#IMPLIED</b> or <b>#REQUIRED</b>.</p> </div> <div

+class="constraint"><p class="prefix"><a name="idref"></a><b>Validity constraint:

+IDREF</b></p><p>Values of type <b>IDREF</b> must match the <a href="#NT-Name">Name</a>

+production, and values of type <b>IDREFS</b> must match <a href="#NT-Names">Names</a>;

+each <a href="#NT-Name">Name</a> must match the value of an ID attribute on

+some element in the XML document; i.e. <b>IDREF</b> values must match the

+value of some ID attribute.</p> </div> <div class="constraint"><p class="prefix"><a

+name="entname"></a><b>Validity constraint: Entity Name</b></p><p>Values of

+type <b>ENTITY</b> must match the <a href="#NT-Name">Name</a> production,

+values of type <b>ENTITIES</b> must match <a href="#NT-Names">Names</a>; each <a

+href="#NT-Name">Name</a> must match the name of an <a title="Unparsed Entity"

+href="#dt-unparsed">unparsed entity</a> declared in the <a title="Document Type Declaration"

+href="#dt-doctype">DTD</a>.</p> </div> <div class="constraint"><p class="prefix"><a

+name="nmtok"></a><b>Validity constraint: Name Token</b></p><p>Values of type <b>NMTOKEN</b>

+must match the <a href="#NT-Nmtoken">Nmtoken</a> production; values of type <b>NMTOKENS</b>

+must match <a title="" href="#NT-Nmtokens">Nmtokens</a>.</p> </div>  <p>[<a

+title="Enumerated Attribute Values" name="dt-enumerated">Definition</a>: <b>Enumerated

+attributes</b> can take one of a list of values provided in the declaration].

+There are two kinds of enumerated types:</p> <h5>Enumerated Attribute Types</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-EnumeratedType"></a>[57]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EnumeratedType</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-NotationType">NotationType</a> | <a href="#NT-Enumeration">Enumeration</a> </code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-NotationType"></a>[58]&nbsp;&nbsp;&nbsp;</td>

+<td><code>NotationType</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'NOTATION' <a href="#NT-S">S</a> '(' <a href="#NT-S">S</a>? <a href="#NT-Name">Name</a>

+(<a href="#NT-S">S</a>? '|' <a href="#NT-S">S</a>? <a href="#NT-Name">Name</a>)* <a

+href="#NT-S">S</a>? ')' </code></td>

+<td><a href="#notatn">[VC: Notation Attributes]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#OneNotationPer">[VC: One Notation Per Element Type]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#NoNotationEmpty">[VC: No Notation on Empty Element]</a></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-Enumeration"></a>[59]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Enumeration</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'(' <a href="#NT-S">S</a>? <a href="#NT-Nmtoken">Nmtoken</a> (<a

+href="#NT-S">S</a>? '|' <a href="#NT-S">S</a>? <a href="#NT-Nmtoken">Nmtoken</a>)* <a

+href="#NT-S">S</a>? ')'</code></td>

+<td><a href="#enum">[VC: Enumeration]</a></td>

+</tr>

+</tbody></table> <p>A <b>NOTATION</b> attribute identifies a <a title="Notation"

+href="#dt-notation">notation</a>, declared in the DTD with associated system

+and/or public identifiers, to be used in interpreting the element to which

+the attribute is attached.</p> <div class="constraint"><p class="prefix"><a

+name="notatn"></a><b>Validity constraint: Notation Attributes</b></p><p>Values

+of this type must match one of the <a href="#Notations"><cite>notation</cite></a>

+names included in the declaration; all notation names in the declaration must

+be declared.</p> </div> <div class="constraint"><p class="prefix"><a name="OneNotationPer"></a><b>Validity

+constraint: One Notation Per Element Type</b></p><p>No element type may have

+more than one <b>NOTATION</b> attribute specified.</p> </div> <div class="constraint"><p

+class="prefix"><a name="NoNotationEmpty"></a><b>Validity constraint: No Notation

+on Empty Element</b></p><p><a title="For Compatibility" href="#dt-compat">For

+compatibility</a>, an attribute of type <b>NOTATION</b> must not be declared

+on an element declared <b>EMPTY</b>.</p> </div> <div class="constraint"><p

+class="prefix"><a name="enum"></a><b>Validity constraint: Enumeration</b></p><p>Values

+of this type must match one of the <a href="#NT-Nmtoken">Nmtoken</a> tokens

+in the declaration.</p> </div> <p><a title="For interoperability" href="#dt-interop">For

+interoperability,</a> the same <a href="#NT-Nmtoken">Nmtoken</a> should not

+occur more than once in the enumerated attribute types of a single element

+type.</p> </div> <div class="div3"> <h4><a name="sec-attr-defaults"></a>3.3.2

+Attribute Defaults</h4> <p>An <a title="Attribute-List Declaration" href="#dt-attdecl">attribute

+declaration</a> provides information on whether the attribute's presence is

+required, and if not, how an XML processor should react if a declared attribute

+is absent in a document.</p> <h5>Attribute Defaults</h5><table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td><a name="NT-DefaultDecl"></a>[60]&nbsp;&nbsp;&nbsp;</td>

+<td><code>DefaultDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'#REQUIRED' |&nbsp;'#IMPLIED' </code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| (('#FIXED' S)? <a href="#NT-AttValue">AttValue</a>)</code></td>

+<td><a href="#RequiredAttr">[VC: Required Attribute]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#defattrvalid">[VC: Attribute Default Legal]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#CleanAttrVals">[WFC: No &lt; in Attribute Values]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#FixedAttr">[VC: Fixed Attribute Default]</a></td>

+</tr>

+</tbody></table> <p>In an attribute declaration, <b>#REQUIRED</b> means that

+the attribute must always be provided, <b>#IMPLIED</b> that no default value

+is provided.  [<a title="Attribute Default" name="dt-default">Definition</a>:

+If the declaration is neither <b>#REQUIRED</b> nor <b>#IMPLIED</b>, then the <a

+href="#NT-AttValue">AttValue</a> value contains the declared <b>default</b>

+value; the <b>#FIXED</b> keyword states that the attribute must always have

+the default value. If a default value is declared, when an XML processor encounters

+an omitted attribute, it is to behave as though the attribute were present

+with the declared default value.]</p> <div class="constraint"><p class="prefix"><a

+name="RequiredAttr"></a><b>Validity constraint: Required Attribute</b></p><p>If

+the default declaration is the keyword <b>#REQUIRED</b>, then the attribute

+must be specified for all elements of the type in the attribute-list declaration.</p> </div> <div

+class="constraint"><p class="prefix"><a name="defattrvalid"></a><b>Validity

+constraint: Attribute Default Legal</b></p><p>The declared default value must

+meet the lexical constraints of the declared attribute type.</p> </div> <div

+class="constraint"><p class="prefix"><a name="FixedAttr"></a><b>Validity constraint:

+Fixed Attribute Default</b></p><p>If an attribute has a default value declared

+with the <b>#FIXED</b> keyword, instances of that attribute must match the

+default value.</p> </div> <p>Examples of attribute-list declarations:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ATTLIST termdef

+          id      ID      #REQUIRED

+          name    CDATA   #IMPLIED>

+&lt;!ATTLIST list

+          type    (bullets|ordered|glossary)  "ordered">

+&lt;!ATTLIST form

+          method  CDATA   #FIXED "POST"></pre></td>

+</tr>

+</table> </div> <div class="div3"> <h4><a name="AVNormalize"></a>3.3.3 Attribute-Value

+Normalization</h4> <p>Before the value of an attribute is passed to the application

+or checked for validity, the XML processor must normalize the attribute value

+by applying the algorithm below, or by using some other method such that the

+value passed to the application is the same as that produced by the algorithm.</p> <ol>

+<li><p>All line breaks must have been normalized on input to #xA as described

+in <a href="#sec-line-ends"><b>2.11 End-of-Line Handling</b></a>, so the rest

+of this algorithm operates on text normalized in this way.</p></li>

+<li><p>Begin with a normalized value consisting of the empty string.</p> </li>

+<li><p>For each character, entity reference, or character reference in the

+unnormalized attribute value, beginning with the first and continuing to the

+last, do the following:</p> <ul>

+<li><p>For a character reference, append the referenced character to the normalized

+value.</p></li>

+<li><p>For an entity reference, recursively apply step 3 of this algorithm

+to the replacement text of the entity.</p></li>

+<li><p>For a white space character (#x20, #xD, #xA, #x9), append a space character

+(#x20) to the normalized value.</p></li>

+<li><p>For another character, append the character to the normalized value.</p> </li>

+</ul> </li>

+</ol> <p>If the attribute type is not CDATA, then the XML processor must further

+process the normalized attribute value by discarding any leading and trailing

+space (#x20) characters, and by replacing sequences of space (#x20) characters

+by a single space (#x20) character.</p> <p>Note that if the unnormalized attribute

+value contains a character reference to a white space character other than

+space (#x20), the normalized value contains the referenced character itself

+(#xD, #xA or #x9). This contrasts with the case where the unnormalized value

+contains a white space character (not a reference), which is replaced with

+a space character (#x20) in the normalized value and also contrasts with the

+case where the unnormalized value contains an entity reference whose replacement

+text contains a white space character; being recursively processed, the white

+space character is replaced with a space character (#x20) in the normalized

+value.</p> <p>All attributes for which no declaration has been read should

+be treated by a non-validating processor as if declared <b>CDATA</b>.</p> <p>Following

+are examples of attribute normalization. Given the following declarations:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY d "&amp;#xD;">

+&lt;!ENTITY a "&amp;#xA;">

+&lt;!ENTITY da "&amp;#xD;&amp;#xA;"></pre></td>

+</tr>

+</table> <p>the attribute specifications in the left column below would be

+normalized to the character sequences of the middle column if the attribute <code>a</code>

+is declared <b>NMTOKENS</b> and to those of the right columns if <code>a</code>

+is declared <b>CDATA</b>.</p> <table border="1" frame="border"><thead>

+<tr>

+<th rowspan="1" colspan="1">Attribute specification</th>

+<th rowspan="1" colspan="1">a is NMTOKENS</th>

+<th rowspan="1" colspan="1">a is CDATA</th>

+</tr>

+</thead><tbody>

+<tr>

+<td rowspan="1" colspan="1"><table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>a="

+

+xyz"</pre></td>

+</tr>

+</table></td>

+<td rowspan="1" colspan="1"><code>x y z</code></td>

+<td rowspan="1" colspan="1"><code>#x20 #x20 x y z</code></td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>a="&amp;d;&amp;d;A&amp;a;&amp;a;B&amp;da;"</pre></td>

+</tr>

+</table></td>

+<td rowspan="1" colspan="1"><code>A #x20 B</code></td>

+<td rowspan="1" colspan="1"><code>#x20 #x20 A #x20 #x20 B #x20 #x20</code></td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>a=

+"&amp;#xd;&amp;#xd;A&amp;#xa;&amp;#xa;B&amp;#xd;&amp;#xa;"</pre></td>

+</tr>

+</table></td>

+<td rowspan="1" colspan="1"><code>#xD #xD A #xA #xA B #xD #xA</code></td>

+<td rowspan="1" colspan="1"><code>#xD #xD A #xA #xA B #xD #xD</code></td>

+</tr>

+</tbody></table> <p>Note that the last example is invalid (but well-formed)

+if <code>a</code> is declared to be of type <b>NMTOKENS</b>.</p> </div> </div> <div

+class="div2"> <h3><a name="sec-condition-sect"></a>3.4 Conditional Sections</h3> <p>[<a

+title="conditional section" name="dt-cond-section">Definition</a>:  <b>Conditional

+sections</b> are portions of the <a title="Document Type Declaration" href="#dt-doctype">document

+type declaration external subset</a> which are included in, or excluded from,

+the logical structure of the DTD based on the keyword which governs them.]</p> <h5>Conditional

+Section</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-conditionalSect"></a>[61]&nbsp;&nbsp;&nbsp;</td>

+<td><code>conditionalSect</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-includeSect">includeSect</a> | <a href="#NT-ignoreSect">ignoreSect</a> </code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-includeSect"></a>[62]&nbsp;&nbsp;&nbsp;</td>

+<td><code>includeSect</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;![' S? 'INCLUDE' S? '[' <a href="#NT-extSubsetDecl">extSubsetDecl</a>

+']]&gt;' </code></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#condsec-nesting">[VC: Proper Conditional Section/PE Nesting]</a></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-ignoreSect"></a>[63]&nbsp;&nbsp;&nbsp;</td>

+<td><code>ignoreSect</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;![' S? 'IGNORE' S? '[' <a href="#NT-ignoreSectContents">ignoreSectContents</a>*

+']]&gt;'</code></td>

+<td><i>/*  */</i></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#condsec-nesting">[VC: Proper Conditional Section/PE Nesting]</a></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-ignoreSectContents"></a>[64]&nbsp;&nbsp;&nbsp;</td>

+<td><code>ignoreSectContents</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Ignore">Ignore</a> ('&lt;![' <a href="#NT-ignoreSectContents">ignoreSectContents</a>

+']]&gt;' <a href="#NT-Ignore">Ignore</a>)*</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Ignore"></a>[65]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Ignore</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-Char">Char</a>* - (<a href="#NT-Char">Char</a>* ('&lt;!['

+| ']]&gt;') <a href="#NT-Char">Char</a>*) </code></td>

+</tr>

+</tbody></table> <div class="constraint"><p class="prefix"><a name="condsec-nesting"></a><b>Validity

+constraint: Proper Conditional Section/PE Nesting</b></p><p>If any of the

+"<code>&lt;![</code>", "<code>[</code>", or "<code>]]&gt;</code>" of a conditional

+section is contained in the replacement text for a parameter-entity reference,

+all of them must be contained in the same replacement text.</p> </div> <p>Like

+the internal and external DTD subsets, a conditional section may contain one

+or more complete declarations, comments, processing instructions, or nested

+conditional sections, intermingled with white space.</p> <p>If the keyword

+of the conditional section is <b>INCLUDE</b>, then the contents of the conditional

+section are part of the DTD. If the keyword of the conditional section is <b>IGNORE</b>,

+then the contents of the conditional section are not logically part of the

+DTD.  If a conditional section with a keyword of <b>INCLUDE</b> occurs within

+a larger conditional section with a keyword of <b>IGNORE</b>, both the outer

+and the inner conditional sections are ignored. The contents of an ignored

+conditional section are parsed by ignoring all characters after the "<code>[</code>"

+following the keyword, except conditional section starts "<code>&lt;![</code>"

+and ends "<code>]]&gt;</code>", until the matching conditional section end

+is found. Parameter entity references are not recognized in this process.</p> <p>If

+the keyword of the conditional section is a parameter-entity reference, the

+parameter entity must be replaced by its content before the processor decides

+whether to include or ignore the conditional section.</p> <p>An example:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY % draft 'INCLUDE' >

+&lt;!ENTITY % final 'IGNORE' >

+

+&lt;![%draft;[

+&lt;!ELEMENT book (comments*, title, body, supplements?)>

+]]&gt;

+&lt;![%final;[

+&lt;!ELEMENT book (title, body, supplements?)>

+]]&gt;</pre></td>

+</tr>

+</table> </div>  </div>  <div class="div1"> <h2><a name="sec-physical-struct"></a>4

+Physical Structures</h2> <p>[<a title="Entity" name="dt-entity">Definition</a>:

+An XML document may consist of one or many storage units. These are called <b>entities</b>;

+they all have <b>content</b> and are all (except for the <a title="Document Entity"

+href="#dt-docent">document entity</a> and the <a title="Document Type Declaration"

+href="#dt-doctype">external DTD subset</a>) identified by entity <b>name</b>.]

+Each XML document has one entity called the <a title="Document Entity" href="#dt-docent">document

+entity</a>, which serves as the starting point for the <a title="XML Processor"

+href="#dt-xml-proc">XML processor</a> and may contain the whole document.</p> <p>Entities

+may be either parsed or unparsed. [<a title="Text Entity" name="dt-parsedent">Definition</a>:

+A <b>parsed entity's</b> contents are referred to as its <a title="Replacement Text"

+href="#dt-repltext">replacement text</a>; this <a title="Text" href="#dt-text">text</a>

+is considered an integral part of the document.]</p> <p>[<a title="Unparsed Entity"

+name="dt-unparsed">Definition</a>: An <b>unparsed entity</b> is a resource

+whose contents may or may not be <a title="Text" href="#dt-text">text</a>,

+and if text, may be other than XML. Each unparsed entity has an associated <a

+title="Notation" href="#dt-notation">notation</a>, identified by name. Beyond

+a requirement that an XML processor make the identifiers for the entity and

+notation available to the application, XML places no constraints on the contents

+of unparsed entities.]</p> <p>Parsed entities are invoked by name using entity

+references; unparsed entities by name, given in the value of <b>ENTITY</b>

+or <b>ENTITIES</b> attributes.</p> <p>[<a title="general entity" name="gen-entity">Definition</a>: <b>General

+entities</b> are entities for use within the document content. In this specification,

+general entities are sometimes referred to with the unqualified term <em>entity</em>

+when this leads to no ambiguity.] [<a title="Parameter entity" name="dt-PE">Definition</a>: <b>Parameter

+entities</b> are parsed entities for use within the DTD.] These two types

+of entities use different forms of reference and are recognized in different

+contexts. Furthermore, they occupy different namespaces; a parameter entity

+and a general entity with the same name are two distinct entities.</p> <div

+class="div2"> <h3><a name="sec-references"></a>4.1 Character and Entity References</h3> <p>[<a

+title="Character Reference" name="dt-charref">Definition</a>:  A <b>character

+reference</b> refers to a specific character in the ISO/IEC 10646 character

+set, for example one not directly accessible from available input devices.]</p> <h5>Character

+Reference</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-CharRef"></a>[66]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CharRef</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&amp;#' [0-9]+ ';' </code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| '&amp;#x' [0-9a-fA-F]+ ';'</code></td>

+<td><a href="#wf-Legalchar">[WFC: Legal Character]</a></td>

+</tr>

+</tbody></table> <div class="constraint"><p class="prefix"><a name="wf-Legalchar"></a><b>Well-formedness

+constraint: Legal Character</b></p><p>Characters referred to using character

+references must match the production for <a title="" href="#NT-Char">Char</a>.</p> </div> <p>If

+the character reference begins with "<code>&amp;#x</code>", the digits and

+letters up to the terminating <code>;</code> provide a hexadecimal representation

+of the character's code point in ISO/IEC 10646. If it begins just with "<code>&amp;#</code>",

+the digits up to the terminating <code>;</code> provide a decimal representation

+of the character's code point.</p> <p>[<a title="Entity Reference" name="dt-entref">Definition</a>:

+An <b>entity reference</b> refers to the content of a named entity.] [<a title="General Entity Reference"

+name="dt-GERef">Definition</a>: References to parsed general entities use

+ampersand (<code>&amp;</code>) and semicolon (<code>;</code>) as delimiters.]

+[<a title="Parameter-entity reference" name="dt-PERef">Definition</a>:  <b>Parameter-entity

+references</b> use percent-sign (<code>%</code>) and semicolon (<code>;</code>)

+as delimiters.]</p> <h5>Entity Reference</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-Reference"></a>[67]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Reference</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-EntityRef">EntityRef</a> | <a href="#NT-CharRef">CharRef</a></code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-EntityRef"></a>[68]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EntityRef</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&amp;' <a href="#NT-Name">Name</a> ';'</code></td>

+<td><a href="#wf-entdeclared">[WFC: Entity Declared]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#vc-entdeclared">[VC: Entity Declared]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#textent">[WFC: Parsed Entity]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#norecursion">[WFC: No Recursion]</a></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-PEReference"></a>[69]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PEReference</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'%' <a href="#NT-Name">Name</a> ';'</code></td>

+<td><a href="#vc-entdeclared">[VC: Entity Declared]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#norecursion">[WFC: No Recursion]</a></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td></td>

+<td><a href="#indtd">[WFC: In DTD]</a></td>

+</tr>

+</tbody></table> <div class="constraint"><p class="prefix"><a name="wf-entdeclared"></a><b>Well-formedness

+constraint: Entity Declared</b></p><p>In a document without any DTD, a document

+with only an internal DTD subset which contains no parameter entity references,

+or a document with "<code>standalone='yes'</code>", for an entity reference

+that does not occur within the external subset or a parameter entity, the <a

+href="#NT-Name">Name</a> given in the entity reference must <a title="match"

+href="#dt-match">match</a> that in an <a href="#sec-entity-decl"><cite>entity

+declaration</cite></a> that does not occur within the external subset or a

+parameter entity, except that well-formed documents need not declare any of

+the following entities: <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>.

+The declaration of a general entity must precede any reference to it which

+appears in a default value in an attribute-list declaration.</p> <p>Note that

+if entities are declared in the external subset or in external parameter entities,

+a non-validating processor is <a href="#include-if-valid"><cite>not obligated

+to</cite></a> read and process their declarations; for such documents, the

+rule that an entity must be declared is a well-formedness constraint only

+if <a href="#sec-rmd"><cite>standalone='yes'</cite></a>.</p> </div> <div class="constraint"><p

+class="prefix"><a name="vc-entdeclared"></a><b>Validity constraint: Entity

+Declared</b></p><p>In a document with an external subset or external parameter

+entities with "<code>standalone='no'</code>", the <a href="#NT-Name">Name</a>

+given in the entity reference must <a title="match" href="#dt-match">match</a>

+that in an <a href="#sec-entity-decl"><cite>entity declaration</cite></a>.

+For interoperability, valid documents should declare the entities <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code

+>, in the form specified in <a href="#sec-predefined-ent"><b>4.6 Predefined

+Entities</b></a>. The declaration of a parameter entity must precede any reference

+to it. Similarly, the declaration of a general entity must precede any attribute-list

+declaration containing a default value with a direct or indirect reference

+to that general entity.</p> </div>  <div class="constraint"><p class="prefix"><a

+name="textent"></a><b>Well-formedness constraint: Parsed Entity</b></p><p>An

+entity reference must not contain the name of an <a title="Unparsed Entity"

+href="#dt-unparsed">unparsed entity</a>. Unparsed entities may be referred

+to only in <a title="Attribute Value" href="#dt-attrval">attribute values</a>

+declared to be of type <b>ENTITY</b> or <b>ENTITIES</b>.</p> </div> <div class="constraint"><p

+class="prefix"><a name="norecursion"></a><b>Well-formedness constraint: No

+Recursion</b></p><p>A parsed entity must not contain a recursive reference

+to itself, either directly or indirectly.</p> </div> <div class="constraint"><p

+class="prefix"><a name="indtd"></a><b>Well-formedness constraint: In DTD</b></p><p>Parameter-entity

+references may only appear in the <a title="Document Type Declaration" href="#dt-doctype">DTD</a>.</p> </div> <p>Examples

+of character and entity references:</p> <table class="eg" width="100%" border="1"

+cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>Type &lt;key>less-than&lt;/key> (&amp;#x3C;) to save options.

+This document was prepared on &amp;docdate; and

+is classified &amp;security-level;.</pre></td>

+</tr>

+</table> <p>Example of a parameter-entity reference:</p> <table class="eg"

+width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!-- declare the parameter entity "ISOLat2"... -->

+&lt;!ENTITY % ISOLat2

+         SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >

+&lt;!-- ... now reference it. -->

+%ISOLat2;</pre></td>

+</tr>

+</table> </div> <div class="div2"> <h3><a name="sec-entity-decl"></a>4.2 Entity

+Declarations</h3> <p>[<a title="entity declaration" name="dt-entdecl">Definition</a>:

+ Entities are declared thus:]</p> <h5>Entity Declaration</h5><table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td><a name="NT-EntityDecl"></a>[70]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EntityDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-GEDecl">GEDecl</a> | <a href="#NT-PEDecl">PEDecl</a></code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-GEDecl"></a>[71]&nbsp;&nbsp;&nbsp;</td>

+<td><code>GEDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!ENTITY' <a href="#NT-S">S</a> <a href="#NT-Name">Name</a> <a

+href="#NT-S">S</a> <a href="#NT-EntityDef">EntityDef</a> <a href="#NT-S">S</a>?

+'>'</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-PEDecl"></a>[72]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PEDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!ENTITY' <a href="#NT-S">S</a> '%' <a href="#NT-S">S</a> <a

+href="#NT-Name">Name</a> <a href="#NT-S">S</a> <a href="#NT-PEDef">PEDef</a> <a

+href="#NT-S">S</a>? '>'</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-EntityDef"></a>[73]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EntityDef</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-EntityValue">EntityValue</a> | (<a href="#NT-ExternalID">ExternalID</a> <a

+href="#NT-NDataDecl">NDataDecl</a>?)</code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-PEDef"></a>[74]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PEDef</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-EntityValue">EntityValue</a> | <a href="#NT-ExternalID">ExternalID</a></code></td>

+</tr>

+</tbody></table> <p>The <a href="#NT-Name">Name</a> identifies the entity

+in an <a title="Entity Reference" href="#dt-entref">entity reference</a> or,

+in the case of an unparsed entity, in the value of an <b>ENTITY</b> or <b>ENTITIES</b>

+attribute. If the same entity is declared more than once, the first declaration

+encountered is binding; at user option, an XML processor may issue a warning

+if entities are declared multiple times.</p> <div class="div3"> <h4><a name="sec-internal-ent"></a>4.2.1

+Internal Entities</h4> <p>[<a title="Internal Entity Replacement Text" name="dt-internent">Definition</a>:

+If the entity definition is an <a href="#NT-EntityValue">EntityValue</a>,

+the defined entity is called an <b>internal entity</b>. There is no separate

+physical storage object, and the content of the entity is given in the declaration.]

+Note that some processing of entity and character references in the <a title="Literal Entity Value"

+href="#dt-litentval">literal entity value</a> may be required to produce the

+correct <a title="Replacement Text" href="#dt-repltext">replacement text</a>:

+see <a href="#intern-replacement"><b>4.5 Construction of Internal Entity Replacement

+Text</b></a>.</p> <p>An internal entity is a <a title="Text Entity" href="#dt-parsedent">parsed

+entity</a>.</p> <p>Example of an internal entity declaration:</p> <table class="eg"

+width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY Pub-Status "This is a pre-release of the

+ specification."></pre></td>

+</tr>

+</table> </div> <div class="div3"> <h4><a name="sec-external-ent"></a>4.2.2

+External Entities</h4> <p>[<a title="External Entity" name="dt-extent">Definition</a>:

+If the entity is not internal, it is an <b>external entity</b>, declared as

+follows:]</p> <h5>External Entity Declaration</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-ExternalID"></a>[75]&nbsp;&nbsp;&nbsp;</td>

+<td><code>ExternalID</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'SYSTEM' <a href="#NT-S">S</a> <a href="#NT-SystemLiteral">SystemLiteral</a></code></td>

+</tr>

+<tr valign="baseline">

+<td></td>

+<td></td>

+<td></td>

+<td><code>| 'PUBLIC' <a href="#NT-S">S</a> <a href="#NT-PubidLiteral">PubidLiteral</a> <a

+href="#NT-S">S</a> <a href="#NT-SystemLiteral">SystemLiteral</a> </code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-NDataDecl"></a>[76]&nbsp;&nbsp;&nbsp;</td>

+<td><code>NDataDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-S">S</a> 'NDATA' <a href="#NT-S">S</a> <a href="#NT-Name">Name</a></code></td>

+<td><a href="#not-declared">[VC: Notation Declared]</a></td>

+</tr>

+</tbody></table> <p>If the <a href="#NT-NDataDecl">NDataDecl</a> is present,

+this is a general <a title="Unparsed Entity" href="#dt-unparsed">unparsed

+entity</a>; otherwise it is a parsed entity.</p> <div class="constraint"><p

+class="prefix"><a name="not-declared"></a><b>Validity constraint: Notation

+Declared</b></p><p>The <a href="#NT-Name">Name</a> must match the declared

+name of a <a title="Notation" href="#dt-notation">notation</a>.</p> </div> <p>[<a

+title="System Identifier" name="dt-sysid">Definition</a>: The <a href="#NT-SystemLiteral">SystemLiteral</a>

+is called the entity's <b>system identifier</b>. It is a URI reference (as

+defined in <a href="#rfc2396">[IETF RFC 2396]</a>, updated by <a href="#rfc2732">[IETF

+RFC 2732]</a>), meant to be dereferenced to obtain input for the XML processor

+to construct the entity's replacement text.] It is an error for a fragment

+identifier (beginning with a <code>#</code> character) to be part of a system

+identifier. Unless otherwise provided by information outside the scope of

+this specification (e.g. a special XML element type defined by a particular

+DTD, or a processing instruction defined by a particular application specification),

+relative URIs are relative to the location of the resource within which the

+entity declaration occurs. A URI might thus be relative to the <a title="Document Entity"

+href="#dt-docent">document entity</a>, to the entity containing the <a title="Document Type Declaration"

+href="#dt-doctype">external DTD subset</a>, or to some other <a title="External Entity"

+href="#dt-extent">external parameter entity</a>.</p> <p>URI references require

+encoding and escaping of certain characters. The disallowed characters include

+all non-ASCII characters, plus the excluded characters listed in Section 2.4

+of <a href="#rfc2396">[IETF RFC 2396]</a>, except for the number sign (<code>#</code>)

+and percent sign (<code>%</code>) characters and the square bracket characters

+re-allowed in <a href="#rfc2732">[IETF RFC 2732]</a>. Disallowed characters

+must be escaped as follows:</p> <ol>

+<li><p>Each disallowed character is converted to UTF-8 <a href="#rfc2279">[IETF

+RFC 2279]</a> as one or more bytes.</p></li>

+<li><p>Any octets corresponding to a disallowed character are escaped with

+the URI escaping mechanism (that is, converted to <code>%</code><var>HH</var>,

+where HH is the hexadecimal notation of the byte value).</p></li>

+<li><p>The original character is replaced by the resulting character sequence.</p> </li>

+</ol> <p>[<a title="Public identifier" name="dt-pubid">Definition</a>:  In

+addition to a system identifier, an external identifier may include a <b>public

+identifier</b>.] An XML processor attempting to retrieve the entity's content

+may use the public identifier to try to generate an alternative URI reference.

+If the processor is unable to do so, it must use the URI reference specified

+in the system literal. Before a match is attempted, all strings of white space

+in the public identifier must be normalized to single space characters (#x20),

+and leading and trailing white space must be removed.</p> <p>Examples of external

+entity declarations:</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY open-hatch

+         SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">

+&lt;!ENTITY open-hatch

+         PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"

+         "http://www.textuality.com/boilerplate/OpenHatch.xml">

+&lt;!ENTITY hatch-pic

+         SYSTEM "../grafix/OpenHatch.gif"

+         NDATA gif ></pre></td>

+</tr>

+</table> </div> </div> <div class="div2"> <h3><a name="TextEntities"></a>4.3

+Parsed Entities</h3> <div class="div3"> <h4><a name="sec-TextDecl"></a>4.3.1

+The Text Declaration</h4> <p>External parsed entities should each begin with

+a <b>text declaration</b>.</p> <h5>Text Declaration</h5><table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td><a name="NT-TextDecl"></a>[77]&nbsp;&nbsp;&nbsp;</td>

+<td><code>TextDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;?xml' <a href="#NT-VersionInfo">VersionInfo</a>? <a href="#NT-EncodingDecl">EncodingDecl</a> <a

+href="#NT-S">S</a>? '?>'</code></td>

+</tr>

+</tbody></table> <p>The text declaration must be provided literally, not by

+reference to a parsed entity. No text declaration may appear at any position

+other than the beginning of an external parsed entity. The text declaration

+in an external parsed entity is not considered part of its <a title="Replacement Text"

+href="#dt-repltext">replacement text</a>.</p> </div> <div class="div3"> <h4><a

+name="wf-entities"></a>4.3.2 Well-Formed Parsed Entities</h4> <p>The document

+entity is well-formed if it matches the production labeled <a href="#NT-document">document</a>.

+An external general parsed entity is well-formed if it matches the production

+labeled <a href="#NT-extParsedEnt">extParsedEnt</a>. All external parameter

+entities are well-formed by definition.</p> <h5>Well-Formed External Parsed

+Entity</h5><table class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-extParsedEnt"></a>[78]&nbsp;&nbsp;&nbsp;</td>

+<td><code>extParsedEnt</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-TextDecl">TextDecl</a>? <a href="#NT-content">content</a></code></td>

+</tr>

+</tbody></table> <p>An internal general parsed entity is well-formed if its

+replacement text matches the production labeled <a href="#NT-content">content</a>.

+All internal parameter entities are well-formed by definition.</p> <p>A consequence

+of well-formedness in entities is that the logical and physical structures

+in an XML document are properly nested; no <a title="Start-Tag" href="#dt-stag">start-tag</a>, <a

+title="End Tag" href="#dt-etag">end-tag</a>, <a title="Empty" href="#dt-empty">empty-element

+tag</a>, <a title="Element" href="#dt-element">element</a>, <a title="Comment"

+href="#dt-comment">comment</a>, <a title="Processing instruction" href="#dt-pi">processing

+instruction</a>, <a title="Character Reference" href="#dt-charref">character

+reference</a>, or <a title="Entity Reference" href="#dt-entref">entity reference</a>

+can begin in one entity and end in another.</p> </div> <div class="div3"> <h4><a

+name="charencoding"></a>4.3.3 Character Encoding in Entities</h4> <p>Each

+external parsed entity in an XML document may use a different encoding for

+its characters. All XML processors must be able to read entities in both the

+UTF-8 and UTF-16 encodings. The terms "UTF-8" and "UTF-16" in this specification

+do not apply to character encodings with any other labels, even if the encodings

+or labels are very similar to UTF-8 or UTF-16.</p> <p>Entities encoded in

+UTF-16 must begin with the Byte Order Mark described by Annex F of <a href="#ISO10646">[ISO/IEC

+10646]</a>, Annex H of <a href="#ISO10646-2000">[ISO/IEC 10646-2000]</a>,

+section 2.4 of <a href="#Unicode">[Unicode]</a>, and section 2.7 of <a href="#Unicode3">[Unicode3]</a>

+(the ZERO WIDTH NO-BREAK SPACE character, #xFEFF). This is an encoding signature,

+not part of either the markup or the character data of the XML document. XML

+processors must be able to use this character to differentiate between UTF-8

+and UTF-16 encoded documents.</p> <p>Although an XML processor is required

+to read only entities in the UTF-8 and UTF-16 encodings, it is recognized

+that other encodings are used around the world, and it may be desired for

+XML processors to read entities that use them. In the absence of external

+character encoding information (such as MIME headers), parsed entities which

+are stored in an encoding other than UTF-8 or UTF-16 must begin with a text

+declaration (see <a href="#sec-TextDecl"><b>4.3.1 The Text Declaration</b></a>)

+containing an encoding declaration:</p> <h5>Encoding Declaration</h5><table

+class="scrap"><tbody>

+<tr valign="baseline">

+<td><a name="NT-EncodingDecl"></a>[80]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EncodingDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-S">S</a> 'encoding' <a href="#NT-Eq">Eq</a> ('"' <a

+href="#NT-EncName">EncName</a> '"' | "'" <a href="#NT-EncName">EncName</a>

+"'" ) </code></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-EncName"></a>[81]&nbsp;&nbsp;&nbsp;</td>

+<td><code>EncName</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>[A-Za-z] ([A-Za-z0-9._] | '-')*</code></td>

+<td><i>/* Encoding name contains only Latin characters */</i></td>

+</tr>

+</tbody></table> <p>In the <a title="Document Entity" href="#dt-docent">document

+entity</a>, the encoding declaration is part of the <a title="XML Declaration"

+href="#dt-xmldecl">XML declaration</a>. The <a href="#NT-EncName">EncName</a>

+is the name of the encoding used.</p>  <p>In an encoding declaration, the

+values "<code>UTF-8</code>", "<code>UTF-16</code>", "<code>ISO-10646-UCS-2</code>",

+and "<code>ISO-10646-UCS-4</code>" should be used for the various encodings

+and transformations of Unicode / ISO/IEC 10646, the values "<code>ISO-8859-1</code>",

+"<code>ISO-8859-2</code>", ... "<code>ISO-8859-</code><var>n</var>" (where <var>n</var>

+is the part number) should be used for the parts of ISO 8859, and the values

+"<code>ISO-2022-JP</code>", "<code>Shift_JIS</code>", and "<code>EUC-JP</code>"

+should be used for the various encoded forms of JIS X-0208-1997. It is recommended

+that character encodings registered (as <em>charset</em>s) with the Internet

+Assigned Numbers Authority <a href="#IANA">[IANA-CHARSETS]</a>, other than

+those just listed, be referred to using their registered names; other encodings

+should use names starting with an "x-" prefix. XML processors should match

+character encoding names in a case-insensitive way and should either interpret

+an IANA-registered name as the encoding registered at IANA for that name or

+treat it as unknown (processors are, of course, not required to support all

+IANA-registered encodings).</p> <p>In the absence of information provided

+by an external transport protocol (e.g. HTTP or MIME), it is an <a title="Error"

+href="#dt-error">error</a> for an entity including an encoding declaration

+to be presented to the XML processor in an encoding other than that named

+in the declaration, or for an entity which begins with neither a Byte Order

+Mark nor an encoding declaration to use an encoding other than UTF-8. Note

+that since ASCII is a subset of UTF-8, ordinary ASCII entities do not strictly

+need an encoding declaration.</p> <p>It is a fatal error for a <a href="#NT-TextDecl">TextDecl</a>

+to occur other than at the beginning of an external entity.</p> <p>It is a <a

+title="Fatal Error" href="#dt-fatal">fatal error</a> when an XML processor

+encounters an entity with an encoding that it is unable to process. It is

+a fatal error if an XML entity is determined (via default, encoding declaration,

+or higher-level protocol) to be in a certain encoding but contains octet sequences

+that are not legal in that encoding. It is also a fatal error if an XML entity

+contains no encoding declaration and its content is not legal UTF-8 or UTF-16.</p> <p>Examples

+of text declarations containing encoding declarations:</p> <table class="eg"

+width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;?xml encoding='UTF-8'?>

+&lt;?xml encoding='EUC-JP'?></pre></td>

+</tr>

+</table> </div> </div> <div class="div2"> <h3><a name="entproc"></a>4.4 XML

+Processor Treatment of Entities and References</h3> <p>The table below summarizes

+the contexts in which character references, entity references, and invocations

+of unparsed entities might appear and the required behavior of an <a title="XML Processor"

+href="#dt-xml-proc">XML processor</a> in each case. The labels in the leftmost

+column describe the recognition context: </p><dl>

+<dt class="label">Reference in Content</dt>

+<dd> <p>as a reference anywhere after the <a title="Start-Tag" href="#dt-stag">start-tag</a>

+and before the <a title="End Tag" href="#dt-etag">end-tag</a> of an element;

+corresponds to the nonterminal <a href="#NT-content">content</a>.</p> </dd>

+<dt class="label">Reference in Attribute Value</dt>

+<dd> <p>as a reference within either the value of an attribute in a <a title="Start-Tag"

+href="#dt-stag">start-tag</a>, or a default value in an <a title="Attribute-List Declaration"

+href="#dt-attdecl">attribute declaration</a>; corresponds to the nonterminal <a

+href="#NT-AttValue">AttValue</a>.</p> </dd>

+<dt class="label">Occurs as Attribute Value</dt>

+<dd> <p>as a <a href="#NT-Name">Name</a>, not a reference, appearing either

+as the value of an attribute which has been declared as type <b>ENTITY</b>,

+or as one of the space-separated tokens in the value of an attribute which

+has been declared as type <b>ENTITIES</b>.</p> </dd>

+<dt class="label">Reference in Entity Value</dt>

+<dd> <p>as a reference within a parameter or internal entity's <a title="Literal Entity Value"

+href="#dt-litentval">literal entity value</a> in the entity's declaration;

+corresponds to the nonterminal <a href="#NT-EntityValue">EntityValue</a>.</p> </dd>

+<dt class="label">Reference in DTD</dt>

+<dd> <p>as a reference within either the internal or external subsets of the <a

+title="Document Type Declaration" href="#dt-doctype">DTD</a>, but outside

+of an <a href="#NT-EntityValue">EntityValue</a>, <a href="#NT-AttValue">AttValue</a>, <a

+href="#NT-PI">PI</a>, <a href="#NT-Comment">Comment</a>, <a href="#NT-SystemLiteral">SystemLiteral</a>, <a

+href="#NT-PubidLiteral">PubidLiteral</a>, or the contents of an ignored conditional

+section (see <a href="#sec-condition-sect"><b>3.4 Conditional Sections</b></a>).</p> <p>.</p> </dd>

+</dl><p></p> <table border="1" frame="border" cellpadding="7"><tbody align="center">

+<tr>

+<td rowspan="2" colspan="1"></td>

+<td rowspan="1" colspan="4" align="center" valign="bottom">Entity Type</td>

+<td rowspan="2" colspan="1" align="center">Character</td>

+</tr>

+<tr align="center" valign="bottom">

+<td rowspan="1" colspan="1">Parameter</td>

+<td rowspan="1" colspan="1">Internal General</td>

+<td rowspan="1" colspan="1">External Parsed General</td>

+<td rowspan="1" colspan="1">Unparsed</td>

+</tr>

+<tr align="center" valign="middle">

+<td rowspan="1" colspan="1" align="right">Reference in Content</td>

+<td rowspan="1" colspan="1"><a href="#not-recognized"><cite>Not recognized</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#included"><cite>Included</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#include-if-valid"><cite>Included if

+validating</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#included"><cite>Included</cite></a></td>

+</tr>

+<tr align="center" valign="middle">

+<td rowspan="1" colspan="1" align="right">Reference in Attribute Value</td>

+<td rowspan="1" colspan="1"><a href="#not-recognized"><cite>Not recognized</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#inliteral"><cite>Included in literal</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#included"><cite>Included</cite></a></td>

+</tr>

+<tr align="center" valign="middle">

+<td rowspan="1" colspan="1" align="right">Occurs as Attribute Value</td>

+<td rowspan="1" colspan="1"><a href="#not-recognized"><cite>Not recognized</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#notify"><cite>Notify</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#not-recognized"><cite>Not recognized</cite></a></td>

+</tr>

+<tr align="center" valign="middle">

+<td rowspan="1" colspan="1" align="right">Reference in EntityValue</td>

+<td rowspan="1" colspan="1"><a href="#inliteral"><cite>Included in literal</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#bypass"><cite>Bypassed</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#bypass"><cite>Bypassed</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#included"><cite>Included</cite></a></td>

+</tr>

+<tr align="center" valign="middle">

+<td rowspan="1" colspan="1" align="right">Reference in DTD</td>

+<td rowspan="1" colspan="1"><a href="#as-PE"><cite>Included as PE</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+<td rowspan="1" colspan="1"><a href="#forbidden"><cite>Forbidden</cite></a></td>

+</tr>

+</tbody></table> <div class="div3"> <h4><a name="not-recognized"></a>4.4.1

+Not Recognized</h4> <p>Outside the DTD, the <code>%</code> character has no

+special significance; thus, what would be parameter entity references in the

+DTD are not recognized as markup in <a href="#NT-content">content</a>. Similarly,

+the names of unparsed entities are not recognized except when they appear

+in the value of an appropriately declared attribute.</p> </div> <div class="div3"> <h4><a

+name="included"></a>4.4.2 Included</h4> <p>[<a title="Include" name="dt-include">Definition</a>:

+An entity is <b>included</b> when its <a title="Replacement Text" href="#dt-repltext">replacement

+text</a> is retrieved and processed, in place of the reference itself, as

+though it were part of the document at the location the reference was recognized.]

+The replacement text may contain both <a title="Character Data" href="#dt-chardata">character

+data</a> and (except for parameter entities) <a title="Markup" href="#dt-markup">markup</a>,

+which must be recognized in the usual way. (The string "<code>AT&amp;amp;T;</code>"

+expands to "<code>AT&amp;T;</code>" and the remaining ampersand is not recognized

+as an entity-reference delimiter.) A character reference is <b>included</b>

+when the indicated character is processed in place of the reference itself. </p> </div> <div

+class="div3"> <h4><a name="include-if-valid"></a>4.4.3 Included If Validating</h4> <p>When

+an XML processor recognizes a reference to a parsed entity, in order to <a

+title="Validity" href="#dt-valid">validate</a> the document, the processor

+must <a title="Include" href="#dt-include">include</a> its replacement text.

+If the entity is external, and the processor is not attempting to validate

+the XML document, the processor <a title="May" href="#dt-may">may</a>, but

+need not, include the entity's replacement text. If a non-validating processor

+does not include the replacement text, it must inform the application that

+it recognized, but did not read, the entity.</p> <p>This rule is based on

+the recognition that the automatic inclusion provided by the SGML and XML

+entity mechanism, primarily designed to support modularity in authoring, is

+not necessarily appropriate for other applications, in particular document

+browsing. Browsers, for example, when encountering an external parsed entity

+reference, might choose to provide a visual indication of the entity's presence

+and retrieve it for display only on demand.</p> </div> <div class="div3"> <h4><a

+name="forbidden"></a>4.4.4 Forbidden</h4> <p>The following are forbidden,

+and constitute <a title="Fatal Error" href="#dt-fatal">fatal</a> errors:</p> <ul>

+<li><p>the appearance of a reference to an <a title="Unparsed Entity" href="#dt-unparsed">unparsed

+entity</a>.</p></li>

+<li><p>the appearance of any character or general-entity reference in the

+DTD except within an <a href="#NT-EntityValue">EntityValue</a> or <a href="#NT-AttValue">AttValue</a>.</p> </li>

+<li><p>a reference to an external entity in an attribute value.</p></li>

+</ul> </div> <div class="div3"> <h4><a name="inliteral"></a>4.4.5 Included

+in Literal</h4> <p>When an <a title="Entity Reference" href="#dt-entref">entity

+reference</a> appears in an attribute value, or a parameter entity reference

+appears in a literal entity value, its <a title="Replacement Text" href="#dt-repltext">replacement

+text</a> is processed in place of the reference itself as though it were part

+of the document at the location the reference was recognized, except that

+a single or double quote character in the replacement text is always treated

+as a normal data character and will not terminate the literal. For example,

+this is well-formed:</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!--  -->

+&lt;!ENTITY % YN '"Yes"' >

+&lt;!ENTITY WhatHeSaid "He said %YN;" ></pre></td>

+</tr>

+</table> <p>while this is not:</p> <table class="eg" width="100%" border="1"

+cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY EndAttr "27'" >

+&lt;element attribute='a-&amp;EndAttr;></pre></td>

+</tr>

+</table> </div> <div class="div3"> <h4><a name="notify"></a>4.4.6 Notify</h4> <p>When

+the name of an <a title="Unparsed Entity" href="#dt-unparsed">unparsed entity</a>

+appears as a token in the value of an attribute of declared type <b>ENTITY</b>

+or <b>ENTITIES</b>, a validating processor must inform the application of

+the <a title="System Identifier" href="#dt-sysid">system</a> and <a title="Public identifier"

+href="#dt-pubid">public</a> (if any) identifiers for both the entity and its

+associated <a title="Notation" href="#dt-notation">notation</a>.</p> </div> <div

+class="div3"> <h4><a name="bypass"></a>4.4.7 Bypassed</h4> <p>When a general

+entity reference appears in the <a href="#NT-EntityValue">EntityValue</a>

+in an entity declaration, it is bypassed and left as is.</p> </div> <div class="div3"> <h4><a

+name="as-PE"></a>4.4.8 Included as PE</h4> <p>Just as with external parsed

+entities, parameter entities need only be <a href="#include-if-valid"><cite>included

+if validating</cite></a>. When a parameter-entity reference is recognized

+in the DTD and included, its <a title="Replacement Text" href="#dt-repltext">replacement

+text</a> is enlarged by the attachment of one leading and one following space

+(#x20) character; the intent is to constrain the replacement text of parameter

+entities to contain an integral number of grammatical tokens in the DTD. This

+behavior does not apply to parameter entity references within entity values;

+these are described in <a href="#inliteral"><b>4.4.5 Included in Literal</b></a>.</p> </div> </div> <div

+class="div2"> <h3><a name="intern-replacement"></a>4.5 Construction of Internal

+Entity Replacement Text</h3> <p>In discussing the treatment of internal entities,

+it is useful to distinguish two forms of the entity's value. [<a title="Literal Entity Value"

+name="dt-litentval">Definition</a>: The <b>literal entity value</b> is the

+quoted string actually present in the entity declaration, corresponding to

+the non-terminal <a href="#NT-EntityValue">EntityValue</a>.] [<a title="Replacement Text"

+name="dt-repltext">Definition</a>: The <b>replacement text</b> is the content

+of the entity, after replacement of character references and parameter-entity

+references.]</p> <p>The literal entity value as given in an internal entity

+declaration (<a href="#NT-EntityValue">EntityValue</a>) may contain character,

+parameter-entity, and general-entity references. Such references must be contained

+entirely within the literal entity value. The actual replacement text that

+is <a title="Include" href="#dt-include">included</a> as described above must

+contain the <em>replacement text</em> of any parameter entities referred to,

+and must contain the character referred to, in place of any character references

+in the literal entity value; however, general-entity references must be left

+as-is, unexpanded. For example, given the following declarations:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY % pub    "&amp;#xc9;ditions Gallimard" >

+&lt;!ENTITY   rights "All rights reserved" >

+&lt;!ENTITY   book   "La Peste: Albert Camus,

+&amp;#xA9; 1947 %pub;. &amp;rights;" ></pre></td>

+</tr>

+</table> <p>then the replacement text for the entity "<code>book</code>" is:</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>La Peste: Albert Camus,

+&copy; 1947 &Eacute;ditions Gallimard. &amp;rights;</pre></td>

+</tr>

+</table> <p>The general-entity reference "<code>&amp;rights;</code>" would

+be expanded should the reference "<code>&amp;book;</code>" appear in the document's

+content or an attribute value.</p> <p>These simple rules may have complex

+interactions; for a detailed discussion of a difficult example, see <a href="#sec-entexpand"><b>D

+Expansion of Entity and Character References</b></a>.</p> </div> <div class="div2"> <h3><a

+name="sec-predefined-ent"></a>4.6 Predefined Entities</h3> <p>[<a title="escape"

+name="dt-escape">Definition</a>: Entity and character references can both

+be used to <b>escape</b> the left angle bracket, ampersand, and other delimiters.

+A set of general entities (<code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>)

+is specified for this purpose. Numeric character references may also be used;

+they are expanded immediately when recognized and must be treated as character

+data, so the numeric character references "<code>&amp;#60;</code>" and "<code>&amp;#38;</code>"

+may be used to escape <code>&lt;</code> and <code>&amp;</code> when they occur

+in character data.]</p> <p>All XML processors must recognize these entities

+whether they are declared or not. <a title="For interoperability" href="#dt-interop">For

+interoperability</a>, valid XML documents should declare these entities, like

+any others, before using them. If the entities <code>lt</code> or <code>amp</code>

+are declared, they must be declared as internal entities whose replacement

+text is a character reference to the respective character (less-than sign

+or ampersand) being escaped; the double escaping is required for these entities

+so that references to them produce a well-formed result. If the entities <code>gt</code>, <code>apos</code>,

+or <code>quot</code> are declared, they must be declared as internal entities

+whose replacement text is the single character being escaped (or a character

+reference to that character; the double escaping here is unnecessary but harmless).

+For example:</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY lt     "&amp;#38;#60;">

+&lt;!ENTITY gt     "&amp;#62;">

+&lt;!ENTITY amp    "&amp;#38;#38;">

+&lt;!ENTITY apos   "&amp;#39;">

+&lt;!ENTITY quot   "&amp;#34;"></pre></td>

+</tr>

+</table>  </div> <div class="div2"> <h3><a name="Notations"></a>4.7 Notation

+Declarations</h3> <p>[<a title="Notation" name="dt-notation">Definition</a>: <b>Notations</b>

+identify by name the format of <a title="External Entity" href="#dt-extent">unparsed

+entities</a>, the format of elements which bear a notation attribute, or the

+application to which a <a title="Processing instruction" href="#dt-pi">processing

+instruction</a> is addressed.]</p> <p>[<a title="Notation Declaration" name="dt-notdecl">Definition</a>:

+ <b>Notation declarations</b> provide a name for the notation, for use in

+entity and attribute-list declarations and in attribute specifications, and

+an external identifier for the notation which may allow an XML processor or

+its client application to locate a helper application capable of processing

+data in the given notation.]</p> <h5>Notation Declarations</h5><table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td><a name="NT-NotationDecl"></a>[82]&nbsp;&nbsp;&nbsp;</td>

+<td><code>NotationDecl</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'&lt;!NOTATION' <a href="#NT-S">S</a> <a href="#NT-Name">Name</a> <a

+href="#NT-S">S</a> (<a href="#NT-ExternalID">ExternalID</a> | <a href="#NT-PublicID">PublicID</a>) <a

+href="#NT-S">S</a>? '>'</code></td>

+<td><a href="#UniqueNotationName">[VC: Unique Notation Name]</a></td>

+</tr>

+</tbody><tbody>

+<tr valign="baseline">

+<td><a name="NT-PublicID"></a>[83]&nbsp;&nbsp;&nbsp;</td>

+<td><code>PublicID</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>'PUBLIC' <a href="#NT-S">S</a> <a href="#NT-PubidLiteral">PubidLiteral</a> </code></td>

+</tr>

+</tbody></table> <div class="constraint"><p class="prefix"><a name="UniqueNotationName"></a><b>Validity

+constraint: Unique Notation Name</b></p><p>Only one notation declaration can

+declare a given <a href="#NT-Name">Name</a>.</p> </div> <p>XML processors

+must provide applications with the name and external identifier(s) of any

+notation declared and referred to in an attribute value, attribute definition,

+or entity declaration. They may additionally resolve the external identifier

+into the <a title="System Identifier" href="#dt-sysid">system identifier</a>,

+file name, or other information needed to allow the application to call a

+processor for data in the notation described. (It is not an error, however,

+for XML documents to declare and refer to notations for which notation-specific

+applications are not available on the system where the XML processor or application

+is running.)</p> </div> <div class="div2"> <h3><a name="sec-doc-entity"></a>4.8

+Document Entity</h3> <p>[<a title="Document Entity" name="dt-docent">Definition</a>:

+The <b>document entity</b> serves as the root of the entity tree and a starting-point

+for an <a title="XML Processor" href="#dt-xml-proc">XML processor</a>.] This

+specification does not specify how the document entity is to be located by

+an XML processor; unlike other entities, the document entity has no name and

+might well appear on a processor input stream without any identification at

+all.</p> </div> </div>  <div class="div1"> <h2><a name="sec-conformance"></a>5

+Conformance</h2> <div class="div2"> <h3><a name="proc-types"></a>5.1 Validating

+and Non-Validating Processors</h3> <p>Conforming <a title="XML Processor"

+href="#dt-xml-proc">XML processors</a> fall into two classes: validating and

+non-validating.</p> <p>Validating and non-validating processors alike must

+report violations of this specification's well-formedness constraints in the

+content of the <a title="Document Entity" href="#dt-docent">document entity</a>

+and any other <a title="Text Entity" href="#dt-parsedent">parsed entities</a>

+that they read.</p> <p>[<a title="Validating Processor" name="dt-validating">Definition</a>: <b>Validating

+processors</b> must, at user option, report violations of the constraints

+expressed by the declarations in the <a title="Document Type Declaration"

+href="#dt-doctype">DTD</a>, and failures to fulfill the validity constraints

+given in this specification.] To accomplish this, validating XML processors

+must read and process the entire DTD and all external parsed entities referenced

+in the document.</p> <p>Non-validating processors are required to check only

+the <a title="Document Entity" href="#dt-docent">document entity</a>, including

+the entire internal DTD subset, for well-formedness. [<a title="Process Declarations"

+name="dt-use-mdecl">Definition</a>:  While they are not required to check

+the document for validity, they are required to <b>process</b> all the declarations

+they read in the internal DTD subset and in any parameter entity that they

+read, up to the first reference to a parameter entity that they do <em>not</em>

+read; that is to say, they must use the information in those declarations

+to <a href="#AVNormalize"><cite>normalize</cite></a> attribute values, <a

+href="#included"><cite>include</cite></a> the replacement text of internal

+entities, and supply <a href="#sec-attr-defaults"><cite>default attribute

+values</cite></a>.] Except when <code>standalone="yes"</code>, they must not <a

+title="Process Declarations" href="#dt-use-mdecl">process</a> <a title="entity declaration"

+href="#dt-entdecl">entity declarations</a> or <a title="Attribute-List Declaration"

+href="#dt-attdecl">attribute-list declarations</a> encountered after a reference

+to a parameter entity that is not read, since the entity may have contained

+overriding declarations.</p> </div> <div class="div2"> <h3><a name="safe-behavior"></a>5.2

+Using XML Processors</h3> <p>The behavior of a validating XML processor is

+highly predictable; it must read every piece of a document and report all

+well-formedness and validity violations. Less is required of a non-validating

+processor; it need not read any part of the document other than the document

+entity. This has two effects that may be important to users of XML processors:</p> <ul>

+<li><p>Certain well-formedness errors, specifically those that require reading

+external entities, may not be detected by a non-validating processor. Examples

+include the constraints entitled <a href="#wf-entdeclared"><cite>Entity Declared</cite></a>, <a

+href="#textent"><cite>Parsed Entity</cite></a>, and <a href="#norecursion"><cite>No

+Recursion</cite></a>, as well as some of the cases described as <a href="#forbidden"><cite>forbidden</cite></a>

+in <a href="#entproc"><b>4.4 XML Processor Treatment of Entities and References</b></a>.</p></li>

+<li><p>The information passed from the processor to the application may vary,

+depending on whether the processor reads parameter and external entities.

+For example, a non-validating processor may not <a href="#AVNormalize"><cite>normalize</cite></a>

+attribute values, <a href="#included"><cite>include</cite></a> the replacement

+text of internal entities, or supply <a href="#sec-attr-defaults"><cite>default

+attribute values</cite></a>, where doing so depends on having read declarations

+in external or parameter entities.</p></li>

+</ul> <p>For maximum reliability in interoperating between different XML processors,

+applications which use non-validating processors should not rely on any behaviors

+not required of such processors. Applications which require facilities such

+as the use of default attributes or internal entities which are declared in

+external entities should use validating XML processors.</p> </div> </div> <div

+class="div1"> <h2><a name="sec-notation"></a>6 Notation</h2> <p>The formal

+grammar of XML is given in this specification using a simple Extended Backus-Naur

+Form (EBNF) notation. Each rule in the grammar defines one symbol, in the

+form</p> <table class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>symbol ::= expression</pre></td>

+</tr>

+</table> <p>Symbols are written with an initial capital letter if they are

+the start symbol of a regular language, otherwise with an initial lower case

+letter. Literal strings are quoted.</p> <p>Within the expression on the right-hand

+side of a rule, the following expressions are used to match strings of one

+or more characters: </p><dl>

+<dt class="label"><code>#xN</code></dt>

+<dd> <p>where <code>N</code> is a hexadecimal integer, the expression matches

+the character in ISO/IEC 10646 whose canonical (UCS-4) code value, when interpreted

+as an unsigned binary number, has the value indicated. The number of leading

+zeros in the <code>#xN</code> form is insignificant; the number of leading

+zeros in the corresponding code value is governed by the character encoding

+in use and is not significant for XML.</p> </dd>

+<dt class="label"><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></dt>

+<dd> <p>matches any <a href="#NT-Char">Char</a> with a value in the range(s)

+indicated (inclusive).</p> </dd>

+<dt class="label"><code>[abc]</code>, <code>[#xN#xN#xN]</code></dt>

+<dd> <p>matches any <a href="#NT-Char">Char</a> with a value among the characters

+enumerated. Enumerations and ranges can be mixed in one set of brackets.</p> </dd>

+<dt class="label"><code>[^a-z]</code>, <code>[^#xN-#xN]</code></dt>

+<dd> <p>matches any <a href="#NT-Char">Char</a> with a value <em>outside</em>

+the range indicated.</p> </dd>

+<dt class="label"><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></dt>

+<dd> <p>matches any <a href="#NT-Char">Char</a> with a value not among the

+characters given. Enumerations and ranges of forbidden values can be mixed

+in one set of brackets.</p> </dd>

+<dt class="label"><code>"string"</code></dt>

+<dd> <p>matches a literal string <a title="match" href="#dt-match">matching</a>

+that given inside the double quotes.</p> </dd>

+<dt class="label"><code>'string'</code></dt>

+<dd> <p>matches a literal string <a title="match" href="#dt-match">matching</a>

+that given inside the single quotes.</p> </dd>

+</dl><p> These symbols may be combined to match more complex patterns as follows,

+where <code>A</code> and <code>B</code> represent simple expressions: </p><dl>

+<dt class="label">(<code>expression</code>)</dt>

+<dd> <p><code>expression</code> is treated as a unit and may be combined as

+described in this list.</p> </dd>

+<dt class="label"><code>A?</code></dt>

+<dd> <p>matches <code>A</code> or nothing; optional <code>A</code>.</p> </dd>

+<dt class="label"><code>A B</code></dt>

+<dd> <p>matches <code>A</code> followed by <code>B</code>. This operator has

+higher precedence than alternation; thus <code>A B | C D</code> is identical

+to <code>(A B) | (C D)</code>.</p> </dd>

+<dt class="label"><code>A | B</code></dt>

+<dd> <p>matches <code>A</code> or <code>B</code> but not both.</p> </dd>

+<dt class="label"><code>A - B</code></dt>

+<dd> <p>matches any string that matches <code>A</code> but does not match <code>B</code>.</p> </dd>

+<dt class="label"><code>A+</code></dt>

+<dd> <p>matches one or more occurrences of <code>A</code>.Concatenation has

+higher precedence than alternation; thus <code>A+ | B+</code> is identical

+to <code>(A+) | (B+)</code>.</p> </dd>

+<dt class="label"><code>A*</code></dt>

+<dd> <p>matches zero or more occurrences of <code>A</code>. Concatenation

+has higher precedence than alternation; thus <code>A* | B*</code> is identical

+to <code>(A*) | (B*)</code>.</p> </dd>

+</dl><p> Other notations used in the productions are: </p><dl>

+<dt class="label"><code>/* ... */</code></dt>

+<dd> <p>comment.</p> </dd>

+<dt class="label"><code>[ wfc: ... ]</code></dt>

+<dd> <p>well-formedness constraint; this identifies by name a constraint on <a

+title="Well-Formed" href="#dt-wellformed">well-formed</a> documents associated

+with a production.</p> </dd>

+<dt class="label"><code>[ vc: ... ]</code></dt>

+<dd> <p>validity constraint; this identifies by name a constraint on <a title="Validity"

+href="#dt-valid">valid</a> documents associated with a production.</p> </dd>

+</dl><p></p> </div> </div><div class="back">   <div class="div1"> <h2><a name="sec-bibliography"></a>A

+References</h2> <div class="div2"> <h3><a name="sec-existing-stds"></a>A.1

+Normative References</h3> <dl>

+<dt class="label"><a name="IANA"></a>IANA-CHARSETS</dt>

+<dd>(Internet Assigned Numbers Authority) <cite>Official Names for Character

+Sets</cite>, ed. Keld Simonsen et al. See <a href="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets">ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets</a

+>. </dd>

+<dt class="label"><a name="RFC1766"></a>IETF RFC 1766</dt>

+<dd>IETF (Internet Engineering Task Force). <cite>RFC 1766: Tags for the Identification

+of Languages</cite>, ed. H. Alvestrand. 1995.  (See <a href="http://www.ietf.org/rfc/rfc1766.txt">http://www.ietf.org/rfc/rfc1766.txt</a>.)</dd>

+<dt class="label"><a name="ISO10646"></a>ISO/IEC 10646</dt>

+<dd>ISO (International Organization for Standardization). <cite>ISO/IEC 10646-1993

+(E). Information technology -- Universal Multiple-Octet Coded Character Set

+(UCS) -- Part 1: Architecture and Basic Multilingual Plane.</cite> [Geneva]:

+International Organization for Standardization, 1993 (plus amendments AM 1

+through AM 7).</dd>

+<dt class="label"><a name="ISO10646-2000"></a>ISO/IEC 10646-2000</dt>

+<dd> ISO (International Organization for Standardization). <cite>ISO/IEC 10646-1:2000.

+Information technology -- Universal Multiple-Octet Coded Character Set (UCS)

+-- Part 1: Architecture and Basic Multilingual Plane.</cite> [Geneva]: International

+Organization for Standardization, 2000.</dd>

+<dt class="label"><a name="Unicode"></a>Unicode</dt>

+<dd>The Unicode Consortium. <em>The Unicode Standard, Version 2.0.</em> Reading,

+Mass.: Addison-Wesley Developers Press, 1996.</dd>

+<dt class="label"><a name="Unicode3"></a>Unicode3</dt>

+<dd> The Unicode Consortium. <em>The Unicode Standard, Version 3.0.</em> Reading,

+Mass.: Addison-Wesley Developers Press, 2000. ISBN 0-201-61633-5.</dd>

+</dl></div> <div class="div2">  <h3><a name="null"></a>A.2 Other References</h3> <dl>

+<dt class="label"><a name="Aho"></a>Aho/Ullman</dt>

+<dd>Aho, Alfred V., Ravi Sethi, and Jeffrey D. Ullman. <cite>Compilers: Principles,

+Techniques, and Tools</cite>. Reading: Addison-Wesley, 1986, rpt. corr. 1988.</dd>

+<dt class="label"><a name="Berners-Lee"></a>Berners-Lee et al.</dt>

+<dd> Berners-Lee, T., R. Fielding, and L. Masinter. <cite>Uniform Resource

+Identifiers (URI): Generic Syntax and Semantics</cite>. 1997. (Work in progress;

+see updates to RFC1738.)</dd>

+<dt class="label"><a name="ABK"></a>Br&uuml;ggemann-Klein</dt>

+<dd>Br&uuml;ggemann-Klein, Anne. Formal Models in Document Processing. Habilitationsschrift.

+Faculty of Mathematics at the University of Freiburg, 1993. (See <a href="ftp://ftp.informatik.uni-freiburg.de/documents/papers/brueggem/habil.ps"

+>ftp://ftp.informatik.uni-freiburg.de/documents/papers/brueggem/habil.ps</a>.)</dd>

+<dt class="label"><a name="ABKDW"></a>Br&uuml;ggemann-Klein and Wood</dt>

+<dd>Br&uuml;ggemann-Klein, Anne, and Derick Wood. <cite>Deterministic Regular

+Languages</cite>. Universit&auml;t Freiburg, Institut f&uuml;r Informatik,

+Bericht 38, Oktober 1991. Extended abstract in A. Finkel, M. Jantzen, Hrsg.,

+STACS 1992, S. 173-184. Springer-Verlag, Berlin 1992. Lecture Notes in Computer

+Science 577. Full version titled <cite>One-Unambiguous Regular Languages</cite>

+in Information and Computation 140 (2): 229-253, February 1998.</dd>

+<dt class="label"><a name="Clark"></a>Clark</dt>

+<dd>James Clark. Comparison of SGML and XML. See <a href="http://www.w3.org/TR/NOTE-sgml-xml-971215">http://www.w3.org/TR/NOTE-sgml-xml-971215</a

+>. </dd>

+<dt class="label"><a name="IANA-LANGCODES"></a>IANA-LANGCODES</dt>

+<dd>(Internet Assigned Numbers Authority) <cite>Registry of Language Tags</cite>,

+ed. Keld Simonsen et al.  (See <a href="http://www.isi.edu/in-notes/iana/assignments/languages/">http://www.isi.edu/in-notes/iana/assignments/languages/</a

+>.)</dd>

+<dt class="label"><a name="RFC2141"></a>IETF RFC2141</dt>

+<dd>IETF (Internet Engineering Task Force). <em>RFC 2141: URN Syntax</em>,

+ed. R. Moats. 1997.   (See <a href="http://www.ietf.org/rfc/rfc2141.txt">http://www.ietf.org/rfc/rfc2141.txt</a>.)</dd>

+<dt class="label"><a name="rfc2279"></a>IETF RFC 2279</dt>

+<dd>IETF (Internet Engineering Task Force). <cite>RFC 2279: UTF-8, a transformation

+format of ISO 10646</cite>, ed. F. Yergeau, 1998.  (See <a href="http://www.ietf.org/rfc/rfc2279.txt">http://www.ietf.org/rfc/rfc2279.txt</a>.)</dd>

+<dt class="label"><a name="rfc2376"></a>IETF RFC 2376</dt>

+<dd>IETF (Internet Engineering Task Force). <cite>RFC 2376: XML Media Types</cite>.

+ed. E. Whitehead, M. Murata. 1998.  (See <a href="http://www.ietf.org/rfc/rfc2376.txt">http://www.ietf.org/rfc/rfc2376.txt</a>.)</dd>

+<dt class="label"><a name="rfc2396"></a>IETF RFC 2396</dt>

+<dd>IETF (Internet Engineering Task Force). <cite>RFC 2396: Uniform Resource

+Identifiers (URI): Generic Syntax</cite>. T. Berners-Lee, R. Fielding, L.

+Masinter. 1998.  (See <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>.)</dd>

+<dt class="label"><a name="rfc2732"></a>IETF RFC 2732</dt>

+<dd>IETF (Internet Engineering Task Force). <cite>RFC 2732: Format for Literal

+IPv6 Addresses in URL's</cite>. R. Hinden, B. Carpenter, L. Masinter. 1999.

+ (See <a href="http://www.ietf.org/rfc/rfc2732.txt">http://www.ietf.org/rfc/rfc2732.txt</a>.)</dd>

+<dt class="label"><a name="rfc2781"></a>IETF RFC 2781</dt>

+<dd> IETF (Internet Engineering Task Force). <em>RFC 2781: UTF-16, an encoding

+of ISO 10646</em>, ed. P. Hoffman, F. Yergeau. 2000.  (See <a href="http://www.ietf.org/rfc/rfc2781.txt">http://www.ietf.org/rfc/rfc2781.txt</a>.)</dd>

+<dt class="label"><a name="ISO639"></a>ISO 639</dt>

+<dd> (International Organization for Standardization). <cite>ISO 639:1988

+(E). Code for the representation of names of languages.</cite> [Geneva]: International

+Organization for Standardization, 1988.</dd>

+<dt class="label"><a name="ISO3166"></a>ISO 3166</dt>

+<dd> (International Organization for Standardization). <cite>ISO 3166-1:1997

+(E). Codes for the representation of names of countries and their subdivisions

+-- Part 1: Country codes</cite> [Geneva]: International Organization for Standardization,

+1997.</dd>

+<dt class="label"><a name="ISO8879"></a>ISO 8879</dt>

+<dd>ISO (International Organization for Standardization). <cite>ISO 8879:1986(E).

+Information processing -- Text and Office Systems -- Standard Generalized

+Markup Language (SGML).</cite> First edition -- 1986-10-15. [Geneva]: International

+Organization for Standardization, 1986. </dd>

+<dt class="label"><a name="ISO10744"></a>ISO/IEC 10744</dt>

+<dd>ISO (International Organization for Standardization). <cite>ISO/IEC 10744-1992

+(E). Information technology -- Hypermedia/Time-based Structuring Language

+(HyTime). </cite> [Geneva]: International Organization for Standardization,

+1992. <em>Extended Facilities Annexe.</em> [Geneva]: International Organization

+for Standardization, 1996. </dd>

+<dt class="label"><a name="websgml"></a>WEBSGML</dt>

+<dd>ISO (International Organization for Standardization). <cite>ISO 8879:1986

+TC2. Information technology -- Document Description and Processing Languages. </cite>

+[Geneva]: International Organization for Standardization, 1998.  (See <a href="http://www.sgmlsource.com/8879rev/n0029.htm">http://www.sgmlsource.com/8879rev/n0029.htm</a

+>.)</dd>

+<dt class="label"><a name="xml-names"></a>XML Names</dt>

+<dd>Tim Bray, Dave Hollander, and Andrew Layman, editors. <cite>Namespaces

+in XML</cite>. Textuality, Hewlett-Packard, and Microsoft. World Wide Web

+Consortium, 1999.  (See <a href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a>.)</dd>

+</dl></div> </div> <div class="div1"> <h2><a name="CharClasses"></a>B Character

+Classes</h2> <p>Following the characteristics defined in the Unicode standard,

+characters are classed as base characters (among others, these contain the

+alphabetic characters of the Latin alphabet), ideographic characters, and

+combining characters (among others, this class contains most diacritics) Digits

+and extenders are also distinguished.</p> <h5>Characters</h5><table class="scrap">

+<tbody>

+<tr valign="baseline">

+<td><a name="NT-Letter"></a>[84]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Letter</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code><a href="#NT-BaseChar">BaseChar</a> | <a href="#NT-Ideographic">Ideographic</a></code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-BaseChar"></a>[85]&nbsp;&nbsp;&nbsp;</td>

+<td><code>BaseChar</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>[#x0041-#x005A] |&nbsp;[#x0061-#x007A] |&nbsp;[#x00C0-#x00D6] |&nbsp;[#x00D8-#x00F6]

+|&nbsp;[#x00F8-#x00FF] |&nbsp;[#x0100-#x0131] |&nbsp;[#x0134-#x013E] |&nbsp;[#x0141-#x0148]

+|&nbsp;[#x014A-#x017E] |&nbsp;[#x0180-#x01C3] |&nbsp;[#x01CD-#x01F0] |&nbsp;[#x01F4-#x01F5]

+|&nbsp;[#x01FA-#x0217] |&nbsp;[#x0250-#x02A8] |&nbsp;[#x02BB-#x02C1] |&nbsp;#x0386

+|&nbsp;[#x0388-#x038A] |&nbsp;#x038C |&nbsp;[#x038E-#x03A1] |&nbsp;[#x03A3-#x03CE]

+|&nbsp;[#x03D0-#x03D6] |&nbsp;#x03DA |&nbsp;#x03DC |&nbsp;#x03DE |&nbsp;#x03E0

+|&nbsp;[#x03E2-#x03F3] |&nbsp;[#x0401-#x040C] |&nbsp;[#x040E-#x044F] |&nbsp;[#x0451-#x045C]

+|&nbsp;[#x045E-#x0481] |&nbsp;[#x0490-#x04C4] |&nbsp;[#x04C7-#x04C8] |&nbsp;[#x04CB-#x04CC]

+|&nbsp;[#x04D0-#x04EB] |&nbsp;[#x04EE-#x04F5] |&nbsp;[#x04F8-#x04F9] |&nbsp;[#x0531-#x0556]

+|&nbsp;#x0559 |&nbsp;[#x0561-#x0586] |&nbsp;[#x05D0-#x05EA] |&nbsp;[#x05F0-#x05F2]

+|&nbsp;[#x0621-#x063A] |&nbsp;[#x0641-#x064A] |&nbsp;[#x0671-#x06B7] |&nbsp;[#x06BA-#x06BE]

+|&nbsp;[#x06C0-#x06CE] |&nbsp;[#x06D0-#x06D3] |&nbsp;#x06D5 |&nbsp;[#x06E5-#x06E6]

+|&nbsp;[#x0905-#x0939] |&nbsp;#x093D |&nbsp;[#x0958-#x0961] |&nbsp;[#x0985-#x098C]

+|&nbsp;[#x098F-#x0990] |&nbsp;[#x0993-#x09A8] |&nbsp;[#x09AA-#x09B0] |&nbsp;#x09B2

+|&nbsp;[#x09B6-#x09B9] |&nbsp;[#x09DC-#x09DD] |&nbsp;[#x09DF-#x09E1] |&nbsp;[#x09F0-#x09F1]

+|&nbsp;[#x0A05-#x0A0A] |&nbsp;[#x0A0F-#x0A10] |&nbsp;[#x0A13-#x0A28] |&nbsp;[#x0A2A-#x0A30]

+|&nbsp;[#x0A32-#x0A33] |&nbsp;[#x0A35-#x0A36] |&nbsp;[#x0A38-#x0A39] |&nbsp;[#x0A59-#x0A5C]

+|&nbsp;#x0A5E |&nbsp;[#x0A72-#x0A74] |&nbsp;[#x0A85-#x0A8B] |&nbsp;#x0A8D

+|&nbsp;[#x0A8F-#x0A91] |&nbsp;[#x0A93-#x0AA8] |&nbsp;[#x0AAA-#x0AB0] |&nbsp;[#x0AB2-#x0AB3]

+|&nbsp;[#x0AB5-#x0AB9] |&nbsp;#x0ABD |&nbsp;#x0AE0 |&nbsp;[#x0B05-#x0B0C]

+|&nbsp;[#x0B0F-#x0B10] |&nbsp;[#x0B13-#x0B28] |&nbsp;[#x0B2A-#x0B30] |&nbsp;[#x0B32-#x0B33]

+|&nbsp;[#x0B36-#x0B39] |&nbsp;#x0B3D |&nbsp;[#x0B5C-#x0B5D] |&nbsp;[#x0B5F-#x0B61]

+|&nbsp;[#x0B85-#x0B8A] |&nbsp;[#x0B8E-#x0B90] |&nbsp;[#x0B92-#x0B95] |&nbsp;[#x0B99-#x0B9A]

+|&nbsp;#x0B9C |&nbsp;[#x0B9E-#x0B9F] |&nbsp;[#x0BA3-#x0BA4] |&nbsp;[#x0BA8-#x0BAA]

+|&nbsp;[#x0BAE-#x0BB5] |&nbsp;[#x0BB7-#x0BB9] |&nbsp;[#x0C05-#x0C0C] |&nbsp;[#x0C0E-#x0C10]

+|&nbsp;[#x0C12-#x0C28] |&nbsp;[#x0C2A-#x0C33] |&nbsp;[#x0C35-#x0C39] |&nbsp;[#x0C60-#x0C61]

+|&nbsp;[#x0C85-#x0C8C] |&nbsp;[#x0C8E-#x0C90] |&nbsp;[#x0C92-#x0CA8] |&nbsp;[#x0CAA-#x0CB3]

+|&nbsp;[#x0CB5-#x0CB9] |&nbsp;#x0CDE |&nbsp;[#x0CE0-#x0CE1] |&nbsp;[#x0D05-#x0D0C]

+|&nbsp;[#x0D0E-#x0D10] |&nbsp;[#x0D12-#x0D28] |&nbsp;[#x0D2A-#x0D39] |&nbsp;[#x0D60-#x0D61]

+|&nbsp;[#x0E01-#x0E2E] |&nbsp;#x0E30 |&nbsp;[#x0E32-#x0E33] |&nbsp;[#x0E40-#x0E45]

+|&nbsp;[#x0E81-#x0E82] |&nbsp;#x0E84 |&nbsp;[#x0E87-#x0E88] |&nbsp;#x0E8A

+|&nbsp;#x0E8D |&nbsp;[#x0E94-#x0E97] |&nbsp;[#x0E99-#x0E9F] |&nbsp;[#x0EA1-#x0EA3]

+|&nbsp;#x0EA5 |&nbsp;#x0EA7 |&nbsp;[#x0EAA-#x0EAB] |&nbsp;[#x0EAD-#x0EAE]

+|&nbsp;#x0EB0 |&nbsp;[#x0EB2-#x0EB3] |&nbsp;#x0EBD |&nbsp;[#x0EC0-#x0EC4]

+|&nbsp;[#x0F40-#x0F47] |&nbsp;[#x0F49-#x0F69] |&nbsp;[#x10A0-#x10C5] |&nbsp;[#x10D0-#x10F6]

+|&nbsp;#x1100 |&nbsp;[#x1102-#x1103] |&nbsp;[#x1105-#x1107] |&nbsp;#x1109

+|&nbsp;[#x110B-#x110C] |&nbsp;[#x110E-#x1112] |&nbsp;#x113C |&nbsp;#x113E

+|&nbsp;#x1140 |&nbsp;#x114C |&nbsp;#x114E |&nbsp;#x1150 |&nbsp;[#x1154-#x1155]

+|&nbsp;#x1159 |&nbsp;[#x115F-#x1161] |&nbsp;#x1163 |&nbsp;#x1165 |&nbsp;#x1167

+|&nbsp;#x1169 |&nbsp;[#x116D-#x116E] |&nbsp;[#x1172-#x1173] |&nbsp;#x1175

+|&nbsp;#x119E |&nbsp;#x11A8 |&nbsp;#x11AB |&nbsp;[#x11AE-#x11AF] |&nbsp;[#x11B7-#x11B8]

+|&nbsp;#x11BA |&nbsp;[#x11BC-#x11C2] |&nbsp;#x11EB |&nbsp;#x11F0 |&nbsp;#x11F9

+|&nbsp;[#x1E00-#x1E9B] |&nbsp;[#x1EA0-#x1EF9] |&nbsp;[#x1F00-#x1F15] |&nbsp;[#x1F18-#x1F1D]

+|&nbsp;[#x1F20-#x1F45] |&nbsp;[#x1F48-#x1F4D] |&nbsp;[#x1F50-#x1F57] |&nbsp;#x1F59

+|&nbsp;#x1F5B |&nbsp;#x1F5D |&nbsp;[#x1F5F-#x1F7D] |&nbsp;[#x1F80-#x1FB4]

+|&nbsp;[#x1FB6-#x1FBC] |&nbsp;#x1FBE |&nbsp;[#x1FC2-#x1FC4] |&nbsp;[#x1FC6-#x1FCC]

+|&nbsp;[#x1FD0-#x1FD3] |&nbsp;[#x1FD6-#x1FDB] |&nbsp;[#x1FE0-#x1FEC] |&nbsp;[#x1FF2-#x1FF4]

+|&nbsp;[#x1FF6-#x1FFC] |&nbsp;#x2126 |&nbsp;[#x212A-#x212B] |&nbsp;#x212E

+|&nbsp;[#x2180-#x2182] |&nbsp;[#x3041-#x3094] |&nbsp;[#x30A1-#x30FA] |&nbsp;[#x3105-#x312C]

+|&nbsp;[#xAC00-#xD7A3] </code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Ideographic"></a>[86]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Ideographic</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>[#x4E00-#x9FA5] |&nbsp;#x3007 |&nbsp;[#x3021-#x3029] </code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-CombiningChar"></a>[87]&nbsp;&nbsp;&nbsp;</td>

+<td><code>CombiningChar</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>[#x0300-#x0345] |&nbsp;[#x0360-#x0361] |&nbsp;[#x0483-#x0486] |&nbsp;[#x0591-#x05A1]

+|&nbsp;[#x05A3-#x05B9] |&nbsp;[#x05BB-#x05BD] |&nbsp;#x05BF |&nbsp;[#x05C1-#x05C2]

+|&nbsp;#x05C4 |&nbsp;[#x064B-#x0652] |&nbsp;#x0670 |&nbsp;[#x06D6-#x06DC]

+|&nbsp;[#x06DD-#x06DF] |&nbsp;[#x06E0-#x06E4] |&nbsp;[#x06E7-#x06E8] |&nbsp;[#x06EA-#x06ED]

+|&nbsp;[#x0901-#x0903] |&nbsp;#x093C |&nbsp;[#x093E-#x094C] |&nbsp;#x094D

+|&nbsp;[#x0951-#x0954] |&nbsp;[#x0962-#x0963] |&nbsp;[#x0981-#x0983] |&nbsp;#x09BC

+|&nbsp;#x09BE |&nbsp;#x09BF |&nbsp;[#x09C0-#x09C4] |&nbsp;[#x09C7-#x09C8]

+|&nbsp;[#x09CB-#x09CD] |&nbsp;#x09D7 |&nbsp;[#x09E2-#x09E3] |&nbsp;#x0A02

+|&nbsp;#x0A3C |&nbsp;#x0A3E |&nbsp;#x0A3F |&nbsp;[#x0A40-#x0A42] |&nbsp;[#x0A47-#x0A48]

+|&nbsp;[#x0A4B-#x0A4D] |&nbsp;[#x0A70-#x0A71] |&nbsp;[#x0A81-#x0A83] |&nbsp;#x0ABC

+|&nbsp;[#x0ABE-#x0AC5] |&nbsp;[#x0AC7-#x0AC9] |&nbsp;[#x0ACB-#x0ACD] |&nbsp;[#x0B01-#x0B03]

+|&nbsp;#x0B3C |&nbsp;[#x0B3E-#x0B43] |&nbsp;[#x0B47-#x0B48] |&nbsp;[#x0B4B-#x0B4D]

+|&nbsp;[#x0B56-#x0B57] |&nbsp;[#x0B82-#x0B83] |&nbsp;[#x0BBE-#x0BC2] |&nbsp;[#x0BC6-#x0BC8]

+|&nbsp;[#x0BCA-#x0BCD] |&nbsp;#x0BD7 |&nbsp;[#x0C01-#x0C03] |&nbsp;[#x0C3E-#x0C44]

+|&nbsp;[#x0C46-#x0C48] |&nbsp;[#x0C4A-#x0C4D] |&nbsp;[#x0C55-#x0C56] |&nbsp;[#x0C82-#x0C83]

+|&nbsp;[#x0CBE-#x0CC4] |&nbsp;[#x0CC6-#x0CC8] |&nbsp;[#x0CCA-#x0CCD] |&nbsp;[#x0CD5-#x0CD6]

+|&nbsp;[#x0D02-#x0D03] |&nbsp;[#x0D3E-#x0D43] |&nbsp;[#x0D46-#x0D48] |&nbsp;[#x0D4A-#x0D4D]

+|&nbsp;#x0D57 |&nbsp;#x0E31 |&nbsp;[#x0E34-#x0E3A] |&nbsp;[#x0E47-#x0E4E]

+|&nbsp;#x0EB1 |&nbsp;[#x0EB4-#x0EB9] |&nbsp;[#x0EBB-#x0EBC] |&nbsp;[#x0EC8-#x0ECD]

+|&nbsp;[#x0F18-#x0F19] |&nbsp;#x0F35 |&nbsp;#x0F37 |&nbsp;#x0F39 |&nbsp;#x0F3E

+|&nbsp;#x0F3F |&nbsp;[#x0F71-#x0F84] |&nbsp;[#x0F86-#x0F8B] |&nbsp;[#x0F90-#x0F95]

+|&nbsp;#x0F97 |&nbsp;[#x0F99-#x0FAD] |&nbsp;[#x0FB1-#x0FB7] |&nbsp;#x0FB9

+|&nbsp;[#x20D0-#x20DC] |&nbsp;#x20E1 |&nbsp;[#x302A-#x302F] |&nbsp;#x3099

+|&nbsp;#x309A </code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Digit"></a>[88]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Digit</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>[#x0030-#x0039] |&nbsp;[#x0660-#x0669] |&nbsp;[#x06F0-#x06F9] |&nbsp;[#x0966-#x096F]

+|&nbsp;[#x09E6-#x09EF] |&nbsp;[#x0A66-#x0A6F] |&nbsp;[#x0AE6-#x0AEF] |&nbsp;[#x0B66-#x0B6F]

+|&nbsp;[#x0BE7-#x0BEF] |&nbsp;[#x0C66-#x0C6F] |&nbsp;[#x0CE6-#x0CEF] |&nbsp;[#x0D66-#x0D6F]

+|&nbsp;[#x0E50-#x0E59] |&nbsp;[#x0ED0-#x0ED9] |&nbsp;[#x0F20-#x0F29] </code></td>

+</tr>

+<tr valign="baseline">

+<td><a name="NT-Extender"></a>[89]&nbsp;&nbsp;&nbsp;</td>

+<td><code>Extender</code></td>

+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>

+<td><code>#x00B7 |&nbsp;#x02D0 |&nbsp;#x02D1 |&nbsp;#x0387 |&nbsp;#x0640 |&nbsp;#x0E46

+|&nbsp;#x0EC6 |&nbsp;#x3005 |&nbsp;[#x3031-#x3035] |&nbsp;[#x309D-#x309E]

+|&nbsp;[#x30FC-#x30FE] </code></td>

+</tr>

+</tbody></table> <p>The character classes defined here can be derived from

+the Unicode 2.0 character database as follows:</p> <ul>

+<li><p>Name start characters must have one of the categories Ll, Lu, Lo, Lt,

+Nl.</p></li>

+<li><p>Name characters other than Name-start characters must have one of the

+categories Mc, Me, Mn, Lm, or Nd.</p></li>

+<li><p>Characters in the compatibility area (i.e. with character code greater

+than #xF900 and less than #xFFFE) are not allowed in XML names.</p></li>

+<li><p>Characters which have a font or compatibility decomposition (i.e. those

+with a "compatibility formatting tag" in field 5 of the database -- marked

+by field 5 beginning with a "&lt;") are not allowed.</p></li>

+<li><p>The following characters are treated as name-start characters rather

+than name characters, because the property file classifies them as Alphabetic:

+[#x02BB-#x02C1], #x0559, #x06E5, #x06E6.</p></li>

+<li><p>Characters #x20DD-#x20E0 are excluded (in accordance with Unicode 2.0,

+section 5.14).</p></li>

+<li><p>Character #x00B7 is classified as an extender, because the property

+list so identifies it.</p></li>

+<li><p>Character #x0387 is added as a name character, because #x00B7 is its

+canonical equivalent.</p></li>

+<li><p>Characters ':' and '_' are allowed as name-start characters.</p> </li>

+<li><p>Characters '-' and '.' are allowed as name characters.</p></li>

+</ul> </div> <div class="div1"> <h2><a name="sec-xml-and-sgml"></a>C XML and

+SGML (Non-Normative)</h2> <p>XML is designed to be a subset of SGML, in that

+every XML document should also be a conforming SGML document. For a detailed

+comparison of the additional restrictions that XML places on documents beyond

+those of SGML, see <a href="#Clark">[Clark]</a>.</p> </div> <div class="div1"> <h2><a

+name="sec-entexpand"></a>D Expansion of Entity and Character References (Non-Normative)</h2> <p>This

+appendix contains some examples illustrating the sequence of entity- and character-reference

+recognition and expansion, as specified in <a href="#entproc"><b>4.4 XML Processor

+Treatment of Entities and References</b></a>.</p> <p>If the DTD contains the

+declaration</p> <table class="eg" width="100%" border="1" cellpadding="5"

+bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;!ENTITY example "&lt;p>An ampersand (&amp;#38;#38;) may be escaped

+numerically (&amp;#38;#38;#38;) or with a general entity

+(&amp;amp;amp;).&lt;/p>" ></pre></td>

+</tr>

+</table> <p>then the XML processor will recognize the character references

+when it parses the entity declaration, and resolve them before storing the

+following string as the value of the entity "<code>example</code>":</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>&lt;p>An ampersand (&amp;#38;) may be escaped

+numerically (&amp;#38;#38;) or with a general entity

+(&amp;amp;amp;).&lt;/p></pre></td>

+</tr>

+</table> <p>A reference in the document to "<code>&amp;example;</code>" will

+cause the text to be reparsed, at which time the start- and end-tags of the <code>p</code>

+element will be recognized and the three references will be recognized and

+expanded, resulting in a <code>p</code> element with the following content

+(all data, no delimiters or markup):</p> <table class="eg" width="100%" border="1"

+cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>An ampersand (&amp;) may be escaped

+numerically (&amp;#38;) or with a general entity

+(&amp;amp;).</pre></td>

+</tr>

+</table> <p>A more complex example will illustrate the rules and their effects

+fully. In the following example, the line numbers are solely for reference.</p> <table

+class="eg" width="100%" border="1" cellpadding="5" bgcolor="#99ffff">

+<tr>

+<td><pre>1 &lt;?xml version='1.0'?>

+2 &lt;!DOCTYPE test [

+3 &lt;!ELEMENT test (#PCDATA) >

+4 &lt;!ENTITY % xx '&amp;#37;zz;'>

+5 &lt;!ENTITY % zz '&amp;#60;!ENTITY tricky "error-prone" >' >

+6 %xx;

+7 ]>

+8 &lt;test>This sample shows a &amp;tricky; method.&lt;/test></pre></td>

+</tr>

+</table> <p>This produces the following:</p> <ul>

+<li><p>in line 4, the reference to character 37 is expanded immediately, and

+the parameter entity "<code>xx</code>" is stored in the symbol table with

+the value "<code>%zz;</code>". Since the replacement text is not rescanned,

+the reference to parameter entity "<code>zz</code>" is not recognized. (And

+it would be an error if it were, since "<code>zz</code>" is not yet declared.)</p></li>

+<li><p>in line 5, the character reference "<code>&amp;#60;</code>" is expanded

+immediately and the parameter entity "<code>zz</code>" is stored with the

+replacement text "<code>&lt;!ENTITY tricky "error-prone" ></code>", which

+is a well-formed entity declaration.</p></li>

+<li><p>in line 6, the reference to "<code>xx</code>" is recognized, and the

+replacement text of "<code>xx</code>" (namely "<code>%zz;</code>") is parsed.

+The reference to "<code>zz</code>" is recognized in its turn, and its replacement

+text ("<code>&lt;!ENTITY tricky "error-prone" ></code>") is parsed. The general

+entity "<code>tricky</code>" has now been declared, with the replacement text

+"<code>error-prone</code>".</p> </li>

+<li><p>in line 8, the reference to the general entity "<code>tricky</code>"

+is recognized, and it is expanded, so the full content of the <code>test</code>

+element is the self-describing (and ungrammatical) string <em>This sample

+shows a error-prone method.</em></p></li>

+</ul> </div> <div class="div1"> <h2><a name="determinism"></a>E Deterministic

+Content Models (Non-Normative)</h2> <p>As noted in <a href="#sec-element-content"><b>3.2.1

+Element Content</b></a>, it is required that content models in element type

+declarations be deterministic. This requirement is <a title="For Compatibility"

+href="#dt-compat">for compatibility</a> with SGML (which calls deterministic

+content models "unambiguous"); XML processors built using SGML systems may

+flag non-deterministic content models as errors.</p> <p>For example, the content

+model <code>((b, c) | (b, d))</code> is non-deterministic, because given an

+initial <code>b</code> the XML processor cannot know which <code>b</code>

+in the model is being matched without looking ahead to see which element follows

+the <code>b</code>. In this case, the two references to <code>b</code> can

+be collapsed into a single reference, making the model read <code>(b, (c |

+d))</code>. An initial <code>b</code> now clearly matches only a single name

+in the content model. The processor doesn't need to look ahead to see what

+follows; either <code>c</code> or <code>d</code> would be accepted.</p> <p>More

+formally: a finite state automaton may be constructed from the content model

+using the standard algorithms, e.g. algorithm 3.5 in section 3.9 of Aho, Sethi,

+and Ullman <a href="#Aho">[Aho/Ullman]</a>. In many such algorithms, a follow

+set is constructed for each position in the regular expression (i.e., each

+leaf node in the syntax tree for the regular expression); if any position

+has a follow set in which more than one following position is labeled with

+the same element type name, then the content model is in error and may be

+reported as an error.</p> <p>Algorithms exist which allow many but not all

+non-deterministic content models to be reduced automatically to equivalent

+deterministic models; see Br&uuml;ggemann-Klein 1991 <a href="#ABK">[Br&uuml;ggemann-Klein]</a>.</p> </div> <div

+class="div1"> <h2><a name="sec-guessing"></a>F Autodetection of Character

+Encodings (Non-Normative)</h2> <p>The XML encoding declaration functions as

+an internal label on each entity, indicating which character encoding is in

+use. Before an XML processor can read the internal label, however, it apparently

+has to know what character encoding is in use--which is what the internal

+label is trying to indicate. In the general case, this is a hopeless situation.

+It is not entirely hopeless in XML, however, because XML limits the general

+case in two ways: each implementation is assumed to support only a finite

+set of character encodings, and the XML encoding declaration is restricted

+in position and content in order to make it feasible to autodetect the character

+encoding in use in each entity in normal cases. Also, in many cases other

+sources of information are available in addition to the XML data stream itself.

+Two cases may be distinguished, depending on whether the XML entity is presented

+to the processor without, or with, any accompanying (external) information.

+We consider the first case first.</p> <div class="div2"> <h3><a name="sec-guessing-no-ext-info"></a>F.1

+Detection Without External Encoding Information</h3> <p>Because each XML entity

+not accompanied by external encoding information and not in UTF-8 or UTF-16

+encoding <em>must</em> begin with an XML encoding declaration, in which the

+first characters must be '<code>&lt;?xml</code>', any conforming processor

+can detect, after two to four octets of input, which of the following cases

+apply. In reading this list, it may help to know that in UCS-4, '&lt;' is

+"<code>#x0000003C</code>" and '?' is "<code>#x0000003F</code>", and the Byte

+Order Mark required of UTF-16 data streams is "<code>#xFEFF</code>". The notation <var>##</var>

+is used to denote any byte value except that two consecutive <var>##</var>s

+cannot be both 00.</p> <p>With a Byte Order Mark:</p> <table border="1" frame="border">

+<tbody>

+<tr>

+<td rowspan="1" colspan="1"><code>00 00 FE FF</code></td>

+<td rowspan="1" colspan="1">UCS-4, big-endian machine (1234 order)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>FF FE 00 00</code></td>

+<td rowspan="1" colspan="1">UCS-4, little-endian machine (4321 order)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>00 00 FF FE</code></td>

+<td rowspan="1" colspan="1">UCS-4, unusual octet order (2143)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>FE FF 00 00</code></td>

+<td rowspan="1" colspan="1">UCS-4, unusual octet order (3412)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>FE FF ## ##</code></td>

+<td rowspan="1" colspan="1">UTF-16, big-endian</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>FF FE ## ##</code></td>

+<td rowspan="1" colspan="1">UTF-16, little-endian</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>EF BB BF</code></td>

+<td rowspan="1" colspan="1">UTF-8</td>

+</tr>

+</tbody></table> <p>Without a Byte Order Mark:</p> <table border="1" frame="border">

+<tbody>

+<tr>

+<td rowspan="1" colspan="1"><code>00&nbsp;00&nbsp;00&nbsp;3C</code></td>

+<td rowspan="4" colspan="1">UCS-4 or other encoding with a 32-bit code unit

+and ASCII characters encoded as ASCII values, in respectively big-endian (1234),

+little-endian (4321) and two unusual byte orders (2143 and 3412). The encoding

+declaration must be read to determine which of UCS-4 or other supported 32-bit

+encodings applies.</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>3C 00 00 00</code></td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>00 00 3C 00</code></td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>00 3C 00 00</code></td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>00 3C 00 3F</code></td>

+<td rowspan="1" colspan="1">UTF-16BE or big-endian ISO-10646-UCS-2 or other

+encoding with a 16-bit code unit in big-endian order and ASCII characters

+encoded as ASCII values (the encoding declaration must be read to determine

+which)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>3C 00 3F 00</code></td>

+<td rowspan="1" colspan="1">UTF-16LE or little-endian ISO-10646-UCS-2 or other

+encoding with a 16-bit code unit in little-endian order and ASCII characters

+encoded as ASCII values (the encoding declaration must be read to determine

+which)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>3C 3F 78 6D</code></td>

+<td rowspan="1" colspan="1">UTF-8, ISO 646, ASCII, some part of ISO 8859,

+Shift-JIS, EUC, or any other 7-bit, 8-bit, or mixed-width encoding which ensures

+that the characters of ASCII have their normal positions, width, and values;

+the actual encoding declaration must be read to detect which of these applies,

+but since all of these encodings use the same bit patterns for the relevant

+ASCII characters, the encoding declaration itself may be read reliably</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1"><code>4C 6F A7 94</code></td>

+<td rowspan="1" colspan="1">EBCDIC (in some flavor; the full encoding declaration

+must be read to tell which code page is in use)</td>

+</tr>

+<tr>

+<td rowspan="1" colspan="1">Other</td>

+<td rowspan="1" colspan="1">UTF-8 without an encoding declaration, or else

+the data stream is mislabeled (lacking a required encoding declaration), corrupt,

+fragmentary, or enclosed in a wrapper of some kind</td>

+</tr>

+</tbody></table> <div class="note"><p class="prefix"><b>Note:</b></p> <p>In

+cases above which do not require reading the encoding declaration to determine

+the encoding, section 4.3.3 still requires that the encoding declaration,

+if present, be read and that the encoding name be checked to match the actual

+encoding of the entity. Also, it is possible that new character encodings

+will be invented that will make it necessary to use the encoding declaration

+to determine the encoding, in cases where this is not required at present.</p> </div> <p>This

+level of autodetection is enough to read the XML encoding declaration and

+parse the character-encoding identifier, which is still necessary to distinguish

+the individual members of each family of encodings (e.g. to tell UTF-8 from

+8859, and the parts of 8859 from each other, or to distinguish the specific

+EBCDIC code page in use, and so on).</p> <p>Because the contents of the encoding

+declaration are restricted to characters from the ASCII repertoire (however

+encoded), a processor can reliably read the entire encoding declaration as

+soon as it has detected which family of encodings is in use. Since in practice,

+all widely used character encodings fall into one of the categories above,

+the XML encoding declaration allows reasonably reliable in-band labeling of

+character encodings, even when external sources of information at the operating-system

+or transport-protocol level are unreliable. Character encodings such as UTF-7

+that make overloaded usage of ASCII-valued bytes may fail to be reliably detected.</p> <p>Once

+the processor has detected the character encoding in use, it can act appropriately,

+whether by invoking a separate input routine for each case, or by calling

+the proper conversion function on each character of input.</p> <p>Like any

+self-labeling system, the XML encoding declaration will not work if any software

+changes the entity's character set or encoding without updating the encoding

+declaration. Implementors of character-encoding routines should be careful

+to ensure the accuracy of the internal and external information used to label

+the entity.</p> </div> <div class="div2"> <h3><a name="sec-guessing-with-ext-info"></a>F.2

+Priorities in the Presence of External Encoding Information</h3> <p>The second

+possible case occurs when the XML entity is accompanied by encoding information,

+as in some file systems and some network protocols. When multiple sources

+of information are available, their relative priority and the preferred method

+of handling conflict should be specified as part of the higher-level protocol

+used to deliver XML. In particular, please refer to <a href="#rfc2376">[IETF

+RFC 2376]</a> or its successor, which defines the <code>text/xml</code> and <code>application/xml</code>

+MIME types and provides some useful guidance. In the interests of interoperability,

+however, the following rule is recommended.</p> <ul>

+<li><p>If an XML entity is in a file, the Byte-Order Mark and encoding declaration

+are used (if present) to determine the character encoding.</p> </li>

+</ul>   </div> </div> <div class="div1"> <h2><a name="sec-xml-wg"></a>G W3C

+XML Working Group (Non-Normative)</h2> <p>This specification was prepared

+and approved for publication by the W3C XML Working Group (WG). WG approval

+of this specification does not necessarily imply that all WG members voted

+for its approval. The current and former members of the XML WG are:</p> <ul>

+<li>Jon Bosak, Sun (<i>Chair</i>)  </li>

+<li>James Clark (<i>Technical Lead</i>) </li>

+<li>Tim Bray, Textuality and Netscape  (<i>XML Co-editor</i>) </li>

+<li>Jean Paoli, Microsoft (<i>XML Co-editor</i>) </li>

+<li>C. M. Sperberg-McQueen, U. of Ill.  (<i>XML Co-editor</i>) </li>

+<li>Dan Connolly, W3C (<i>W3C Liaison</i>)  </li>

+<li>Paula Angerstein, Texcel</li>

+<li>Steve DeRose, INSO</li>

+<li>Dave Hollander, HP</li>

+<li>Eliot Kimber, ISOGEN</li>

+<li>Eve Maler, ArborText</li>

+<li>Tom Magliery, NCSA</li>

+<li>Murray Maloney, SoftQuad, Grif SA, Muzmo and Veo Systems</li>

+<li>MURATA Makoto (FAMILY Given), Fuji Xerox Information Systems</li>

+<li>Joel Nava, Adobe</li>

+<li>Conleth O'Connell, Vignette </li>

+<li>Peter Sharpe, SoftQuad</li>

+<li>John Tigue, DataChannel</li>

+</ul> </div> <div class="div1"> <h2><a name="sec-core-wg"></a>H W3C XML Core

+Group (Non-Normative)</h2> <p>The second edition of this specification was

+prepared by the W3C XML Core Working Group (WG). The members of the WG at

+the time of publication of this edition were:</p> <ul>

+<li>Paula Angerstein, Vignette</li>

+<li>Daniel Austin, Ask Jeeves</li>

+<li>Tim Boland</li>

+<li>Allen Brown, Microsoft</li>

+<li>Dan Connolly, W3C (<i>Staff Contact</i>) </li>

+<li>John Cowan, Reuters Limited </li>

+<li>John Evdemon, XMLSolutions Corporation </li>

+<li>Paul Grosso, Arbortext (<i>Co-Chair</i>)  </li>

+<li>Arnaud Le Hors, IBM (<i>Co-Chair</i>)  </li>

+<li>Eve Maler, Sun Microsystems  (<i>Second Edition Editor</i>) </li>

+<li>Jonathan Marsh, Microsoft</li>

+<li>MURATA Makoto (FAMILY Given), IBM </li>

+<li>Mark Needleman, Data Research Associates </li>

+<li>David Orchard, Jamcracker</li>

+<li>Lew Shannon, NCR</li>

+<li>Richard Tobin, University of Edinburgh </li>

+<li>Daniel Veillard, W3C</li>

+<li>Dan Vint, Lexica</li>

+<li>Norman Walsh, Sun Microsystems </li>

+<li>Fran&ccedil;ois Yergeau, Alis Technologies  (<i>Errata List Editor</i>) </li>

+<li>Kongyi Zhou, Oracle</li>

+</ul> </div> <div class="div1"> <h2><a name="b4d250b6c21"></a>I Production

+Notes (Non-Normative)</h2> <p>This Second Edition was encoded in the <a href="http://www.w3.org/XML/1998/06/xmlspec-v21.dtd">XMLspec

+DTD</a> (which has <a href="http://www.w3.org/XML/1998/06/xmlspec-report-v21.htm">documentation</a>

+available). The HTML versions were produced with a combination of the <a href="http://www.w3.org/XML/1998/06/xmlspec.xsl">xmlspec.xsl</a>, <a

+href="http://www.w3.org/XML/1998/06/diffspec.xsl">diffspec.xsl</a>, and <a

+href="http://www.w3.org/XML/1998/06/REC-xml-2e.xsl">REC-xml-2e.xsl</a> XSLT

+stylesheets.  The PDF version was produced with the <a href="http://www.tdb.uu.se/~jan/html2ps.html">html2ps</a>

+facility and a distiller program.</p> </div> </div></body>

+</html>

diff --git a/data/org/w3c/www/TR/xml-stylesheet.html b/data/org/w3c/www/TR/xml-stylesheet.html
new file mode 100644
index 0000000..de8e119
--- /dev/null
+++ b/data/org/w3c/www/TR/xml-stylesheet.html
@@ -0,0 +1,341 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title>Associating Style Sheets with XML documents</title>
+<link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-REC">
+<style type="text/css">code { font-family: monospace }</style>
+</head>
+<body>
+<div class="head">
+<a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/WWW/w3c_home" alt="W3C" height="48" width="72"></a>
+<h1>Associating Style Sheets with XML documents<br>Version 1.0</h1>
+<h2>W3C Recommendation 29 June 1999</h2>
+<dl>
+<dt>This version:</dt>
+<dd>
+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629">http://www.w3.org/1999/06/REC-xml-stylesheet-19990629</a>
+<br>
+</dd>
+<dt>Latest version:</dt>
+<dd>
+<a href="http://www.w3.org/TR/xml-stylesheet">http://www.w3.org/TR/xml-stylesheet</a>
+<br>
+</dd>
+<dt>Previous version:</dt>
+<dd>
+<a href="http://www.w3.org/TR/1999/xml-stylesheet-19990428">http://www.w3.org/TR/1999/xml-stylesheet-19990428</a>
+<br>
+</dd>
+<dt>Editor:</dt>
+<dd>
+
+James Clark
+<a href="mailto:jjc@jclark.com">&lt;jjc@jclark.com&gt;</a>
+<br>
+</dd>
+</dl>
+<p class="copyright">
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright">
+		Copyright</a> &nbsp;&copy;&nbsp; 1999 <a href="http://www.w3.org">W3C</a>
+		(<a href="http://www.lcs.mit.edu">MIT</a>,
+		<a href="http://www.inria.fr/">INRIA</a>,
+		<a href="http://www.keio.ac.jp/">Keio</a> ), All Rights Reserved. W3C
+		<a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Legal Disclaimer">liability,</a><a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#W3C Trademarks">trademark</a>,
+		<a href="http://www.w3.org/Consortium/Legal/copyright-documents.html">document use </a>and
+		<a href="http://www.w3.org/Consortium/Legal/copyright-software.html">software licensing </a>rules apply.
+	</p>
+<hr title="Separator for header">
+</div>
+<h2>
+<a name="abstract">Abstract</a>
+</h2>
+
+<p>This document allows a style sheet to be associated with an XML
+document by including one or more processing instructions with a
+target of <code>xml-stylesheet</code> in the document's prolog.</p>
+
+<h2>
+<a name="status">Status of this document</a>
+</h2>
+
+<p>This document has been reviewed by W3C Members and other interested
+parties and has been endorsed by the Director as a W3C <a href="http://www.w3.org/Consortium/Process/#RecsW3C">Recommendation</a>. It
+is a stable document and may be used as reference material or cited as
+a normative reference from other documents. W3C's role in making the
+Recommendation is to draw attention to the specification and to
+promote its widespread deployment. This enhances the functionality and
+interoperability of the Web.</p>
+
+<p>The list of known errors in this specifications is available at
+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata">http://www.w3.org/TR/1999/xml-stylesheet-19990629/errata</a>.</p>
+
+<p>Comments on this specification may be sent to &lt;<a href="mailto:www-xml-stylesheet-comments@w3.org">www-xml-stylesheet-comments@w3.org</a>&gt;. The archive of public
+comments is available at <a href="http://www.w3.org/Archives/Public/www-xml-stylesheet-comments">http://w3.org/Archives/Public/www-xml-stylesheet-comments</a>.</p>
+
+<p>A list of current W3C Recommendations and other technical documents
+can be found at <a href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p>
+
+<p>The Working Group expects additional mechanisms for linking style
+sheets to XML document to be defined in a future specification.</p>
+
+<p>The use of XML processing instructions in this specification should
+not be taken as a precedent.  The W3C does not anticipate recommending
+the use of processing instructions in any future specification.  The
+<a href="#rationale">Rationale</a> explains why they were used in
+this specification.</p>
+
+<p>This document was produced as part of the <a href="http://www.w3.org/XML/Activity">W3C XML Activity</a>.</p>
+
+
+<h2>
+<a name="contents">Table of contents</a>
+</h2>1 <a href="#The xml-stylesheet processing instruction">The xml-stylesheet processing instruction</a>
+<br>
+<h3>Appendices</h3>A <a href="#References">References</a>
+<br>B <a href="#rationale">Rationale</a>
+<br>
+<hr>
+
+<h2>
+<a name="The xml-stylesheet processing instruction"></a>1 The <code>xml-stylesheet</code> processing instruction</h2>
+
+<p>Style Sheets can be associated with an XML<a href="#XML">[XML10]</a>
+document by using a processing instruction whose target is
+<code>xml-stylesheet</code>.  This processing instruction follows the
+behaviour of the HTML 4.0 <code>&lt;LINK
+REL="stylesheet"&gt;</code><a href="#HTML">[HTML40]</a>.</p>
+
+<p>The <code>xml-stylesheet</code> processing instruction is parsed in
+the same way as a start-tag, with the exception that entities other
+than predefined entities must not be referenced.</p>
+
+<p>The following grammar is given using the same notation as the
+grammar in the XML Recommendation<a href="#XML">[XML10]</a>.  Symbols in the
+grammar that are not defined here are defined in the XML
+Recommendation.</p>
+
+<h5>xml-stylesheet processing instruction</h5>
+<table class="scrap">
+<tbody>
+<tr valign="baseline">
+<td>
+<a name="NT-StyleSheetPI"></a>[1]&nbsp;&nbsp;&nbsp;</td>
+<td>StyleSheetPI</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>'&lt;?xml-stylesheet' (<a href="http://www.w3.org/TR/REC-xml#NT-S">S</a> <a href="#NT-PseudoAtt">PseudoAtt</a>)* <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? '?&gt;'</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+<a name="NT-PseudoAtt"></a>[2]&nbsp;&nbsp;&nbsp;</td>
+<td>PseudoAtt</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>
+<a href="http://www.w3.org/TR/REC-xml#NT-Name">Name</a> <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? '=' <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? <a href="#NT-PseudoAttValue">PseudoAttValue</a>
+</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+<a name="NT-PseudoAttValue"></a>[3]&nbsp;&nbsp;&nbsp;</td>
+<td>PseudoAttValue</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>('"' ([^"&lt;&amp;] | <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* '"'</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+</td>
+<td>
+</td>
+<td>
+</td>
+<td>| "'" ([^'&lt;&amp;] | <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* "'")</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+</td>
+<td>
+</td>
+<td>
+</td>
+<td>- (<a href="http://www.w3.org/TR/REC-xml#NT-Char">Char</a>* '?&gt;' <a href="http://www.w3.org/TR/REC-xml#NT-Char">Char</a>*)</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+<a name="NT-PredefEntityRef"></a>[4]&nbsp;&nbsp;&nbsp;</td>
+<td>PredefEntityRef</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>'&amp;amp;' | '&amp;lt;' | '&amp;gt;' | '&amp;quot;' | '&amp;apos;'</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+
+<p>In <a href="#NT-PseudoAttValue">PseudoAttValue</a>, a <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> or a <a href="#NT-PredefEntityRef">PredefEntityRef</a> is interpreted in the
+same manner as in a normal XML attribute value.  The actual value of
+the pseudo-attribute is the value after each reference is replaced by
+the character it references.  This replacement is not performed
+automatically by an XML processor.</p>
+
+<p>The <code>xml-stylesheet</code> processing instruction is allowed
+only in the prolog of an XML document. The syntax of XML constrains
+where processing instructions are allowed in the prolog; the
+<code>xml-stylesheet</code> processing instruction is allowed anywhere
+in the prolog that meets these constraints.</p>
+
+<blockquote>
+<b>NOTE: </b>If the <code>xml-stylesheet</code> processing instruction
+occurs in the external DTD subset or in a parameter entity, it is
+possible that it may not be processed by a non-validating XML
+processor (see <a href="#XML">[XML10]</a>).</blockquote>
+
+<p>The following pseudo attributes are defined</p>
+
+<pre>href CDATA #REQUIRED
+type CDATA #REQUIRED
+title CDATA #IMPLIED
+media CDATA #IMPLIED
+charset CDATA #IMPLIED
+alternate (yes|no) "no"</pre>
+
+<p>The semantics of the pseudo-attributes are exactly as with
+<code>&lt;LINK REL="stylesheet"&gt;</code> in HTML 4.0, with the
+exception of the <code>alternate</code> pseudo-attribute.  If
+<code>alternate="yes"</code> is specified, then the processing
+instruction has the semantics of <code>&lt;LINK REL="alternate
+stylesheet"&gt;</code> instead of <code>&lt;LINK
+REL="stylesheet"&gt;</code>.</p>
+
+<blockquote>
+<b>NOTE: </b>Since the value of the <code>href</code> attribute is a URI
+reference, it may be a relative URI and it may contain a fragment
+identifier. In particular the URI reference may contain only a
+fragment identifier.  Such a URI reference is a reference to a part of
+the document containing the <code>xml-stylesheet</code> processing
+instruction (see <a href="#RFC2396">[RFC2396]</a>). The consequence is that the
+<code>xml-stylesheet</code> processing instruction allows style sheets
+to be embedded in the same document as the <code>xml-stylesheet</code>
+processing instruction.</blockquote>
+
+<p>In some cases, style sheets may be linked with an XML document by
+means external to the document. For example, earlier versions of HTTP
+<a href="#RFC2068">[RFC2068]</a> (section 19.6.2.4) allowed style sheets to be
+associated with XML documents by means of the <code>Link</code>
+header.  Any links to style sheets that are specified externally to the
+document are considered to occur before the links specified by the
+<code>xml-stylesheet</code> processing instructions.  This is the same
+as in HTML 4.0 (see <a href="http://www.w3.org/TR/REC-html40/present/styles.html#h-14.6">section
+14.6</a>).</p>
+
+<p>Here are some examples from HTML 4.0 with the corresponding
+processing instruction:</p>
+
+<pre>&lt;LINK href="mystyle.css" rel="style sheet" type="text/css"&gt;
+&lt;?xml-stylesheet href="mystyle.css" type="text/css"?&gt;
+
+&lt;LINK href="mystyle.css" title="Compact" rel="stylesheet"
+type="text/css"&gt;
+&lt;?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?&gt;
+
+&lt;LINK href="mystyle.css" title="Medium" rel="alternate stylesheet"
+type="text/css"&gt;
+&lt;?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium"
+type="text/css"?&gt;</pre>
+
+<p>Multiple <code>xml-stylesheet</code> processing instructions are
+also allowed with exactly the same semantics as with <code>LINK
+REL="stylesheet"</code>. For example,</p>
+
+<pre>&lt;LINK rel="alternate stylesheet" title="compact" href="small-base.css"
+type="text/css"&gt;
+&lt;LINK rel="alternate stylesheet" title="compact" href="small-extras.css"
+type="text/css"&gt;
+&lt;LINK rel="alternate stylesheet" title="big print" href="bigprint.css"
+type="text/css"&gt;
+&lt;LINK rel="stylesheet" href="common.css" type="text/css"&gt;</pre>
+
+<p>would be equivalent to:</p>
+
+<pre>&lt;?xml-stylesheet alternate="yes" title="compact" href="small-base.css"
+type="text/css"?&gt;
+&lt;?xml-stylesheet alternate="yes" title="compact" href="small-extras.css"
+type="text/css"?&gt;
+&lt;?xml-stylesheet alternate="yes" title="big print" href="bigprint.css"
+type="text/css"?&gt;
+&lt;?xml-stylesheet href="common.css" type="text/css"?&gt;</pre>
+
+
+
+<hr title="Separator from footer">
+
+<h2>
+<a name="References"></a>A References</h2>
+
+<dl>
+
+<dt>
+<a name="HTML">HTML40</a>
+</dt>
+<dd>World Wide Web
+Consortium. <i>HTML 4.0 Specification.</i> W3C Recommendation. See
+<a href="http://www.w3.org/TR/REC-html40">http://www.w3.org/TR/REC-html40</a>
+</dd>
+
+<dt>
+<a name="RFC2068">RFC2068</a>
+</dt>
+<dd>R. Fielding, J. Gettys, J. Mogul,
+H. Frystyk Nielsen, and T. Berners-Lee.  <i>Hypertext Transfer
+Protocol -- HTTP/1.1.</i>. IETF RFC 2068. See <a href="http://www.ietf.org/rfc/rfc2068.txt">http://www.ietf.org/rfc/rfc2068.txt</a>.</dd>
+
+<dt>
+<a name="RFC2396">RFC2396</a>
+</dt>
+<dd>T. Berners-Lee, R. Fielding, and
+L. Masinter.  <i>Uniform Resource Identifiers (URI): Generic
+Syntax</i>. IETF RFC 2396. See <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>.</dd>
+
+<dt>
+<a name="XML">XML10</a>
+</dt>
+<dd>World Wide Web Consortium. <i>Extensible
+Markup Language (XML) 1.0.</i> W3C Recommendation. See <a href="http://www.w3.org/TR/1998/REC-xml-19980210">http://www.w3.org/TR/1998/REC-xml-19980210</a>
+</dd>
+
+</dl>
+
+
+
+
+<h2>
+<a name="rationale"></a>B Rationale</h2>
+
+<p>There was an urgent requirement for a specification for style sheet
+linking that could be completed in time for the next release from
+major browser vendors.  Only by choosing a simple mechanism closely
+based on a proven existing mechanism could the specification be
+completed in time to meet this requirement.</p>
+
+<p>Use of a processing instruction avoids polluting the main document
+structure with application specific processing information.</p>
+
+<p>The mechanism chosen for this version of the specification is not a
+constraint on the additional mechanisms planned for future versions.
+There is no expectation that these will use processing instructions;
+indeed they may not include the linking information in the source
+document.</p>
+
+
+
+
+</body>
+</html>
diff --git a/data/test.jks b/data/test.jks
new file mode 100644
index 0000000..d45b8eb
--- /dev/null
+++ b/data/test.jks
Binary files differ
diff --git a/data/websig.conf b/data/websig.conf
new file mode 100644
index 0000000..e3da810
--- /dev/null
+++ b/data/websig.conf
@@ -0,0 +1,14 @@
+# default SAX parser is Apache's Xerces
+DEFAULT_SAX_PARSER      = org.apache.xerces.parsers.SAXParser
+
+localXmlUrl             = data/org/apache/xml/security/samples/output/voucher_uni.xml
+localGifUrl             = data/org/apache/xml/security/samples/input/UniLogoA.gif
+signatureOutputFileName = data/org/apache/xml/security/samples/output/Signature.xml
+remoteXmlUrl            = http://www.xmlsecurity.org/signed.xml
+remoteGifUrl            = http://www.xmlsecurity.org/signed.gif
+
+keystoreName            = data/org/apache/xml/security/samples/input/keystore.jks
+keystoreType		= JKS
+keyAlias                = test
+keystorePassword        = xmlsecurity
+keyPassword             = xmlsecurity
diff --git a/data/websigMiflet.xml b/data/websigMiflet.xml
new file mode 100644
index 0000000..f0746ec
--- /dev/null
+++ b/data/websigMiflet.xml
@@ -0,0 +1,42 @@
+<Book>
+    <Options>
+        <BookTitle>"The Websig Library"</BookTitle>
+        <BookSubTitle>"xmlsecurity.org"</BookSubTitle>
+        <BookAuthor>"Christian Geuer-Pollmann"</BookAuthor>
+        <BookVersion>"Volume 1"</BookVersion>
+        <BookCopyright>"Copyright \xa9 2001 Institute for Data Communications Systems"</BookCopyright>
+        <BookPublisher>""</BookPublisher>
+    </Options>
+    <FrontMatter>
+        <TitleFile>titlepage.mif</TitleFile>
+        <ContentsFile>contents.mif</ContentsFile>
+    </FrontMatter>
+    <Chapters>
+        <InsertAPIDoc>Packages Classes</InsertAPIDoc>
+        <Chapter>
+            <AlmanacFile>almanac.mif</AlmanacFile>
+        </Chapter>
+    </Chapters>
+    <BackMatter>
+        <SectionFile>sample-src\doc-files\appendix.html</SectionFile>
+        <IndexFile>index.mif</IndexFile>
+        <SectionFile>sample-src\doc-files\colophon.html</SectionFile>
+    </BackMatter>
+</Book>
+<!--
+    NOTE - The following command line options have no equivalent as
+    XML book options because they are implemented in the javadoc tool
+    and not in doclets: -bootclasspath, -classpath, -doclet,
+    -docletpath, -encoding, -extdirs, -help, -J, -locale, -package,
+    -private, -protected, -public, and -sourcepath.
+
+    These command line options have no equivalent because there are
+    easier ways to omit the pages:  -noalmanac, -nopackagepage.
+
+    These options are not included above because they are not
+    implemented in 1.2 Beta 1: <Link>, <LinkOffline>
+
+    The <Group> option is not included because it does not allow
+    wildcards.  The -group option allows wildcards, and so is more
+    versatile.
+-->
\ No newline at end of file
diff --git a/data/xmlsecurity.jin b/data/xmlsecurity.jin
new file mode 100644
index 0000000..ffc5b4a
--- /dev/null
+++ b/data/xmlsecurity.jin
@@ -0,0 +1,428 @@
+###
+### Jindent 3.5 property file -- http://www.jindent.com
+###
+
+
+
+### Jindent property format
+
+version                                   = "3.5"
+
+conventionString                          = "EEE, MMM d, ''yy"
+paddingParenthesis             = false
+spaceBeforeConditionBang          = false
+
+### General -- Convention
+
+date                                      = "EEE, MMM d, ''yy"
+conventionName                            = "XMLSecurity Style"
+conventionNote                            = "Formatted in $conventionName$ Style on $date$"
+conventionNotePosition                    = "none"
+blankLinesToSeparateConventionNote        = 2
+
+
+### General -- Jindent Note
+
+jindentNotePosition                       = "none"
+blankLinesToSeparateJindentNote           = 2
+
+
+
+### Header/Footer -- Header Template
+
+headerSmartMode                           = infinite
+
+headerIdentifyKey                         = "Redistribution and use"
+
+blankLinesBeforeHeader                    = 1
+header[00]                                = "/*"
+header[01]                                = " * The Apache Software License, Version 1.1"
+header[02]                                = " *"
+header[03]                                = " *"
+header[04]                                = " * Copyright (c) 1999 The Apache Software Foundation.  All rights "
+header[05]                                = " * reserved."
+header[06]                                = " *"
+header[07]                                = " * Redistribution and use in source and binary forms, with or without"
+header[08]                                = " * modification, are permitted provided that the following conditions"
+header[09]                                = " * are met:"
+header[10]                                = " *"
+header[11]                                = " * 1. Redistributions of source code must retain the above copyright"
+header[12]                                = " *    notice, this list of conditions and the following disclaimer. "
+header[13]                                = " *"
+header[14]                                = " * 2. Redistributions in binary form must reproduce the above copyright"
+header[15]                                = " *    notice, this list of conditions and the following disclaimer in"
+header[16]                                = " *    the documentation and/or other materials provided with the"
+header[17]                                = " *    distribution."
+header[18]                                = " *"
+header[19]                                = " * 3. The end-user documentation included with the redistribution,"
+header[20]                                = " *    if any, must include the following acknowledgment:  "
+header[21]                                = " *       "This product includes software developed by the"
+header[22]                                = " *        Apache Software Foundation (http://www.apache.org/).""
+header[23]                                = " *    Alternately, this acknowledgment may appear in the software itself,"
+header[24]                                = " *    if and wherever such third-party acknowledgments normally appear."
+header[25]                                = " *"
+header[26]                                = " * 4. The names "<WebSig>" and "Apache Software Foundation" must"
+header[27]                                = " *    not be used to endorse or promote products derived from this"
+header[28]                                = " *    software without prior written permission. For written "
+header[29]                                = " *    permission, please contact apache@apache.org."
+header[30]                                = " *"
+header[31]                                = " * 5. Products derived from this software may not be called "Apache","
+header[32]                                = " *    nor may "Apache" appear in their name, without prior written"
+header[33]                                = " *    permission of the Apache Software Foundation."
+header[34]                                = " *"
+header[35]                                = " * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED"
+header[36]                                = " * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES"
+header[37]                                = " * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE"
+header[38]                                = " * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR"
+header[39]                                = " * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,"
+header[40]                                = " * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT"
+header[41]                                = " * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF"
+header[42]                                = " * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND"
+header[43]                                = " * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,"
+header[44]                                = " * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT"
+header[45]                                = " * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF"
+header[46]                                = " * SUCH DAMAGE."
+header[47]                                = " * ===================================================================="
+header[48]                                = " *"
+header[49]                                = " * This software consists of voluntary contributions made by many"
+header[50]                                = " * individuals on behalf of the Apache Software Foundation and was"
+header[51]                                = " * originally based on software copyright (c) 2001, Institute for"
+header[52]                                = " * Data Communications Systems, <http://www.nue.et-inf.uni-siegen.de/>."
+header[53]                                = " * The development of this software was partly funded by the European "
+header[54]                                = " * Commission in the <WebSig> project in the ISIS Programme. "
+header[55]                                = " * For more information on the Apache Software Foundation, please see"
+header[56]                                = " * <http://www.apache.org/>."
+header[57]                                = " */"
+blankLinesAfterHeader                     = 0
+
+
+### Header/Footer -- Footer Template
+
+footerSmartMode                           = infinite
+
+footerIdentifyKey                         = ""
+
+blankLinesBeforeFooter                    = 0
+footer[00]                                = ""
+blankLinesAfterFooter                     = 0
+
+
+
+### Indentation -- Misc
+
+tabulatorSize                             = 3
+indentSize                                = 3
+firstLevelIndent                          = 0
+indentCaseFromSwitch                      = 0
+labelNewLine                              = false
+indentLabels                              = true
+
+minimumCommentIndent                      = 4
+
+indentLeadingsByTabs                      = false
+indentCommentsByTabs                      = false
+indentDeclarationsByTabs                  = false
+indentAssignmentsByTabs                   = false
+
+
+### Indentation -- Alignment
+
+alignComments                             = false
+alignDeclarations                         = false
+alignAssignments                          = false
+alignTernaryConditions                    = true
+alignTernaryExpressions                   = true
+alignTooLongComments                      = false
+alignTooLongDeclarations                  = false
+alignTooLongAssignments                   = false
+
+
+
+### Braces -- Style
+
+leftBraceNewLineGeneral                   = false
+rightBraceNewLineGeneral                  = false
+indentLeftBraceGeneral                    = 1
+indentRightBraceGeneral                   = 0
+indentAfterRightBraceGeneral              = 1
+
+cuddleEmptyBracesGeneral                  = false
+indentCuddledBracesGeneral                = 1
+
+noBlankLinesAfterLeftBraceGeneral         = false
+
+
+leftBraceNewLineClassInterface            = false
+rightBraceNewLineClassInterface           = false
+indentLeftBraceClassInterface             = 1
+indentRightBraceClassInterface            = 0
+indentAfterRightBraceClassInterface       = 1
+
+cuddleEmptyBracesClassInterface           = false
+indentCuddledBracesClassInterface         = 1
+
+noBlankLinesAfterLeftBraceClassInterface  = false
+
+
+leftBraceNewLineMethod                    = false
+rightBraceNewLineMethod                   = false
+indentLeftBraceMethod                     = 1
+indentRightBraceMethod                    = 0
+indentAfterRightBraceMethod               = 1
+
+cuddleEmptyBracesMethod                   = true
+indentCuddledBracesMethod                 = 1
+
+noBlankLinesAfterLeftBraceMethod          = false
+
+
+leftBraceNewLineTryCatch                  = false
+rightBraceNewLineTryCatch                 = false
+indentLeftBraceTryCatch                   = 1
+indentRightBraceTryCatch                  = 0
+indentAfterRightBraceTryCatch             = 1
+
+cuddleEmptyBracesTryCatch                 = true
+indentCuddledBracesTryCatch               = 1
+
+noBlankLinesAfterLeftBraceTryCatch        = false
+
+
+### Braces -- Insert At
+
+insertBracesAtIfElse                      = true
+insertBracesAtFor                         = true
+insertBracesAtWhile                       = true
+insertBracesAtDoWhile                     = true
+
+insertParenthesisAtConditions             = true
+
+
+### Braces -- If-Else
+
+singleIfStatementInOneLine                = false
+singleElseStatementInOneLine              = false
+specialElseIfTreatment                    = true
+
+
+
+### JavaDoc -- Misc
+
+deleteJavaDocComments                     = false
+formatJavaDocComments                     = true
+
+insertMissingJavaDocTags                  = false
+deleteObsoleteJavaDocTags                 = true
+
+createPublicClassInterfaceJavaDocs        = true
+createFriendlyClassInterfaceJavaDocs      = true
+createPrivateClassInterfaceJavaDocs       = true
+createProtectedClassInterfaceJavaDocs     = true
+
+createPublicMethodJavaDocs                = true
+createFriendlyMethodJavaDocs              = true
+createPrivateMethodJavaDocs               = false
+createProtectedMethodJavaDocs             = true
+
+createPublicFieldJavaDocs                 = true
+createFriendlyFieldJavaDocs               = true
+createPrivateFieldJavaDocs                = false
+createProtectedFieldJavaDocs              = true
+
+
+### JavaDoc -- Templates
+
+sortExceptionsInTemplates                 = true
+
+javaDocMethodTop[00]                      = "/**"
+javaDocMethodTop[01]                      = " * Method $objectName$"
+javaDocMethodTop[02]                      = " *"
+javaDocMethodParamSeparator[00]           = ""
+javaDocMethodParam[00]                    = " * @param $paramName$"
+javaDocMethodReturn[00]                   = ""
+javaDocMethodExceptionSeparator[00]       = ""
+javaDocMethodException[00]                = " * @throws $exceptionName$"
+javaDocMethodBottom[00]                   = " */"
+
+javaDocConstructorTop[00]                 = "/**"
+javaDocConstructorTop[01]                 = " * Constructor $objectName$"
+javaDocConstructorTop[02]                 = " *"
+javaDocConstructorParamSeparator[00]      = ""
+javaDocConstructorParam[00]               = " * @param $paramName$"
+javaDocConstructorExceptionSeparator[00]  = ""
+javaDocConstructorException[00]           = " * @throws $exceptionName$"
+javaDocConstructorBottom[00]              = " */"
+
+javaDocClass[00]                          = "/**"
+javaDocClass[01]                          = " * Class $objectName$"
+javaDocClass[02]                          = " *"
+javaDocClass[03]                          = " * @author $Author$"
+javaDocClass[04]                          = " * @version $Revision$"
+javaDocClass[05]                          = " */"
+
+javaDocInterface[00]                      = "/**"
+javaDocInterface[01]                      = " * Interface $objectName$"
+javaDocInterface[02]                      = " *"
+javaDocInterface[03]                      = " * @author $Author$"
+javaDocInterface[04]                      = " * @version $Revision$"
+javaDocInterface[05]                      = " */"
+
+javaDocField[00]                          = "/** Field $objectName$           */"
+
+
+
+### Comments -- Format/Delete
+
+deleteBlockComments                       = false
+deleteSingleLineComments                  = false
+deleteTrailingComments                    = false
+deleteEndOfLineComments                   = false
+
+formatBlockComments                       = false
+formatSingleLineComments                  = false
+formatTrailingComments                    = false
+formatEndOfLineComments                   = false
+
+
+### Comments -- Exceptions
+
+neverIndentFirstColumnComments            = false
+neverFormatFirstColumnComments            = false
+
+neverFormatHeader                         = false
+neverFormatFooter                         = false
+
+
+
+### Separation -- Misc
+
+keepBlankLines                            = 0
+
+minLinesToInsertBlankLineInClasses        = 3
+minLinesToInsertBlankLineInMethods        = 3
+
+
+### Separation -- Separate
+
+separateChunksByComments                  = true
+separateChunksByTooLongLines              = true
+allowBreakSeparatedFromCaseBlock          = false
+blankLinesBetweenCaseBlocks               = 1
+blankLinesBetweenChunks                   = 1
+
+comparableImportDepth                     = 2
+blankLinesToSeparateImports               = 0
+
+blankLinesBetweenClassInterface           = 2
+
+
+### Separation -- Insert Blank Lines
+
+blankLinesAfterDeclarations               = 1
+blankLinesAfterMethods                    = 1
+blankLinesAfterClasses                    = 1
+blankLinesAfterInterfaces                 = 1
+
+blankLinesBeforeJavaDocComments           = 1
+blankLinesAfterJavaDocComments            = 0
+
+blankLinesBeforeBlockComments             = 1
+blankLinesAfterBlockComments              = 0
+
+blankLinesBeforeSingleLineComments        = 1
+blankLinesAfterSingleLineComments         = 0
+
+blankLinesBeforeEndOfLineComments         = 1
+blankLinesAfterEndOfLineComments          = 0
+
+blankLinesAfterSwitch                     = 1
+blankLinesAfterPackage                    = 3
+blankLinesAfterLastImport                 = 2
+
+blankLinesBeforeFilteredCode              = 1
+blankLinesAfterFilteredCode               = 0
+
+
+
+### Whitespaces -- Padding
+
+separateAssignmentOperators               = true
+separateConditionalOperators              = true
+separateComparisonOperators               = true
+separateNumericalOperators                = true
+
+paddingCastParenthesis                    = false
+paddingStatementParenthesis               = false
+paddingMethodDeclarationParenthesis       = false
+paddingMethodCallParenthesis              = false
+
+paddingBrackets                           = false
+paddingBraces                             = true
+
+
+### Whitespaces -- Space Before
+
+spaceBeforeMethodDeclarationParenthesis   = false
+spaceBeforeMethodCallParenthesis          = false
+spaceBeforeBrackets                       = false
+spaceBeforeBracketsInTypes                = false
+spaceBeforeStatementParenthesis           = true
+
+spaceBeforeBang                           = false
+spaceAfterBang                            = false
+spaceBeforeBangAfterAndOr                 = false
+spaceAfterBangAfterAndOr                  = false
+
+spaceBeforeTilde                          = false
+spaceAfterTilde                           = false
+
+spaceBeforeCaseColon                      = true
+
+spaceBeforeAssertColon                    = true
+spaceAfterAssertColon                     = true
+
+
+### Whitespaces -- Space After
+
+spaceAfterComma                           = true
+spaceAfterSemicolon                       = true
+spaceAfterCasting                         = true
+
+
+### Whitespaces -- No Spaces
+
+noSpacesInEmptyForExpressions             = true
+
+
+
+### Line Wrapping -- Misc
+
+maxFieldElementsPerLine                   = infinite
+
+wrapLines                                 = true
+wrapBecauseOfComments                     = true
+wrapLongMethodNames                       = true
+maxLineLength                             = 80
+deepIndent                                = 45
+forceIndent                               = 8
+forceIndentTolerance                      = 4
+
+deepIndentForMultipleDeclarations         = 45
+
+allowWrappingAfterAssignments             = true
+wrapDeclarationAssignmentsToRightSide     = false
+allowWrappingAfterParenthesis             = true
+preferWrappingAfterThrows                 = true
+
+wrapAfterConditionalOperators             = false
+wrapAfterComparisonOperators              = false
+wrapAfterNumericalOperators               = false
+
+
+alwaysWrapThrows                          = false
+alwaysWrapExtends                         = false
+alwaysWrapImplements                      = false
+
+indentWrappedThrows                       = 0
+indentWrappedExtends                      = 0
+indentWrappedImplements                   = 0
diff --git a/doc/site/forrest-targets.ent b/doc/site/forrest-targets.ent
new file mode 100644
index 0000000..994c0b7
--- /dev/null
+++ b/doc/site/forrest-targets.ent
@@ -0,0 +1,174 @@
+<!--
+This build.xml snippet contains Forrest targets for Ant 1.5+.  It checks that
+the user has set ${forrest.home}, either in one of:
+  build.properties
+  project.properties
+  ant.properties
+  .ant.properties
+or with the FORREST_HOME environment variable, and prints an informative error
+message if not found.
+
+Usage:
+1) Copy this file to somewhere in your project.
+2) Add the following to the top of your project's Ant build.xml script
+(adjusting the path):
+
+  <!DOCTYPE project [
+    <!ENTITY forrest-targets SYSTEM "file:./forrest-targets.ent">
+  ]>
+
+3) Before the closing '</project>' in your build.xml, add this:
+
+  &forrest-targets;
+  
+This is like expanding a macro: it pulls in the contents of this file.
+
+A minimal build.xml would thus be:
+
+<!DOCTYPE project [
+<!ENTITY forrest-targets SYSTEM "file:./forrest-targets.ent">
+]>
+
+<project default="site">
+    &forrest-targets;
+</project>
+-->
+
+  <target name="site" depends="forrest.init" description="Generates static HTML documentation">
+    <ant antfile="${forrest.home}/forrest.antproxy.xml" target="site"/>
+  </target>
+
+  <target name="webapp" depends="forrest.init" description="Generates an unpackaged webapp of the website">
+    <ant antfile="${forrest.home}/forrest.antproxy.xml" target="webapp"/>
+  </target>
+
+  <target name="war" depends="forrest.init" description="Generates a .war file containing the website">
+    <ant antfile="${forrest.home}/forrest.antproxy.xml" target="war"/>
+  </target>
+
+  <target name="validate" depends="forrest.init" description="Validates XML documentation files">
+    <ant antfile="${forrest.home}/forrest.antproxy.xml" target="validate"/>
+  </target>
+
+  <target name="forrest.init" depends="forrest.sethome, forrest.home.defined"/>
+
+  <target name="forrest.sethome" depends="forrest.loadenv,
+  forrest.checkenv, forrest.checkhome, forrest.check-build.properties,
+  forrest.check-project.properties, forrest.check-ant.properties,
+  forrest.check-.ant.properties"/>
+
+  <target name="forrest.loadenv" unless="forrest.home.present">
+    <property environment="env"/>
+    <echo level="verbose">Forrest: Got ${env.FORREST_HOME}</echo>
+  </target>
+
+  <target name="forrest.checkenv" if="env.FORREST_HOME">
+    <echo level="verbose">Found $FORREST_HOME..</echo>
+    <property name="forrest.home" location="${env.FORREST_HOME}"/>
+    <echo level="verbose">forrest.home set to ${forrest.home}</echo>
+    <available file="${forrest.home}" type="dir" property="forrest.home.present"/>
+  </target>
+
+
+  <target name="forrest.checkhome">
+    <available file="${forrest.home}" type="dir" property="forrest.home.present"/>
+    <available file="build.properties" type="file" property="build.properties.present"/>
+    <available file="project.properties" type="file" property="project.properties.present"/>
+    <available file="ant.properties" type="file" property="ant.properties.present"/>
+    <available file=".ant.properties" type="file" property=".ant.properties.present"/>
+  </target>
+
+  <!-- No we can't extract the commonalities below into an antcall'ed target,
+  because it wouldn't be able to set forrest.home -->
+  <target name="forrest.check-build.properties" unless="forrest.home.present"
+  if="build.properties.present">
+    <echo level="verbose">Forrest: Checking build.properties..</echo>
+    <loadproperties srcfile="build.properties">
+      <filterchain>
+        <linecontains>
+          <contains value="forrest.home"/>
+        </linecontains>
+      </filterchain>
+    </loadproperties>
+    <available file="${forrest.home}" type="dir" property="forrest.home.present"/>
+
+  </target>
+
+  <target name="forrest.check-project.properties" unless="forrest.home.present"
+  if="project.properties.present">
+    <echo level="verbose">Forrest: Checking project.properties..</echo>
+    <loadproperties srcfile="project.properties">
+      <filterchain>
+        <linecontains>
+          <contains value="forrest.home"/>
+        </linecontains>
+      </filterchain>
+    </loadproperties>
+    <available file="${forrest.home}" type="dir" property="forrest.home.present"/>
+  </target>
+
+  <target name="forrest.check-ant.properties" unless="forrest.home.present"
+  if="ant.properties.present">
+    <echo level="verbose">Forrest: Checking ant.properties..</echo>
+    <loadproperties srcfile="ant.properties">
+      <filterchain>
+        <linecontains>
+          <contains value="forrest.home"/>
+        </linecontains>
+      </filterchain>
+    </loadproperties>
+    <available file="${forrest.home}" type="dir" property="forrest.home.present"/>
+  </target>
+
+  <target name="forrest.check-.ant.properties" unless="forrest.home.present"
+  if=".ant.properties.present">
+    <echo level="verbose">Forrest: Checking .ant.properties..</echo>
+    <loadproperties srcfile=".ant.properties">
+      <filterchain>
+        <linecontains>
+          <contains value="forrest.home"/>
+        </linecontains>
+      </filterchain>
+    </loadproperties>
+    <available file="${forrest.home}" type="dir" property="forrest.home.present"/>
+  </target>
+
+  <target name="forrest.home.defined" depends="forrest.sethome" unless="forrest.home.present">
+    <property name="path" value="${user.home}/xml-forrest/build/dist/shbat"/>
+    <pathconvert targetos="windows" property="winpath">
+      <path>
+        <pathelement location="${path}"/>
+      </path>
+    </pathconvert>
+    <pathconvert targetos="unix" property="unixpath">
+      <path>
+        <pathelement
+          location="${path}"/>
+      </path>
+    </pathconvert>
+
+    <echo>
+      ----------------------------------------------
+      To run this target, you need Forrest installed.
+      Please do the following:
+
+      export CVSROOT=:pserver:anoncvs@cvs.apache.org:/home/cvspublic
+      cvs checkout xml-forrest
+      cd xml-forrest
+      build      (Windows)
+      ./build.sh (Unix)
+
+      Then either:
+
+      - Set FORREST_HOME as the Forrest build instructions describe
+      - Create a build.properties, with the forrest.home property pointing to
+        the forrest shbat directory, eg:
+
+        forrest.home=${winpath}  (Windows)
+        forrest.home=${unixpath}  (Unix)
+
+        (adjusting the path according to where your xml-forrest is)
+      ----------------------------------------------
+    </echo>
+    <fail message="Need to define $${forrest.home}"/>
+  </target>
diff --git a/doc/site/forrest.properties b/doc/site/forrest.properties
new file mode 100644
index 0000000..d9eb7c8
--- /dev/null
+++ b/doc/site/forrest.properties
@@ -0,0 +1,111 @@
+# Copyright 2003-2004 The Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#     http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+##############
+# Properties used by forrest.build.xml for building the website
+##############
+
+# Prints out a summary of Forrest settings for this project
+#forrest.echo=true 
+
+# Project name (used to name .war file)
+#project.name=my-project
+
+# Specifies name of Forrest skin to use
+#project.skin=forrest-site
+#project.skin=avalon-tigris
+#project.skin=krysalis-site
+
+
+##############
+# layout properties
+
+# Properties that must be set to override the default locations
+#
+# Parent properties must be set. This usually means uncommenting
+# project.content-dir if any other property using it is uncommented
+
+#project.status=status.xml
+#project.content-dir=src/documentation
+#project.conf-dir=${project.content-dir}/conf
+#project.sitemap=${project.content-dir}/sitemap.xmap
+#project.xdocs-dir=${project.content-dir}/content/xdocs
+#project.stylesheets-dir=${project.content-dir}/resources/stylesheets
+#project.images-dir=${project.content-dir}/resources/images
+#project.schema-dir=${project.content-dir}/resources/schema
+#project.skins-dir=${project.content-dir}/skins
+#project.skinconf=${project.content-dir}/skinconf.xml
+#project.lib-dir=${project.content-dir}/lib
+#project.classes-dir=${project.content-dir}/classes
+
+
+##############
+# Cocoon catalog entity resolver properties
+
+# A local catalog to supplement the default Forrest catalog
+#project.catalog=${project.schema-dir}/catalog
+
+# The verbosity level for the entity resolver (1..10)
+#forrest.catalog.verbosity=1
+
+
+##############
+# validation properties
+
+# These props determine if validation is performed at all
+# Values are inherited unless overridden.
+# Eg, if forrest.validate=false, then all others are false unless set to true.
+#forrest.validate=true
+#forrest.validate.xdocs=${forrest.validate}
+#forrest.validate.skinconf=${forrest.validate}
+#forrest.validate.sitemap=${forrest.validate}
+#forrest.validate.stylesheets=${forrest.validate}
+#forrest.validate.skins=${forrest.validate}
+#forrest.validate.skins.stylesheets=${forrest.validate.skins}
+
+
+# Key:
+# *.failonerror=(true|false)    stop when an XML file is invalid
+# *.includes=(pattern)         Comma-separated list of path patterns to validate
+# *.excludes=(pattern)         Comma-separated list of path patterns to not validate
+
+#forrest.validate.failonerror=true
+#forrest.validate.includes=**/*
+#forrest.validate.excludes=
+#
+#forrest.validate.xdocs.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.xdocs.includes=**/*.x*
+#forrest.validate.xdocs.excludes=site.xml
+#
+#forrest.validate.skinconf.includes=${skinconf-file}
+#forrest.validate.skinconf.excludes=
+#forrest.validate.skinconf.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.sitemap.includes=${sitemap-file}
+#forrest.validate.sitemap.excludes=
+#forrest.validate.sitemap.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.stylesheets.includes=**/*.xsl
+#forrest.validate.stylesheets.excludes=
+#forrest.validate.stylesheets.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.skins.includes=**/*
+#forrest.validate.skins.excludes=**/*.xsl
+#forrest.validate.skins.failonerror=${forrest.validate.failonerror}
+#
+#forrest.validate.skins.stylesheets.includes=**/*.xsl
+#forrest.validate.skins.stylesheets.excludes=
+#forrest.validate.skins.stylesheets.failonerror=${forrest.validate.skins.failonerror}
diff --git a/doc/site/src/documentation/README.txt b/doc/site/src/documentation/README.txt
new file mode 100644
index 0000000..4545b58
--- /dev/null
+++ b/doc/site/src/documentation/README.txt
@@ -0,0 +1,10 @@
+This is the base documentation directory. It usually contains two files:
+
+skinconf.xml     # This file customizes Forrest for your project. In it, you
+                 # tell forrest the project name, logo, copyright info, etc
+
+sitemap.xmap     # Optional. This sitemap overrides the default one bundled
+                 # with Forrest. Typically, one would copy a sitemap from
+                 # xml-forrest/src/resources/conf/sitemap.xmap, and customize
+                 # it.
+
diff --git a/doc/site/src/documentation/conf/cli.xconf b/doc/site/src/documentation/conf/cli.xconf
new file mode 100644
index 0000000..708f3e2
--- /dev/null
+++ b/doc/site/src/documentation/conf/cli.xconf
@@ -0,0 +1,177 @@
+<?xml version="1.0"?>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!--+
+    |  This is the Apache Cocoon command line configuration file. 
+    |  Here you give the command line interface details of where
+    |  to find various aspects of your Cocoon installation.
+    |
+    |  If you wish, you can also use this file to specify the URIs
+    |  that you wish to generate.
+    |
+    |  The current configuration information in this file is for
+    |  building the Cocoon documentation. Therefore, all links here 
+    |  are relative to the build context dir, which, in the build.xml 
+    |  file, is set to ${build.context} 
+    |
+    |  Options:
+    |    verbose:            increase amount of information presented
+    |                        to standard output (default: false)
+    |    follow-links:       whether linked pages should also be 
+    |                        generated (default: true)
+    |    precompile-only:    precompile sitemaps and XSP pages, but 
+    |                        do not generate any pages (default: false)
+    |    confirm-extensions: check the mime type for the generated page
+    |                        and adjust filename and links extensions
+    |                        to match the mime type 
+    |                        (e.g. text/html->.html)
+    |
+    | CVS: $Id$
+    +-->
+    
+<cocoon verbose="true"  
+        follow-links="true" 
+        precompile-only="false" 
+        confirm-extensions="false">
+
+   <!--+
+       | Broken link reporting options:
+       |   Report into a text file, one link per line:
+       |     <broken-links type="text" report="filename"/>
+       |   Report into an XML file:
+       |     <broken-links type="xml" report="filename"/>
+       |   Ignore broken links (default):
+       |     <broken-links type="none"/>
+       |   When a page includes an error, should a page be generated?
+       |     
+       |   Two attributes to this node specify whether a page should
+       |   be generated when an error occured. 'generate' specifies 
+       |   whether a page should be generated (default: true) and
+       |   extension specifies an extension that should be appended
+       |   to the generated page's filename (default: none)
+       |     <broken-links generate="true" extension=".error.txt"/>
+       |
+       +-->
+   <broken-links type="xml" 
+                 file="../brokenlinks.xml"
+                 generate="false"
+                 extension=".error"/>
+   
+   <!--+
+       |  Load classes at startup. This is necessary for generating
+       |  from sites that use SQL databases and JDBC.
+       |  The <load-class> element can be repeated if multiple classes
+       |  are needed.
+       +-->
+   <!--
+   <load-class>org.firebirdsql.jdbc.Driver</load-class>
+   -->
+
+   <!--+
+       |
+       +-->
+   <logging log-kit="WEB-INF/logkit.xconf" logger="cli" level="ERROR" />
+
+   <!--+
+       |  The context directory is usually the webapp directory
+       |  containing the sitemap.xmap file.
+       |
+       |  The config file is the cocoon.xconf file.
+       |
+       |  The work directory is used by Cocoon to store temporary
+       |  files and cache files.
+       |  
+       |  The destination directory is where generated pages will
+       |  be written (assuming the 'simple' mapper is used)
+       +-->
+   <context-dir>.</context-dir>
+   <config-file>WEB-INF/cocoon.xconf</config-file>
+   <work-dir>../temp/docs</work-dir>
+   <!-- Overridden in forrest.build.xml 
+   <dest-dir>../docs</dest-dir>
+   -->
+
+   <!--+
+       | Specifies the filename to be appended to URIs that
+       | refer to a directory (i.e. end with a forward slash).
+       +-->
+   <default-filename>index.html</default-filename>
+
+   <!--+
+       |  Specifies a user agent string to the sitemap when
+       |  generating the site.
+       +-->
+   <!--
+   <user-agent>xxx</user-agent>
+   -->
+
+   <!--+
+       |  Specifies an accept string to the sitemap when generating
+       |  the site.
+       +-->
+   <accept>*/*</accept>
+   
+   <!--+
+       |  Specifies the URIs that should be generated (using <uri>
+       |  elements, and (if necessary) what should be done with the
+       |  generated pages.
+       |
+       |  The old behaviour - appends uri to the specified destination
+       |  directory (as specified in <dest-dir>):
+       |
+       |   <uri>documents/index.html</uri>
+       |
+       |  Append: append the generated page's URI to the end of the 
+       |  source URI:
+       |
+       |   <uri type="append" src-prefix="documents/" src="index.html"
+       |   dest="build/dest/"/>
+       |
+       |  Replace: Completely ignore the generated page's URI - just 
+       |  use the destination URI:
+       |
+       |   <uri type="replace" src-prefix="documents/" src="index.html" 
+       |   dest="build/dest/docs.html"/>
+       |
+       |  Insert: Insert generated page's URI into the destination 
+       |  URI at the point marked with a * (example uses fictional 
+       |  zip protocol)
+       |
+       |   <uri type="insert" src-prefix="documents/" src="index.html" 
+       |   dest="zip://*.zip/page.html"/>
+       |
+       +-->
+
+   <!--+
+       | Excludes added to XML Web site to allow mirrors.ehtml to
+       | build properly
+       +-->
+    <exclude pattern="c/apiDocs/**" />
+	<exclude pattern="Java/api/**" />
+
+   <uri src="favicon.ico"/>
+
+   <!--+
+       |  File containing URIs (plain text, one per
+       |  line).
+       +-->
+   <!--
+   <uri-file></uri-file>
+   -->
+   
+</cocoon>
+
diff --git a/doc/site/src/documentation/content/xdocs/Java/api.xml b/doc/site/src/documentation/content/xdocs/Java/api.xml
new file mode 100644
index 0000000..759a87c
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/api.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document> 
+  <header> 
+    <title>Java API Documentation</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Javadoc Generated Documentation</title>
+      <p>&packagenamelong; comes packaged with API documentation.</p>
+      <p>This documentation is generated automatically from the Javadoc-style
+	comments inside the source files.  Click on one of the links below to
+	go to the appropriate API documentation.</p>
+    </section>
+    <section>
+      <title>&packagename; API Documentation</title>
+    <ul>
+      <li><jump href="ext:java/docs/full-api">Full API documentation</jump></li>
+      <li><jump href="ext:java/docs/hierachry">Hierarchy for all the packages</jump></li>
+    </ul>
+    </section>
+  </body>
+</document>
diff --git a/doc/site/src/documentation/content/xdocs/Java/examples.xml b/doc/site/src/documentation/content/xdocs/Java/examples.xml
new file mode 100644
index 0000000..106bb44
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/examples.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>Java Examples</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>XML Signatures</title>
+      <p>
+	Part of this software can be used to create and verify arbitrary forms
+	of XML Signatures. The documentation available here is not very huge;
+	my first approach is to supply usage examples which are available in
+	the <code>src_samples/</code> directory to give interested users a
+	first starting point to jump-start with XML Signature. 
+      </p>
+      <note>
+	The samples divide into two groups: Samples that <em>create</em> and
+	samples that <em>verify</em> Signatures. Eventually, you should adjust
+	the verifying program to another filename if you get
+	<code>FileNotFoundException</code>s.
+      </note>
+    </section>
+	<section>
+	  <title>XML Encryption</title>
+	  <p>
+		As with signatures, samples are provided to show how to encrypt
+		and decrypt XML content.  See 
+		<code>src_samples/org/apache/xml/security/samples/encryption</code>.
+	  </p>
+	  <p>
+		The samples can be compiled and run using <code>ant encrypt</code>
+		and <code>ant decrypt</code>.
+	  </p>
+	</section>
+  </body>
+</document>
diff --git a/doc/site/src/documentation/content/xdocs/Java/faq.xml b/doc/site/src/documentation/content/xdocs/Java/faq.xml
new file mode 100644
index 0000000..e340a59
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/faq.xml
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V1.1//EN" "dtd/faq-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<faqs title="Frequently Asked Questions - Java">
+  <part id="general_j">
+    <title>Questions about Java</title>
+    <faq id="security_j">
+      <question>
+	I have a Java-(security/cryptography) problem. Can you help me?
+      </question>
+      <answer>
+	<p>
+	  Go to the <link href="ext:javaforum">java forum</link> of Sun. You can
+	  find forums where you can ask questions like &quot;How do I generate
+	  a keypair&quot;, etc.
+	</p>
+      </answer>
+    </faq>
+    <faq id="xml_j">
+      <question>
+	I have a Java-XML problem.
+      </question>
+      <answer>
+	<p>
+	  Go to the <link href="ext:javaforum">java forum</link> of Sun, section
+	  Java Technology &amp; XML and have a look at <link
+	    href="ext:xml.apache.org/xml4j-used"> Apache Xerces</link>.
+	</p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="specific_">
+    <title>Questions about this package</title>
+    <faq id="crimson">
+      <question>
+	I'm using Crimson, but it throws Exceptions. Why?
+      </question>
+      <answer>
+	<p>
+	  Crimson is not supported at the moment. The main reason is that
+	  Crimson did not support the
+	  <code>org.w3c.dom.traversal.TreeWalker</code> interface in the
+	  past. Additionally, it does not support the
+	  <code>org.apache.xerces.dom.DocumentImpl.putIdentifier(String ID,
+	    Element e)</code> functionality where Xerces allows us to enable ID
+	  attributes during document generation.
+	</p>
+	<p>
+	  Use <link href="ext:xml.apache.org/xml4j-used">Apache Xerces</link>
+	  instead of Crimson.
+	</p>
+      </answer>
+    </faq>
+    <faq id="bouncy">
+      <question>
+	What's up with the Bouncy Castle CSP? / Where is my CSP?
+      </question>
+      <answer>
+	<p>
+	  There is <em>no</em> JCE bundled together with this
+	  distribution. This is because the Apache Project web site is hosted
+	  in the US where some export restrictions apply to the cryptographic
+	  primitives. 
+	</p>
+	<p>
+	  The nice guys from the <jump href="ext:bouncy">Legion of Bouncy
+	    Castle</jump> where so helpful to supply their JCE in a simple JAR
+	  package so that we can simply fetch it during the compilation process
+	  and put it into the <code>libs/</code> directory. When you use the
+	  ant makefile <code>build.xml</code> and simply say <code>ant
+	    compile</code> or <code>ant get-jce</code>, <code>ant</code> tries
+	  to fetch this JAR from the australian server. After that step, the
+	  compilation works completely.  
+	</p>
+	<p>
+	  The ant make tools initiates an automated download of the
+	  BouncyCastle JCE. The file is downloaded into the <code>libs/</code>
+	  directory and a &quot;bc-&quot; is prepended to the filename. This is
+	  done because we want the provider name (bc means BouncyCastle) being
+	  visible in the JAR's filename. 
+	</p>
+	<note>
+	  The fact that we <em>use</em> Bouncy in this project does not mean
+	  that you <em>must</em> use it, it's only the default. If you take a
+	  look at the configuration
+	  <code>src/org/apache/xml/security/resource/config.xml</code>, you'll
+	  notice the sections which do integrate these alternative JCEs.
+	</note> 		
+	<p>
+	  More information can be found in the <link
+	    href="site:java/installation">Installation</link> section.
+	</p>
+      </answer>
+    </faq>
+    <faq id="logging">
+      <question>
+	How do I enable/turn off logging?
+      </question>
+      <answer>
+	<p>
+	  The logging is configured in the <code>config.xml</code> file which
+	  either in the <code>xmlsec.jar</code> file or in the class path. This
+	  is a little bit complicated as config.xml is used both for library
+	  wide configurations like algorithms as well as for the user setting
+	  about log4j. This will be changed someday ;-))
+	</p>
+	<p>OK, so it goes: In the 
+	  <jump
+	    href="http://cvs.apache.org/viewcvs.cgi/xml-security/src/org/apache/xml/security/resource/config.xml?rev=HEAD&amp;content-type=text/vnd.viewcvs-markup">
+	    <code>xml-security/src/org/apache/xml/security/resource/config.xml</code>
+	  </jump> file, there is an element called
+	  <code>&lt;log4j:configuration&gt;</code>. This element contains the
+	  XML style configuration information as defined in the 
+	  <jump
+	    href="http://jakarta.apache.org/log4j/docs/api/org/apache/log4j/xml/DOMConfigurator.html">
+	    log4j DOMConfigurator class
+	  </jump>. You can find examples 
+	  <jump href="http://cvs.apache.org/viewcvs.cgi/jakarta-log4j/tests/input/xml/">here</jump>
+	</p>
+      </answer>
+    </faq>
+    <faq id="baseURI">
+      <question>
+	What is the meaning of <code>BaseURI</code>?
+      </question>
+      <answer>
+	<p>
+	  When you work with URIs like
+	  &quot;<code>http://www.example.com/index.html</code>&quot;, it is
+	  quite sure what you mean as this is an absolute URL, i.e. it is clear
+	  which protocol ise used to fetch which file from which server. When
+	  you use such a URL inside a signature, the software can automatically
+	  figure out what you sign. But when you sign something in your local
+	  file system or if you use a relative path like
+	  &quot;<code>../1.txt</code>&quot;, it's not possible to understand
+	  this reference without some context. <em>This</em> context is the
+	  <code>BaseURI</code>. For instance, if you sign
+	  <code>URI=&quot;../1.txt&quot;</code> and the
+	  <code>BaseURI=&quot;file:///home/user/work/signature.xml&quot;</code>, 
+	  it is clear that the file
+	  <code>BaseURI=&quot;file:///home/user/1.txt&quot;</code> is to be
+	  signed. But when you create the signature, the file
+	  <code>BaseURI=&quot;file:///home/user/work/signature.xml&quot;</code>
+	  does not yet exist; therefore, you have to supply the URL where you
+	  intend to store the signature later (relative to the signed objects). 
+	</p>
+	<p>
+	  The String BaseURI is the systemID on which the Object will be stored
+	  in the future. This is needed to resolve relative links in the
+	  <code>Reference</code> elements which point to the filesystem or
+	  something similar. 
+	</p>
+	<p>
+	  Example: Imagine that you want to create a signature to store it on a
+	  web server as
+	  <code>http://www.acme.com/signatures/sig1.xml</code>. So
+	  <code>BaseURI=&quot;http://www.acme.com/sig1.xml&quot;</code>. This
+	  means that if you create a <code>Reference</code> with
+	  <code>URI=&quot;./index.html&quot;</code>, the library can easily use
+	  it's HTTPResourceResolver to fetch
+	  <code>http://www.acme.com/index.html</code> without that you have to
+	  say <code>URI=&quot;http://www.acme.com/index.html&quot;</code>. 
+	</p>
+      </answer>
+    </faq>
+    <faq id="examples">
+      <question>
+	How do I use the package to generate and verify a signature?
+      </question>
+      <answer>
+	<p>
+	  Checkout the samples in
+	  <code>src_samples/org/apache/xml/security/samples/signature/</code>. 
+	</p>
+	<note>
+	  The samples divide into two groups: Samples that <em>create</em> and
+	  samples that <em>verify</em> Signatures. Eventually, you should
+	  adjust the verifying program to another filename if you get
+	  <code>FileNotFoundException</code>s.
+	</note>
+      </answer>
+    </faq>
+    <faq id="jdk140">
+      <question>
+	I'm using SUN JDK v1.4.0 or v1.4.1 and it get some exceptions. Any clues?
+      </question>
+      <answer>
+	<p>
+	  After SUN released the  <jump href="ext:java"> Java (TM) 2 Platform
+	    Standard Edition v1.4.0 </jump>, the xml-security package stopped
+	  working. This is a  
+	  <jump
+	    href="http://developer.java.sun.com/developer/bugParade/bugs/4615582.html">
+	    known 
+	  </jump> 
+	  problem: SUN packaged a beta of Xalan into the JDK1.4.0, but the
+	  xml-security package requires a stable version of Xalan (v2.2.0 or
+	  later). To fix the problem, you have to put the xalan.jar into a
+	  special directory in your JDK:
+	  <code>j2sdk1.4.0/jre/lib/endorsed/xalan.jar</code>. If you installed
+	  an out-of-the-box JDK1.4 (e.g. on Windows 2000), the
+	  &quot;endorsed&quot; directory does not exist: you'll have to create
+	  it by hand.
+	</p>
+	<warning>Putting this JAR to another location like lib/ext WILL NOT WORK. </warning>
+	<p>
+	  For more on that, you can also check the  <jump
+	    href="http://xml.apache.org/~edwingo/jaxp-faq.html#override">
+	    Unofficial JAXP FAQ </jump>. 
+	</p>
+      </answer>
+    </faq>
+    <faq id="nullptrexception">
+      <question>
+	I get a NullPointerException, and I don't know what's wrong.
+      </question>
+      <answer>
+	<p>
+	  Often, this problem is caused by using DOM1 calls like
+	  <code>createElement(), setAttribute(), createAttribute()</code>. These are
+	  non-namespace-aware and will cause XPath and C14N errors.
+	  Always use the DOM2 <code>create(Attribute|Element)NS(...)</code>
+	  methods instead, even if you're creating an element without a namespace
+	  (in that case, you can use null as a namespace).
+	</p>
+	<p>
+	  The Xalan-J Team told us that DOM1 calls are deprecated and are not to
+	  be used in code. xml-security has been reviewed and is DOM1 clean now. 
+	  The Xalan folks told us that if you create Elements or attributes 
+	  using DOM1 calls which are not namespace aware, they do not care about
+	  any problem you have because of incorrect hehaviour of Xalan.
+	</p> 
+      </answer>
+    </faq>
+	<faq id="elementorder">
+	  <question>
+		I sign a document and when I try to verify using the same key, it fails
+	  </question>
+	  <answer>
+		<p>
+		  After you have created the XMLSignature object, before you sign the
+		  document, you <em>must</em> embed the signature element in the owning
+		  document (using a call to <code>XMLSignature.getElement()</code> to
+		  retrieve the newly created Element node from the signature) before
+		  calling the <code>XMLSignature.sign()</code> method,
+		</p>
+		<p>
+		  During canonicalisation of the SignedInfo element, the library looks
+		  at the parent and ancestor nodes of the Signature element to find
+		  any namespaces that the SignedInfo node has inherited.  Any that are
+		  found are embedded in the canonical form of the SignedInfo.  (This
+		  is not true when Exclusive Canonicalisation is used, but it is still
+		  good practice to insert the element node prior to the sign()
+		  method being called).
+		</p>
+		<p>
+		  If you have not embedded the signature node in the document, it will
+		  not have any parent or ancestor nodes, so it will not inherit their
+		  namespaces.  If you then embed it in the document and call <code>
+			verify()</code>, the namespaces will be found and the canonical 
+		  form of SignedInfo will be different to that generated during 
+		  <code>sign()</code>.
+		</p>
+	  </answer>
+	</faq>
+  </part>
+
+</faqs>
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/Java/index.xml b/doc/site/src/documentation/content/xdocs/Java/index.xml
new file mode 100644
index 0000000..68c3007
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/index.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>The Java section</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>News</title>
+      <p>
+        Version 1.2 released on 11 December 2004. Improves the performance and memory usage over 1.1
+        release together with an easier integration of JCE providers.
+      </p>
+	  <p>
+		Version 1.1 released on 7 April 2004.  Includes a beta implementation
+		of XML Encryption together with minor bug fixes for the XML Signature
+		code.
+	  </p>
+    </section>
+    <section>
+      <title>XML Security Release</title>
+      <p>
+		The &packagenamelong; &packageversion; supports
+		<jump href="ext:w3c/xmldsig_java_supported">&supp_java_dsig;
+		</jump> and (in beta)
+		<jump href="ext:w3c/xmlenc_java_supported">&supp_java_enc;
+		</jump>
+      </p>
+      <p>
+	Note that there is no standard API avaliable at the moment. SUN is
+	working on a JAVA Specification Request 
+	<jump href="http://jcp.org/jsr/detail/105.jsp">
+	  JSR-105: XML Digital Signature APIs
+	</jump> on an API for XML Signature and 
+	<jump href="http://jcp.org/jsr/detail/106.jsp">
+	  JSR-106: XML Digital Encryption APIs
+	</jump>, but until now, nothing has been published. So, this software
+	does <em>not</em> conform to any of these specifications.
+      </p>
+    </section>
+    <section>
+      <title>JDK 1.4 issues</title>
+      <p>
+	If you use JDK 1.4 and want to use this software, be sure that Xalan is
+	properly installed. Check the <jump
+	  href="site:java/installation">installation guide</jump>!!!
+      </p>
+      <p>
+	I have so many complaints from people who argue that the software
+	throws exceptions during running the examples or during unit
+	testing. This package NEEDS a Xalan version after 2.2D13 (and SUN
+	shipped his JDK 1.4.0 final with a Xalan beta!). I started integrating
+	the installation guide into the exception messages cause it seems that
+	people don't have a look at the installation guide. 
+      </p>
+    </section>
+  </body>
+</document>
+
+
+
+
diff --git a/doc/site/src/documentation/content/xdocs/Java/installation.xml b/doc/site/src/documentation/content/xdocs/Java/installation.xml
new file mode 100644
index 0000000..56440c3
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/installation.xml
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>Installation - Java</title> 
+  </header> 
+  <body> 
+    <section> 
+      <title>Using JDK 1.4.0</title>
+      <p>
+	After SUN released the 
+	<jump href="ext:java">
+	  Java (TM) 2 Platform Standard Edition v1.4.0
+	</jump>, the xml-security package stopped working. This is a 
+	<jump href="http://developer.java.sun.com/developer/bugParade/bugs/4615582.html">
+	  known
+	</jump> 
+	problem: SUN packaged a beta of Xalan into the JDK 1.4.0, but the
+	xml-security package requires a stable version of Xalan (v2.2.0 or
+	later). To fix the problem, you have to put the xalan.jar into a
+	special directory in your JDK:
+	<code>j2sdk1.4.0/jre/lib/endorsed/xalan.jar</code> . If you installed
+	an out-of-the-box JDK1.4 (e.g. on Windows 2000), the "endorsed"
+	directory does not exist: you'll have to create it by hand. 
+      </p>
+      <warning>
+	Putting this JAR to another location like <code>lib/ext</code> WILL
+	NOT WORK.
+      </warning>
+      <p>
+	For more on that, you can also check the 
+	<jump href="http://xml.apache.org/~edwingo/jaxp-faq.html#override">
+	  Unofficial JAXP FAQ
+	</jump>.
+      </p>
+    </section>
+
+    <section>
+      <title>Prerequisites</title>
+      <p>
+	Make sure you get the Jakarta Ant Tool from 
+	<jump href="ext:ant">http://jakarta.apache.org/ant/</jump>
+      </p>
+    </section>
+
+    <section>
+      <title>Getting the source</title>
+      <p>
+	You can download the sources via WWW from the download page
+	at 
+	<jump href="site:about/download">
+	  http://xml.apache.org/security/download.html
+	</jump>
+      </p>
+      <p>
+	This project's CVS repository can be checked out through anonymous
+	(pserver) CVS with the following instruction set. The module you wish
+	to check out must be specified as the modulename. When prompted for a
+	password for anonymous, simply enter "anoncvs" without quotes: 
+      </p>
+      <source>cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
+	password: anoncvs
+	cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout
+	xml-security
+      </source>
+      <p>
+	A HTTP interface to browse the sources online is available via 
+	<jump href="site:getting-involved/CVS">http://cvs.apache.org/viewcvs.cgi/xml-security/</jump>
+      </p>
+    </section>
+    
+    <section>
+      <title>Compiling the source</title>
+      <p>
+	At the command prompt type <code>ant test</code>. If you want to 
+	use jikes instead of your default java compiler locate the <code>build.xml</code>
+	file and replace the line
+      </p>
+      <source>&lt;property name="build.compiler" value="classic"/&gt;</source>
+      <p>
+	with
+      </p>
+      <source>&lt;property name="build.compiler" value="jikes"/&gt;</source>
+    </section>
+    
+<!-- Uncommented in the original docs 
+    <section> 
+      <title>Unpacking the files</title> 
+      <p>
+	&packagename; is packaged as a ZIP file for all
+	platforms and operating systems.  You can run the Java
+	<ref>jar</ref> command to unpack the distribution.
+      </p>
+      <ul>
+	<li>jar xf &packagename;-bin.&packageversion;.zip</li>
+	<li>jar xf &packagename;-src.&packageversion;.zip</li>
+	<li>This command creates a "&packagedirectory;" sub-directory in the
+	  current directory containing all the files.</li>
+      </ul>
+    </section>
+    
+    <section> 
+      <title>Files in the binary package release</title>
+      <table>
+	<tr><td>LICENSE</td><td>License for &packagename;</td></tr>
+	<tr><td>Readme.html</td><td>Web page redirect to docs/html/index.html</td></tr>
+	<tr><td>xerces.jar</td><td>Jar file containing all the parser class files</td></tr>
+	<tr><td>xercesSamples.jar</td><td>Jar file containing all sample class files</td></tr>
+	<tr><td>data/</td><td>Directory containing sample XML data files</td></tr>
+	<tr><td>doc/html/</td><td>Directory containing documentation</td></tr>
+	<tr><td>doc/html/api/</td><td>Directory containing Javadoc API</td></tr>
+      </table>
+      <note>To use &packagename; you do not need the source files.</note>
+    </section>
+-->
+    <section> 
+      <title>Testing the distibution</title>
+      <p>
+	The first way to ensure that everything is in place is to run the unit
+	tests. This is simply done by typing <code>ant test</code>. This starts
+	the included JUnit test cases. Actually, we do not have complete test
+	coverage, but as a first start, it works.
+      </p>
+    </section>
+
+    <section> 
+      <title>Playing around with the examples </title>
+      <p>
+	To see how the distribution works, simply run <code>ant
+	  mega-sample</code> to let ant execute several examples from the
+	<code>src_samples/</code> directory. 
+      </p>
+    </section>
+    <section> 
+      <title>Files in the source package release</title>
+      <table>
+	<tr>
+	  <td>build.xml</td>
+	  <td>Top level <jump href="ext:ant">Ant</jump> Makefile -- read README
+	    file before building</td>
+	</tr>
+	<tr>
+	  <td>LICENSE.txt</td>
+	  <td>License for the software</td>
+	</tr>
+	<tr>
+	  <td>README</td>
+	  <td>Build instructions</td>
+	</tr>
+	<tr>
+	  <td>Readme.html</td>
+	  <td>Web page redirect required for building documentation</td>
+	</tr>
+	<tr>
+	  <td>STATUS</td>
+	  <td>Current source code status information</td>
+	</tr>
+	<tr>
+	  <td>data/</td>
+	  <td>Directory containing sample data files and test vectors for the unit tests</td>
+	</tr>
+	<tr>
+	  <td>doc/xml/</td>
+	  <td>Directory containing documentation, in XML form</td>
+	</tr>
+	<tr>
+	  <td>src/</td>
+	  <td>Directory containing source code for the core library</td>
+	</tr>
+	<tr>
+	  <td>src_samples/</td>
+	  <td>Directory containing source code for samples</td>
+	</tr>
+	<tr>
+	  <td>src_unitTests/</td>
+	  <td>Directory containing source code for unit tests</td>
+	</tr>
+      </table>
+    </section>
+
+    <section> 
+      <title>Where is my JCE?</title>
+      <p>
+	There is <em>no</em> JCE bundled together with this
+	distribution. Living in Germany, I had no problem to include the JCE in
+	this software package but then I realized that the Apache Project is
+	hosted in the US where some export restrictions apply to the
+	cryptographic primitives. 
+      </p>
+      <p>
+	Well, how do we solve this problem? The nice guys from the <jump
+	  href="ext:bouncy">Bouncy Castle</jump> where so
+	helpful to supply the JAR that you need to create HMAC integrity checks
+	on their web site. When you use the ant makefile <code>build.xml</code>
+	and simply say <code>ant compile</code> or <code>ant get-jce</code>,
+	<code>ant</code> tries to fetch this JAR from the australian
+	server. After that step, the compilation works completely. 
+      </p>
+      <p/>
+      <p>
+	The ant make tools initiates an automated download of the BouncyCastle
+	JCE. The file is downloaded into the libs/ directory and a "bc-" is
+	prepended to the filename. This is done because we want the provider
+	name (bc means BouncyCastle) being visible in the JAR's filename. 
+      </p>
+      <p/>
+      <p>
+	If you are a little paranoid like all security people and don't want
+	ant to make automated downloads or your firewall doesn't permit it
+	(preventing programs "phoning home"), look in the
+	<code>./build.xml</code> file for the properties called
+      </p>
+      <p/>
+      <source><![CDATA[
+	<property name="jce.download.file" value="]]>&jce_download_file;<![CDATA[ />
+	<property name="jce.download" 
+	          value="http://www.bouncycastle.org/download/${jce.download.file}" />
+	<property name="lib.jce" value="${libs}/bc-${jce.download.file}" />
+	]]></source>
+      <p>
+	Here you can see that the file 
+	<jump href="ext:java/jce/download/file">&jce_download_file;</jump>
+	 is downloaded and stored in the location <code>&lib_jce;</code>
+      </p>
+      <p>
+	If you do this by hand (pointing you favourite web browser and download
+	it yourself), simply put a "<code>bc-</code>" in front of the filename
+	and put it to <code>./libs/</code>, then ant won't try to make a
+	download.
+      </p>
+    </section>
+  </body>
+</document>
+
+
+
+
diff --git a/doc/site/src/documentation/content/xdocs/Java/interop.xml b/doc/site/src/documentation/content/xdocs/Java/interop.xml
new file mode 100644
index 0000000..ada3dd7
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/interop.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document> 
+  <header> 
+    <title>Java Interoperability</title> 
+  </header> 
+  <body> 
+    <section> 
+      <title>Problems</title>
+      <p>In Version v1.0.4, there is one test case which fails (interop test
+	for exclusive c14n). This is related to very esoteric node sets (The Y4
+	test vector from 
+	<jump
+	  href="http://www.w3.org/Signature/2002/02/01-exc-c14n-interop.html">
+	  the interop matrix
+	</jump>). 
+      </p>
+    </section>
+    <section> 
+      <title>Interoperability issues</title>
+      <p>
+	As it can be seen on the 
+	<jump href="ext:w3c/xmldsig">working group homepage</jump>,
+	there are some interoperability reports, namely for 
+	<jump href="http://www.w3.org/Signature/2000/10/10-c14n-interop.html">
+	  Canonical XML
+	</jump>, 
+	<jump
+	  href="http://www.w3.org/Signature/2002/02/01-exc-c14n-interop.html">
+	  Exclusive Canonical XML
+	</jump> 
+	and 
+	<jump
+	  href="http://www.w3.org/TR/xmldsig-core/2001/04/05-xmldsig-interop.html">
+	  XML Signature
+	</jump>.
+      </p>
+      <p>
+	Interoperability depends heavily on test vectors, this means that
+	implementation A has to check whether the signatures from
+	implementation B can be verified. For this purpose, we have a
+	collection of different test vectors in our <code>data/</code>
+	directory. The directory includes test vectors from   
+      </p>
+      <ul>
+	<li><jump href="http://www.baltimore.com/keytools/xml/index.html">
+	    Baltimore KeyTools XML</jump>
+	</li>
+	<li><jump href="http://jcewww.iaik.at/products/ixsil/index.php">IAIK IXSIL</jump></li>
+	<li><jump
+	    href="http://www.rsasecurity.com/products/bsafe/certj.html">
+	    RSA Security Cert-J</jump>
+	</li>
+	<li>The vectors from the 
+	  <jump
+	    href="http://www.alphaworks.ibm.com/tech/xmlsecuritysuite">
+	    IBM alphaWorks XML Security suite
+	  </jump> could not been included in this distribution because of
+	  licensing issues. For some reasons which I do not understand, they
+	  copyrighted their test signatures which they have bundled with
+	  xss4j. If you want to include interop testing against IBM in your
+	  unit tests, simply do the following:
+	  Download <code>xss4j-20030127.zip</code> from the 
+	  <jump
+	    href="http://www.alphaworks.ibm.com/aw.nsf/download/xmlsecuritysuite">
+	    alphaWorks download page
+	  </jump>. 
+	  Copy all files from the <code>xss4j-20030127.zip#/xss4j/data</code>
+	  directory into the
+	  <code>xml-security/data/com/ibm/xss4j-20030127/</code>
+	  directory. If the 
+	  <jump href="api/org/apache/xml/security/test/InteropTest.html">
+	    Interop
+	  </jump> class finds these files, the 
+	  <code>org.apache.xml.security.test.interop.IBMTest</code> class is
+	  also executed during unit interop tests. 
+	</li>
+      </ul>
+    </section>
+  </body>
+</document>
+
+
+
+
+
+
+
+
diff --git a/doc/site/src/documentation/content/xdocs/Java/resolver.xml b/doc/site/src/documentation/content/xdocs/Java/resolver.xml
new file mode 100644
index 0000000..c57a67c
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/Java/resolver.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>Resolver-Mania</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>Why do we need all these resolvers?</title>
+      <p>
+	For security and comfort reasons. In the XML Security package, there
+	exist many kinds of Resolvers for different purposes. Resolvers in this
+	package do the same job as an EntityResolver in the SAX package:
+	retrieve information from the apropriate location and give it to the
+	parser/software who needs it. The reason for offering these different
+	Resolvers is that it should be under complete control of the
+	application which connections to the network are made. In the security
+	area, it wouldn't be a good idea to imediately fetch some documents
+	from the web or make other connections only because you want to verify
+	a Signature. This resolver framework gives the application developer
+	the ability to have total control about the interface from the library
+	to the rest of the world. 
+      </p>
+    </section>
+    <section>
+      <title>Types of resolvers</title>
+      <section>
+	<title>ResourceResolvers</title>
+	<p>
+	  A 
+	  <jump href="&api_ref;utils/resolver/ResourceResolver.html">
+	    ResourceResolver
+	  </jump> is used by a 
+	  <jump href="&api_ref;signature/Reference.html">
+	    Reference
+	  </jump> to retrieve the signed resource from it's location. Different
+	  resolvers exist to get signed portions from the XML document in which
+	  the signature resides, to make HTTP connections or to fetch files
+	  from the local file system. <br /> 
+	  The concept of a 
+	  <jump href="&api_ref;utils/resolver/ResourceResolver.html">
+	    ResourceResolver
+	  </jump> is very similar to an org.xml.sax.EntityResolver, but in
+	  contrast to that Interface, the ResourceResolver is able to
+	  de-reference contents <em>inside</em> an XML document.  
+	</p> 
+      </section>
+      <section>
+	<title>StorageResolver</title>
+	<p>A 
+	  <jump href="&api_ref;keys/storage/StorageResolver.html">
+	    StorageResolver
+	  </jump> is used by 
+	  <jump href="&api_ref;keys/KeyInfo.html">
+	    KeyInfo
+	  </jump> and it's child objects / Elements to retrieve Certificates
+	  from storage locations. This approach is used to allow a user to
+	  customize the library for use in a specific corporate
+	  environment. It's possible to write 
+	  <jump href="&api_ref;keys/storage/StorageResolver.html">
+	    StorageResolver
+	  </jump>s who make requests to LDAP servers or to use specificic PKI
+	  interfaces. <br/>
+	  Bundled with the software come three sample 
+	  <jump href="&api_ref;keys/storage/StorageResolver.html">
+	    StorageResolver
+	  </jump>s which can be used for common tasks:
+	</p>
+	<ul>
+	  <li>
+	    The 
+	    <jump
+	      href="&api_ref;keys/storage/implementations/KeyStoreResolver.html">
+	      KeyStoreResolver
+	    </jump> is able to retrieve Certificates from a JAVA KeyStore
+	    object. This 
+	    <jump
+	      href="&api_ref;keys/storage/implementations/KeyStoreResolver.html">
+	      KeyStoreResolver
+	    </jump> is constructed from an open JAVA KeyStore.
+	  </li>
+	  <li>
+	    The 
+	    <jump
+	      href="&api_ref;keys/storage/implementations/SingleCertificateResolver.html">
+	      SingleCertificateResolver
+	    </jump> resolves only to a single Certificate. The 
+	    <jump
+	      href="&api_ref;keys/storage/implementations/SingleCertificateResolver.html">
+	      SingleCertificateResolver
+	    </jump> is constructed using this single Certificate. 
+	  </li>
+	  <li>
+	    The 
+	    <jump
+	      href="&api_ref;keys/storage/implementations/CertsInFilesystemDirectoryResolver.html">
+	      CertsInFilesystemDirectoryResolver
+	    </jump> is useful for resolving to raw X.509 certificates which
+	    reside as separate files in a directory in the filesystem. Such a
+	    resolver is needed for verifying the test signatures from Merlin
+	    Huges which are bundled in a directory.
+	  </li> 
+	</ul>
+	<p>
+	  <jump href="&api_ref;keys/storage/StorageResolver.html">
+	    StorageResolver
+	  </jump>s are supplied to the KeyInfo's <code>addStorageResolver()</code> method.
+	</p>
+	<p>
+	  Generally, a 
+	  <jump href="&api_ref;keys/storage/StorageResolver.html">
+	    StorageResolver
+	  </jump> has only a method to return an Iterator which iterates
+	  through the available Certificates.
+	</p>
+      </section>
+      <section>
+	<title>KeyResolver</title>
+	<p>
+	  A 
+	  <jump href="&api_ref;keys/keyresolver/KeyResolver.html">
+	    KeyResolver
+	  </jump> is used by 
+	  <jump href="&api_ref;keys/KeyInfo.html">
+	    KeyInfo
+	  </jump> to process it's child Elements. There exist two general
+	  classes of a 
+	  <jump href="&api_ref;keys/keyresolver/KeyResolver.html">
+	    KeyResolver
+	  </jump>:
+	</p>
+	<ul>
+	  <li>
+	    If a ds:RSAKeyValue or ds:DSAKeyValue or ds:X509Certificate is used
+	    inside the ds:KeyInfo, the resolvers can return a public key or
+	    Certificate directly without further action, because the key itself
+	    is contained inside the ds:Signature.
+	  </li>
+	  <li>
+	    If there is only key material identification information like a
+	    ds:KeyName or the serial number of the Certificate, the KeyResolver
+	    must use the StorageResolvers to query the available keys and
+	    certificates to find the correct one.
+	  </li>
+	</ul>
+	<p>
+	  Of course, there are cross-dependencies: e.g. a KeyResolver named 
+	  <jump
+	    href="&api_ref;keys/keyresolver/implementations/RetrievalMethodResolver.html">
+	    RetrievalMethodResolver
+	  </jump> uses the 
+	  <jump href="&api_ref;utils/resolver/ResourceResolver.html">
+	    ResourceResolver
+	  </jump> framework to retrieve a public key or certificate from an
+	  arbitrary location.
+	</p>
+      </section>
+    </section>
+  </body>
+</document>
+
+
+
+
diff --git a/doc/site/src/documentation/content/xdocs/book-sample.xml b/doc/site/src/documentation/content/xdocs/book-sample.xml
new file mode 100644
index 0000000..26a16a0
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/book-sample.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN" "book-cocoon-v10.dtd">
+
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!--
+Sample Forrest book.xml file.  If renamed to book.xml, this file will determine
+the menu for files in this directory, rather than have a menu be auto-generated
+from site.xml,
+
+NOTE:
+  If you use site.xml in conjunction with a custom book.xml file, you can use
+  'site:' URLs in book.xml.  Eg, instead of href="sample.html", one could have
+  href="site:sample".
+-->
+ 
+<book software="MyProj"
+  title="MyProj"
+  copyright="@year@ The Apache Software Foundation"
+  xmlns:xlink="http://www.w3.org/1999/xlink">
+
+  <menu label="About">
+    <menu-item label="Index" href="index.html"/>
+    <menu-item label="Sample page" href="sample.html"/>
+    <menu-item label="Sample ihtml page" href="ihtml-sample.html"/>
+    <menu-item label="Sample ehtml page" href="ehtml-sample.html"/>
+    <menu-item label="FAQ" href="faq.html"/>
+    <menu-item label="Changes" href="changes.html"/>
+    <menu-item label="Todo" href="todo.html"/>
+  </menu>
+
+  <menu label="Subdir">
+    <menu-item label="index" href="subdir/index.html"/>
+  </menu>
+
+</book>
diff --git a/doc/site/src/documentation/content/xdocs/c/credits.xml b/doc/site/src/documentation/content/xdocs/c/credits.xml
new file mode 100644
index 0000000..99c9fb0
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/credits.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+  <header>
+    <title>Credits</title>
+  </header>
+  <body>
+    <section>
+	  <title>Software Used</title>
+	  <p>
+		The XML-Security-C package makes heavy use of the Xalan-C and
+		Xerces-C++ libraries from the <jump href="http://xml.apache.org">
+		  Apache Software Foundation XML Project</jump>.
+	  </p>
+	  <p>
+		This product includes cryptographic software written by Eric Young
+		(eay@cryptsoft.com).  This product includes software written by Tim
+		Hudson (tjh@cryptsoft.com).
+	  </p>
+	  <p>
+		This product includes software developed by the OpenSSL Project
+		for use in the OpenSSL Toolkit (<jump href="http://www.openssl.org">
+		  www.openssl.org</jump>)
+	  </p>
+	  <p>
+		The license documents for Xerces, Xalan and OpenSSL are contained in
+		the xml-security/c/doc directory in CVS and in the doc directory in
+		distributions of the C++ source code.
+	  </p>
+	  <p>
+		This documentation has been created using Forrest, also part of
+		the Apache Sofware Foundation's XML project.
+	  </p>
+	  <p>
+		API Documentation is created using
+		<jump href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</jump> and
+		<jump href="http://www.research.att.com/sw/tools/graphviz/">GraphViz</jump>
+	  </p>
+	</section>
+  </body>
+</document>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/c/faq.xml b/doc/site/src/documentation/content/xdocs/c/faq.xml
new file mode 100644
index 0000000..9c2c3ea
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/faq.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V1.1//EN" "dtd/faq-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<faqs title="Frequently Asked Questions - C++">
+  <part id="general_c">
+    <title>Compiling and Using the Library</title>
+    <faq id="openssl_c">
+	  <question>
+		Is OpenSSL required?
+      </question>
+      <answer>
+		<p>
+		  The main development work for the library is done using OpenSSL, so
+		  this is the recommended option.  However, a Windows
+		  Crypto API interface is also now provided.
+		</p>
+		<p>
+		  It is also possible to implement interfaces for other cryptographic
+		  libraries and pass them into the xml-security-c library during
+		  initialisation (via the <em>XSECPlatformUtils::Initialise()</em>
+		  call).
+		</p>
+      </answer>
+    </faq>
+	<faq id="openssl2_c">
+	  <question>
+		Does the library provide a full C++ wrapper for OpenSSL?
+	  </question>
+	  <answer>
+		<p>
+		  The C++ crypto interface layer provided for the library provides only
+		  the smallest subset of cryptographic functions necessary for the
+		  library to make calls to the provided library.  Applications will
+		  need to work directly with OpenSSL (or other libraries) to read and
+		  manipulate encryption keys that should then be wrapped in XSECCrypto*
+		  objects and passed into the library.
+		</p>
+	  </answer>
+	</faq>
+	<faq id="wincapi_c">
+	  <question>
+		What is WinCAPI?
+	  </question>
+	  <answer>
+		<p>
+		  WinCAPI is the developmental interface being built to give
+		  users of the library access to the Windows Cryptographic library.
+		</p>
+		<p>
+		  It is <em>not</em> a C API wrapper for the overall library.
+		</p>
+	  </answer>
+	</faq>
+    <faq id="xalan_c">
+      <question>
+		Is Xalan required?
+      </question>
+      <answer>
+		<p>
+		  The library can be compiled without linking to Xalan-c.  However
+		  doing so will disable support for XPath and XSLT transformations.
+		</p>
+		<p>
+		  To disable Xalan-c support either use --without-xalan when running
+		  configure on UNIX, or use the VC++ "without Xalan" settings.
+		</p>
+      </answer>
+    </faq>
+	<faq id="oldXalanC">
+	  <question>
+		Are versions of Xalan prior to 1.6 supported?
+	  </question>
+	  <answer>
+		<p>
+		  No.  Whilst the functionality required is available in prior
+		  versions, the location of include files changed in 1.6.  A
+		  decision was made in version 1.0.0 of xml-security-c to
+		  update the source to support these new locations.
+		</p>
+	  </answer>
+	</faq>
+	<faq id="elementorder">
+	  <question>
+		I sign a document and when I try to verify using the same key, it fails
+	  </question>
+	  <answer>
+		<p>
+		  After you have created the XMLSignature object, before you sign the
+		  document, you <em>must</em> embed the signature element in the owning
+		  document (which is returned by the call to 
+		  <code>DSIGSignature::createBlankSignature(...)</code>) before
+		  calling the <code>DSIGSignature::sign()</code> method,
+		</p>
+		<p>
+		  During canonicalisation of the SignedInfo element, the library looks
+		  at the parent and ancestor nodes of the Signature element to find
+		  any namespaces that the SignedInfo node has inherited.  Any that are
+		  found are embedded in the canonical form of the SignedInfo.  (This
+		  is not true when Exclusive Canonicalisation is used, but it is still
+		  good practice to insert the element node prior to the sign()
+		  method being called).
+		</p>
+		<p>
+		  If you have not embedded the signature node in the document, it will
+		  not have any parent or ancestor nodes, so it will not inherit their
+		  namespaces.  If you then embed it in the document and call <code>
+			verify()</code>, the namespaces will be found and the canonical 
+		  form of SignedInfo will be different to that generated during 
+		  <code>sign()</code>.
+		</p>
+	  </answer>
+	</faq>
+	<faq id="ids">
+	  <question>
+		How does the library identify Id attributes?
+	  </question>
+	  <answer>
+		<p>
+		  During a signing operation, finding the correct Id attribute is
+		  vital.  Should the wrong Id Attribute be used, the wrong
+		  part of the document will be identified, and what the user signs
+		  will not be what they expect to sign.
+		</p>
+		<p>
+		  The preferred method (and the method the library uses first) of 
+		  finding an Id is via the DOM Level 2 call
+		  <em>DOMDocument::getElementById()</em>.  This indicates to the
+		  library that the Id has been explicitly identified via a schema,
+		  DTD or during document building.  However, if this call fails, the
+		  library will then search the document for attributes named "Id" or
+		  "id" with the appropriate value.  The first one found will be used
+		  as document fragment identifier.
+		</p>
+		<p>
+		  As this is a potential security exposure, this behaviour can be
+		  disabled using a call to 
+		  <em>DISGSignatures::setIdByAttributeName(false)</em>.  There are
+		  also methods provided to modify the list of attributes that will
+		  be searched.  However it is recommended that these methods not be
+		  used, and DOM attributes of Type=ID be used.
+		</p>
+		<warning>
+		  In version 1.1, the library defaults to searching for Id
+		  attributes by name if a search by Id fails.  As this is a potential
+		  security risk, this behaviour may be changed in a future version
+		  of the library.
+		</warning>
+	  </answer>
+	</faq>
+  </part>
+</faqs>
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/c/index.xml b/doc/site/src/documentation/content/xdocs/c/index.xml
new file mode 100644
index 0000000..d5d3632
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/index.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+  <header>
+    <title>C++ Library Documentation</title>
+  </header>
+  
+  <body>
+	<section>
+	  <title>News - March 2004</title>
+	  <p>
+		Version 1.1 of the C++ library has been released.  Supporting
+		Xerces 2.5, 2.4 and 2.3 together with Xalan 1.6 and 1.7, this
+		version provides :
+	  </p>
+	  <ul>
+		<li>Beta implementation of XML Encryption</li>
+		<li>Improved support for Windows Crypto API</li>
+		<li>Bug fixes to Signature implementation</li>
+	  </ul>
+	</section>
+    <section>
+      <title>Overview of the C++ Library</title>
+      <p>
+        The C++ library is an implementation of the XML Digital Signature
+        specification.  It is designed to be easily ported to new platforms,
+        and has been tested on Solaris, Linux, FreeBSD, NetBSD and Windows.
+      </p>
+      <p>
+        The library makes use of the Apache XML project's Xerces-C XML Parser
+        and Xalan-C XSLT processor.  The latter is used for processing XPath
+        and XSLT transforms.  The use of Xalan-C is optional, but without it,
+        XPath and XSLT transformations cannot be performed.
+      </p>
+      <p>
+        In addition, the library currently uses OpenSSL to provide 
+        cryptographic functionality.  The cryptographic interface is
+        implemented via a thin wrapper layer, and a development version of
+		an implementation for the Windows Cryptographic API has also been
+		implemented.
+      </p>
+    </section>
+	<section>
+	  <title>Old News</title>
+	  <section>
+		<title>May 2003</title>
+		<p>
+		  Beta 0.2 has been released.  It covers :
+		</p>
+		<ul>
+		  <li>some minor bug-fixes in the	code and the UNIX build system</li>
+		  <li>a first cut at a Windows Crypto API provider interface</li>
+		  <li>methods to extract information from signature objects; and</li>
+		  <li>updates to tools to allow (and demonstrate) use of Windows CAPI
+			and new extraction methods</li>
+		</ul>
+		<p>
+		  Beta 0.2 is has been tested with Xerces-C v2.2 and the newly 
+		  released Xalan-C v1.5.
+		</p>
+	  </section>
+	  <section>
+		<title>February 2003</title>
+		<p>
+		  The C++ library has now been fully transferred into the Apache XML
+		  project.  It was previously hosted on SourceForge.
+		</p>
+		<p>
+		  The first release under Apache is 0.10.  This is a Beta release,
+		  with fairly complete documentation, and a stable code base.  It
+		  fully validates the various interop documents held in the xml-security
+		  CVS, with the exception of those related to :
+		</p>
+		<ul>
+		  <li>MD5 Digests (to be added in next point release)</li>
+		  <li>XPath Filter (to be added in next point release)</li>
+		  <li>XML Encryption (to be added post 1.00 release)</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>News - August 2003</title>
+		<p>
+		  Version 1.00 of the library has now been released.  It features :
+		</p>
+		<ul>
+		  <li>the first stable release</li>
+		  <li>full implementation of all mandatory requirements of DSIG</li>
+		  <li>implementation of canonicalised XML</li>
+		  <li>implementation of exclusive-canonicalised XML</li>
+		  <li>implementation of XPath-filter</li>
+		  <li>FreeBSD, NetBSD and Cygwin builds</li>
+		</ul>
+		<p>
+		  Version 1.00 is has been tested with Xerces-C v2.2 and the newly 
+		  released Xalan-C v1.6.  Xerces-C v2.3 is also supported.  Note that
+		  versions of Xalan prior to v1.6 are not supported (due to the new
+		  changed location of include files).
+		</p>
+	  </section>
+	</section>
+  </body>
+</document>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/c/installation.xml b/doc/site/src/documentation/content/xdocs/c/installation.xml
new file mode 100644
index 0000000..d536dab
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/installation.xml
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>Installing the C++ Library</title> 
+  </header> 
+  <body> 
+    <section> 
+      <title>Prerequisites</title>
+      <p>
+		The library requires OpenSSL for cryptographic support.  Xalan-C
+		is also required if XPath and/or XSLT transformations are required.
+      </p>
+	  <p>
+		Version 1.00 of the library has been tested with version 2.2 and 2.3 of
+		Xerces-C, version 1.6 of Xalan-C and Version 0.9.7 (and above) of
+		OpenSSL.
+	  </p>
+    </section>
+
+    <section>
+      <title>Getting the source</title>
+      <p>
+		You can download the sources via WWW in the distribution directory
+		from one of the Apache  
+		<jump href="site:about/download">
+		  mirrors
+		</jump>.
+      </p>
+      <p>
+		This project's CVS repository can be checked out through anonymous
+		(pserver) CVS with the following instruction set. The module you wish
+		to check out must be specified as the modulename. When prompted for a
+		password for anonymous, simply enter "anoncvs" without quotes: 
+      </p>
+      <source>cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
+	password: anoncvs
+	cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout
+	xml-security
+      </source>
+      <p>
+		A HTTP interface to browse the sources online is available via 
+		<jump href="site:getting-involved/CVS">http://cvs.apache.org/viewcvs.cgi/xml-security/</jump>
+      </p>
+    </section>
+    
+    <section>
+	  <title>Building for UNIX</title>
+	  <p>
+		XML-Security-C is currently fully supported on Linux, FreeBSD and 
+		Solaris.  It is partially supported (in cases where Xalan is not 
+		required) on NetBSD and Cygwin.  It has been built and 
+		tested using GNU gcc 3.2, gcc 2.95.4, Forte C++ 5.4 (Solaris) and 
+		GNU make.
+	  </p>
+	  <note>
+		The UNIX XML-Security-C build process has changed radically since
+		beta 0.0.2 as the Makefiles and configure scripts have been completely
+		rewritten.
+	  </note>
+	  <section>
+		<title>Set up the Environment</title>
+		<p>
+		  The build process has been automated as much as possible.  To
+		  start the process, three environment variables <em>can</em> be set :
+		</p>
+		<ul>
+		  <li><em>XERCESCROOT</em> - points to the base of your Xerces distribution</li>
+		  <li><em>XALANCROOT</em> - points to the base of your Xalan distribution</li>
+		  <li><em>OPENSSL</em> - points to the base of your OpenSSL distribution</li>
+		</ul>
+		<p>
+		  For example (on my Debian Linux box under Bash) :
+		</p>
+		<source><![CDATA[
+export XERCESCROOT=~/prog/extlibs/xerces-c-src2_3_0
+export XALANCROOT=~/prog/extlibs/xalan-c-src1_6/c
+export OPENSSL=~/prog/extlibs/openssl-0.9.7a
+		  ]]></source>
+		<p>
+		  If these environment variables are not set, configure will try to
+		  find the necessary include and library files in the system directories.
+		  The configure script is created through <em>autoconf</em> so you
+		  can also tell your compiler where to find these things via
+		  the <em>CXXFLAGS</em> and <em>LDFLAGS</em> environment variables.
+		</p>
+		<p>
+		  If configure cannot find anything for Xalan, it will assume that
+		  you are not interested in XPath or XSLT support and will compile
+		  XSEC without linking to Xalan.  Any attempt to use these features
+		  will raise an exception in the library.
+		</p>
+	  </section>
+	  <section>
+		<title>Configure</title>
+		<p>
+		  Now go to the $XSECCROOT/src directory and run the command
+		  <em>./configure</em>.  This will create the necessary makefiles
+		  and header files necessary to build the package.
+		</p>
+		<p>
+		  In addition to the standard options, <em>configure</em> can be 
+		  passed a number of XSEC specific options :
+		</p>
+		<ul>
+		  <li><em>--without-xalan</em> disable linkage to Xalan.</li>
+		  <li><em>--enable-debug</em> cause the library to be built with symbols</li>
+		</ul>
+		<note>
+		  Using the <em>--without-xalan</em> option will automatically mean
+		  that the library does not support XPath or XSLT transformations
+		  (although envelope transforms will work as the library can now
+		  perform these without going through an XPath transform).
+		</note>
+	  </section>
+	  <section>
+		<title>Compile</title>
+		<p>
+		  Assuming the output of the above command looks reasonable simply
+		  type <em>make</em> (or <em>gmake</em> - you must use the GNU
+		  make utility) in the <em>src</em> directory.  This
+		  will make the shared library.  In addition,  <em>make tools</em>
+		  will make the tools (or examples) in the src/tools directory.
+		</p>
+		<p>
+		  The make process will create three directories in the distribution
+		  directory:
+		</p>
+		<ol>
+		  <li><em>include</em> - All public header files are copied here</li>
+		  <li><em>bin</em> - Where the tools are placed once compiles </li>
+		  <li><em>lib</em> - Where the shared library is place</li>
+		</ol>
+		<p>
+		  You will need to set up your <em>LD_LIBRARY_PATH</em> environment
+		  variable to ensure ld.so will find the new shared libraries.
+		</p>
+		<p>
+		  Finally - you can use <em>make clean</em> and <em>make distclean</em>
+		  to remove all binaries and libraries (former) and build scripts (latter)
+		</p>
+	  </section>
+	  <section>
+		<title>Install</title>
+		<p>
+		  <em>make install</em> can be used to install the library and the
+		  include files into the relevant directories (which can be set via
+		  the <em>configure</em> script using the various <em>--prefix=</em>
+		  options.
+		</p>
+	  </section>
+	</section>
+	<section>
+	  <title>Building for Windows</title>
+	  <p>
+		XML-Security-C has been built and tested on Microsoft's Visual C++ 6.0
+		compiler only.  (VC++ .NET support is currently being worked on.)  
+		The following subsections briefly describe how to 
+		rebuild the library, tools and samples using the supplied workspaces.
+	  </p>
+	  <note>
+		As of version 0.2, the library can be built without OpenSSL on a
+		Windows platform.  (The WinCAPI provider will be used instead).
+		See below for details on how to do this.  This is still experimental,
+		but should work.
+	  </note>
+	  <section>
+		<title>Setup Directories</title>
+		<p>
+		  The workspace and project files provided do not make any assumptions
+		  about where Xerces, Xalan or OpenSSL might be on the system.  The
+		  first step is therefore to configure VC directories under 
+		  Tools->Options (Directories).
+		</p>
+		<p>
+		  For the Include directories you will need something similar to my
+		  setup below (replacing D:\PROG\CLIB\.. with the appropriate path
+		  on your system).
+		</p>
+		<figure src="images/vc6a.gif" alt="Include Directories"/>
+		<p>
+		  Similarly the library directories will need to be added to.  Note
+		  that in the example below, I use both Debug and Release libraries
+		  for Xalan and Xerces.  As provided, the workspace projects link to
+		  the debug libraries for XSEC Debug and Release for XSEC Release.
+		</p>
+		
+		<figure src="images/vc6b.gif" alt="Link Directories"/>
+
+	  </section>
+	  <section>
+		<title>Configure</title>
+		<p>
+		  If you are using Xalan and OpenSSL, no configuration is required when
+		  building from the Visual C++ v6.0 workspace.
+		</p>
+		<p>
+		  If you wish to disable OpenSSL, you should edit the file 
+		  <em>.../src/framework/XSECW32Config.hpp</em> and comment out the 
+		  line <code>#define HAVE_OPENSSL 1</code>.  This will effectively remove
+		  support for OpenSSL from the library as it is being compiled.
+		</p>
+		<p>
+		  You will also need to remove the library module <code>libeay32.lib</code>
+		  from the link->General settings in each of the projects in the
+		  XSEC workspace.
+		</p>
+		<p>
+		  To enable support for the Windows Crypto API, edit the 
+		  XSECW32Config.hpp file and uncomment the line 
+		  <code>#define HAVE_WINCAPI 1</code>
+		</p>
+		<p>
+		  To disable support for Xalan, a similar process is followed.  Edit
+		  the XSECW32Config.hpp file, and <strong>uncomment</strong> the XSEC_NO_XALAN
+		  line.  This will remove all support for Xalan from the various
+		  source code files.
+		</p>
+		<p>
+		  When compiling, using the "...No Xalan configurations for each
+		  project.  These are the same as the normal debug or release builds,
+		  but the Xalan library is not linked in.
+		</p>
+	  </section>
+	  <section>
+		<title>Build Library and Tools</title>
+		<p>
+		  The main workspace is found in :
+		</p>
+		<p><em>.../Projects/VC6.0/xsec/xsec.dsw</em></p>
+		<p>
+		  You can load this to build the tools or the library using the relevant
+		  project.  (The library is xsec_lib.)
+		</p>
+		<p>
+		  Samples can be built using the workspace found in :
+		</p>
+		<p><em>.../src/Projects/VC6.0/Samples/Samples.dsw</em></p>
+		<p>All output will be sent to</p>
+		<p><em>.../Build/Win32/VC6/Debug</em></p>
+		<p>for the debug builds and Release for the release.</p>
+	  </section>
+	</section>
+  </body>
+</document>
+
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/c/interop.xml b/doc/site/src/documentation/content/xdocs/c/interop.xml
new file mode 100644
index 0000000..a9aa5c7
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/interop.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "../xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document> 
+  <header> 
+    <title>C++ Interoperability</title> 
+  </header> 
+  <body> 
+    <section> 
+      <title>Interoperability</title>
+      <p>
+        The C++ library is designed to be fully inter-operable with any
+        other implementation of the W3C XML Digital Signature standard, such
+        as the Apache XML-Security Java library.
+      </p>
+    </section>
+  </body>
+</document>
+
+
+
+
+
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/c/prog_enc.xml b/doc/site/src/documentation/content/xdocs/c/prog_enc.xml
new file mode 100644
index 0000000..42a835f
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/prog_enc.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+  <header>
+    <title>XML Encryption Programming</title>
+  </header>
+  <body>
+	<section id="overview">
+	  <title>Overview</title>
+	  <warning>
+		The Encryption functionality within the library is currently beta.
+		Whilst the API is considered fairly functional, it may change in
+		version 1.2 as a result of feedback received from version 1.1.
+	  </warning>
+	  <p>
+		As with signatures, there are two main modes of operation for the
+		library when performing encryption functions - Encryption and
+		Decryption.  Decryption is generally fairly simple, as the library
+		will handle most of the work around de-referencing key material and
+		re-creating a DOM document (or returning a byte stream).
+	  </p>
+	  <p>
+		Encryption is fairly simple if you are trying to encrypt a DOM
+		structure.  The library will encrypt the nodes and then replace them
+		with the encrypted version.  However if you want to embed an
+		arbitrary encrypted object in the document, you will need to
+		encrypt it first and then pass the encrypted text into the library.
+	  </p>
+	  <p>
+		The rest of this page looks at some simple examples around
+		encrypting and decrypting nodes within an XML document
+	  </p>
+	</section>
+	<section id="simpleencrypt">
+	  <title>A simple encryption example</title>
+	  <p>
+		The next example encrypts an element (and all its children) from
+		a pre-generated document.  It uses a randomly generated key to
+		handle the bulk encryption, and then encrypts this using an RSA
+		public key.  The resultant encrypted key is embedded in an
+		&lt;EncryptedKey&gt; element.
+	  </p>
+	  <p>
+		This example can be found in the src/samples directory as
+		<em>simpleEncrypt.cpp</em>.
+	  </p>
+	  <section>
+		<title>Setup</title>
+		<p>
+		  The first step is initialisation of Xerces, Xalan (if used) and
+		  XML-Security.  Once this is done, we create a document.  For 
+		  brevity, the details of the call to <em>createLetter</em> are
+		  not included on this page.  The function is very simple - it creates
+		  an XML DOM document that represents a letter, and sets a global
+		  variable (<em>g_toEncrypt</em>) that will be used later on to
+		  determine what node to encrypt.
+		</p>
+		<source><![CDATA[
+int main (int argc, char **argv) {
+
+    try {
+        XMLPlatformUtils::Initialize();
+#ifndef XSEC_NO_XALAN
+        XalanTransformer::initialize();
+#endif
+        XSECPlatformUtils::Initialise();
+    }
+    catch (const XMLException &e) {
+
+        cerr << "Error during initialisation of Xerces" << endl;
+        cerr << "Error Message = : "
+             << e.getMessage() << endl;
+
+    }
+
+    // Create a blank Document
+
+    DOMImplementation *impl = 
+        DOMImplementationRegistry::getDOMImplementation(MAKE_UNICODE_STRING("Core"));
+	
+    // Create a letter
+    DOMDocument *doc = createLetter(impl);
+		  ]]></source>
+	  </section>
+	  <section>
+		<title>Setup for Encryption</title>
+		<p>
+		  Once the library is initialised, we create a <em>XENCCipher</em>
+		  object in a manner similar to the creation of a 
+		  <em>DSIGSignature</em> object.  The <em>XENCCipher</em> object
+		  is used to actually perform encryption/decryption functions and
+		  to manipulate the various encryption objects provided by the
+		  library.
+		</p>
+		<p>
+		  As well as creating the <em>XENCCipher</em> object, the sample
+		  uses the <em>RAND_bytes</em> function within the 
+		  <strong>OpenSSL</strong>
+		  library to create a random key that will be used during the
+		  encryption process.
+		</p>
+		<source><![CDATA[
+    try {
+		
+        /* Create the cipher object that we need */
+
+        XSECProvider prov;
+        XENCCipher *cipher;
+
+        cipher = prov.newCipher(doc);
+
+        /* Now generate a random key that we can use to encrypt the element
+         *
+         * First check the status of the random generation in OpenSSL
+         */
+
+        if (RAND_status() != 1) {
+
+            cerr << "OpenSSL random generation not properly initialised" << endl;
+            exit(1);
+
+        }
+
+        unsigned char keyBuf[24];
+        if (RAND_bytes(keyBuf, 24) == 0) {
+
+            cerr << "Error obtaining 24 bytes of random from OpenSSL" << endl;
+            exit(1);
+
+        }
+]]></source>
+	  </section>
+	  <section>
+		<title>Encryption of Element</title>
+		<p>
+		  The actual code to perform encryption is very small.  Most of the
+		  complexity for standard encryption is hidden within the library.
+		</p>
+		<p>
+		  The first two lines of code wrap the generated key bytes in an
+		  OpenSSL 3DES key.  This is then passed into the <em>cipher</em>
+		  object with a call to <em>setKey(key)</em>.
+		</p>
+		<p>
+		  The last line in the following block performs the actual encryption.
+		  the first parameter to <em>cipher->encryptElement</em> is the 
+		  node that will be encrypted.  The second is the algorithm to be 
+		  used.  This is used to calcualte the Algorithm URI to be set in
+		  the &lt;EncryptedData&gt; element.
+		</p>
+		<p>
+		  This call to <em>EncryptElement</em> will encrypt the provided
+		  element using the key set previously.  The passed in element will
+		  be replaced with an &lt;EncryptedData&gt; element containing the
+		  encrypted version of the element and all its children.
+		</p>
+		<p>
+		  If no further information is required to be embedded in the
+		  &lt;EncryptedData&gt; structure (such as &lt;KeyInfo&gt; nodes),
+		  the usage of the library could be terminated here.
+		</p>
+		<source><![CDATA[
+        /* Wrap this in a Symmetric 3DES key */
+
+        OpenSSLCryptoSymmetricKey * key = 
+            new OpenSSLCryptoSymmetricKey(XSECCryptoSymmetricKey::KEY_3DES_192);
+        key->setKey(keyBuf, 24);
+        cipher->setKey(key);
+
+        /* Encrypt the element that needs to be hidden */
+        cipher->encryptElement(g_toEncrypt, ENCRYPT_3DES_CBC);
+]]></source>
+	  </section>
+	  <section>
+		<title>Create an &lt;EncryptedKey&gt;</title>
+		<p>
+		  The following snippet of code uses the previously created
+		  <em>XENCCipher</em> object to encrypt the pseudo random key using
+		  an RSA key loaded from a X.509 certificate.
+		</p>
+		<p>
+		  The first two lines load the certificate into an OpenSSLCryptoX509
+		  structure, which is then used to extract the public key from the
+		  certificate and pass into the cipher.
+		</p>
+		<p>
+		  A call to <em>setKEK</em> is used rather than <em>setKey</em>.
+		  This call is used to tell the cipher object that the key being used
+		  is a Key Encryption Key, and should be used for encrypting/decrypting
+		  &lt;EncryptedKey&gt; elements.
+		</p>
+		<p>
+		  The final line actually performs the encryption and created
+		  the &lt;EncryptedKey&gt; structure.  The first two parameters define
+		  the buffer and its length to be encrypted.  The last defines the
+		  encryption algorithm to be used.
+		</p>
+		<p>
+		  The <em>encryptedKey</em> method returns an <em>XENCEncryptedKey</em>
+		  object.  This contains the DOM structure for the object, but it is
+		  not yet rooted in a particular document.  (Although it is created
+		  using the <em>DOMDocument</em> that was passed in during the call
+		  to <em>newCipher</em>.)
+		</p>
+		<source><![CDATA[
+        /* Now lets create an EncryptedKey element to hold the generated key */
+
+        /* First lets load the public key in the certificate */
+        OpenSSLCryptoX509 * x509 = new OpenSSLCryptoX509();
+        x509->loadX509Base64Bin(cert, strlen(cert));
+	
+        /* Now set the Key Encrypting Key (NOTE: Not the normal key) */
+        cipher->setKEK(x509->clonePublicKey());
+		
+
+        /* Now do the encrypt, using RSA with PKCS 1.5 padding */
+
+        XENCEncryptedKey * encryptedKey = 
+            cipher->encryptKey(keyBuf, 24, ENCRYPT_RSA_15);
+]]></source>
+	  </section>
+	  <section>
+		<title>Append &lt;EncryptedKey&gt; to &lt;EncryptedData&gt;</title>
+		<p>
+		  The final part (other than outputting the result) is to 
+		  retrieve the &lt;EncryptedData&gt; element that was previously 
+		  created and append the newly created &lt;EncryptedKey&gt; as a 
+		  &lt;KeyInfo&gt; element.
+		</p>
+<source><![CDATA[
+        /*
+         * Add the encrypted Key to the previously created EncryptedData, which
+         * we first retrieve from the cipher object.  This will automatically create
+         * the appropriate <KeyInfo> element within the EncryptedData
+         */
+
+        XENCEncryptedData * encryptedData = cipher->getEncryptedData();
+        encryptedData->appendEncryptedKey(encryptedKey);
+]]></source>
+	  </section>
+	  <p>
+		The above code results in a document that contains the newly created
+		&lt;EncryptedData&gt; as follows:
+	  </p>
+<source><![CDATA[
+<Letter>
+<ToAddress>The address of the Recipient</ToAddress>
+<FromAddress>The address of the Sender</FromAddress>
+<xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" 
+xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
+<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
+<xenc:CipherData>
+<xenc:CipherValue>Wh8pAkDsQceHiktGxnlhXGfEMPDOLB6FwWp8PLedFEB3L3F6xHUoCOerIvA7Pgvv
+VYzVqLv4a5x5YdnCqikkFBLE/fruAUe2Z8ZTEn/CaPYmpzU6qYHALCl7Q61LcbqH
+R87TzroBYsYwfHmXmrKHL9K9sB6zmuec1TjVzm2c/Xs=
+</xenc:CipherValue>
+</xenc:CipherData>
+</xenc:EncryptedKey>
+</ds:KeyInfo>
+<xenc:CipherData>
+<xenc:CipherValue>YhqQciiFkLG1z0I1TJC6Pewnzw/gmVuGqcTvHtWpgak/b3NQDRAlv07lJOmBLoHX
+23LQ1CdPSxvnyerlJGwkY6xJ0M5tjpDregTVcECXo/bd+x8eIsF2kaawoZGCqD1K
+96T36Fx9rHek9bY/Hp1OiQ==
+</xenc:CipherValue>
+</xenc:CipherData>
+</xenc:EncryptedData></Letter>
+]]></source>
+	</section>
+	<section id="simpledecrypt">
+	  <title>A simple decryption example</title>
+	  <p>
+		The final example shows how to use the library to decrypt an
+		EncryptedData structure.  A private key is loaded as a Key
+		Encryption Key (KEK), and a call is made to the library which
+		decrypts the encrypted data and inserts the resulting DOM nodes
+		back into the original document.
+	  </p>
+	  <p>
+		This example can be found in the src/samples directory as
+		<em>simpleDecrypt.cpp</em>.
+	  </p>
+	  <section>
+		<title>Setup</title>
+		<p>
+		  The setup process is much the same as for 
+		  <jump href="#simpledsa">simpleVerify</jump>.  The document
+		  (which is the document created in simpleEncrypt) is parsed using 
+		  Xerces and a <em>DOMDocument</em> is returned.
+		</p>
+	  </section>
+	  <section>
+		<title>Load Private Key</title>
+		<p>
+		  The <em>simpleDecrypt</em> uses a preloaded RSA private key for
+		  the decryption.  A key resolver (<em>XSECKeyInfoResolver</em>) can 
+		  also be used to provide a callback mechanism such that applications 
+		  can determine the correct key at run time.
+		</p>
+		<p>
+		  The following code uses a <em>XSECProvider</em> to obtain a
+		  <em>XENCCipher</em>uses OpenSSL to load the private key from the
+		  <em>s_privateKey</em> char array.
+		</p>
+		<p>
+		  The key is loaded using a call to <em>setKEK</em>.  This method
+		  loads the key as a Key Encryption Key - which means it will be used
+		  to decrypt an &lt;EncryptedKey&gt; structure.
+		</p>
+<source><![CDATA[
+
+        XSECProvider prov;
+        XENCCipher *cipher;
+
+        cipher = prov.newCipher(doc);
+
+        /* Load the private key via OpenSSL and then wrap in an OpenSSLCrypto construct */
+        BIO * bioMem = BIO_new(BIO_s_mem());
+        BIO_puts(bioMem, s_privateKey);
+        EVP_PKEY * pk = PEM_read_bio_PrivateKey(bioMem, NULL, NULL, NULL);
+
+        /* NOTE : For simplicity - no error checking here */
+
+        OpenSSLCryptoKeyRSA * k = new OpenSSLCryptoKeyRSA(pk);
+        cipher->setKEK(k);
+
+]]></source>
+	  </section>
+	  <section>
+		<title>Perform Decryption</title>
+		<p>
+		  Now that the key is loaded, the actual decryption is performed
+		  using two lines of code.  The first finds the node to be
+		  decrypted.  In this case, the <em>findXENCNode</em> library
+		  function is used.
+		</p>
+		<p>
+		  The second line, <em>decryptElement</em> actually performs the
+		  decryption.  It performs the following steps :
+		</p>
+		<ul>
+		  <li>Load the &lt;EncryptedData&gt; structure into an 
+			<em>XENCEncryptedData</em> structure.</li>
+		  <li>if no decryption key is loaded (in this case, none is),
+			search the &lt;KeyInfo&gt; list for an &lt;EncryptedKey&gt;
+			element (one will be found in this case).</li>
+		  <li>Use the previously loaded KEK to decrypt the key found in
+			the previous step.</li>
+		  <li>Use the decrypted key to decrypt the &lt;EncryptedData&gt;
+			data</li>
+		  <li>Parse the decrypted data into DOM nodes</li>
+		  <li>Replace the &lt;EncryptedData&gt; with the DOM fragment
+			returned in the previous step</li>
+		</ul>
+<source><![CDATA[
+		
+        /* Find the EncryptedData node */
+        DOMNode * encryptedNode = findXENCNode(doc, "EncryptedData");
+
+        /* Do the decrypt */
+        cipher->decryptElement((DOMElement *) encryptedNode);
+
+]]></source>
+	  </section>
+	  <p>
+		The result of these steps is the decrypted letter.
+	  </p>
+<source><![CDATA[
+<Letter>
+<ToAddress>The address of the Recipient</ToAddress>
+<FromAddress>The address of the Sender</FromAddress>
+<Text>
+To whom it may concern, my secret credit card number is : 
+  0123 4567 89ab cdef
+
+...
+</Text></Letter>
+]]></source>
+	</section>
+  </body>
+</document>
diff --git a/doc/site/src/documentation/content/xdocs/c/programming.xml b/doc/site/src/documentation/content/xdocs/c/programming.xml
new file mode 100644
index 0000000..cb24134
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/programming.xml
@@ -0,0 +1,497 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+  <header>
+    <title>XML Signature Programming</title>
+  </header>
+  <body>
+    <section>
+	  <title>Overview</title>
+	  <p>
+		There are two main signature modes of operation for the libraries.  
+		Signing and verifying.  Verifying is the simplest operation, as 
+		it (generally) operates on a DOM &lt;Signature&gt; structure that 
+		has already been created.
+	  </p>
+	  <p>
+		Signing on the other hand can be more difficult, as there may be a
+		requirement to create the DOM structure necessary for the signature
+		prior to the actual signing operation.
+	  </p>
+	  <p>
+		The rest of this section provides a very high level overview on how
+		to use the library for signing and verificataion of signatures.  
+	  </p>
+	  <note>
+		Full API documentation for the current official release can be found 
+		<link href="apiDocs/index.html">here</link>.  The API documentation is
+		also generated <jump href="http://nagoya.apache.org/~blautenb/xml-security-c/apiDocs/">nightly</jump> from the CVS repository.
+	  </note>
+	  <p>
+		Two samples are provided :
+	  </p>
+	  <ul>
+		<li><link href="programming.html#simplehmac">Simple HMAC Signing
+		  </link></li>
+		<li><link href="programming.html#simpledsa">Simple DSA Validation
+		  </link></li>
+	  </ul>
+	  <p>
+		The code snippets are taken directly from some of the sample code 
+		provided in the src/samples directory in the distribution.  More 
+		information on the API can be found in the API Documentation.
+	  </p>
+	</section>
+	<section id="simplehmac">
+	  <title>A simple HMAC Signing example</title>
+	  <p>
+		The first example is based on the simpleHMAC.cpp code in samples.  It
+		creates an XML letter, the appends a dummy signature to the end, using
+		an enveloped-signature transform.
+	  </p>
+	  <section>
+		<title>Setup</title>
+		<p>
+		  The following code snippet initialises Xerces, Xalan and XSEC.
+		  Note that the enveloped transform is implemented using an XPath
+		  expression, so it is imperitive the Xalan libraries are initialised.
+		</p>
+<source><![CDATA[
+int main (int argc, char **argv) {
+
+    try {
+        XMLPlatformUtils::Initialize();
+#ifndef XSEC_NO_XALAN
+        XalanTransformer::initialize();
+#endif
+        XSECPlatformUtils::Initialise();
+    }
+    catch (const XMLException &e) {
+
+        cerr << "Error during initialisation of Xerces" << endl;
+        cerr << "Error Message = : "
+		     << e.getMessage() << endl;
+
+    }
+
+    // Create a blank Document
+
+    DOMImplementation *impl = 
+        DOMImplementationRegistry::getDOMImplementation(MAKE_UNICODE_STRING("Core"));
+	
+    // Create a letter
+    DOMDocument *doc = createLetter(impl);
+    DOMElement *rootElem = doc->getDocumentElement();
+
+]]></source>
+		<p>
+		  In the sample application, the call to <em>createLetter(impl)</em> 
+		  simply creates a
+		  letter DOM structure with a to and from address and some text.
+		  This is done using standard DOM calls via Xerces.
+		</p>
+		<p>
+		  Once the system is initialised and the DOM document is created,
+		  a DSIGSignature object is created via the <em>XSECProvider</em>
+		  interface class.  The signature object is then used to create
+		  a blank signature DOM node structure which is then inserted at 
+		  the end of the document.
+		</p>
+		<source><![CDATA[
+    XSECProvider prov;
+    DSIGSignature *sig;
+    DOMElement *sigNode;
+
+    try {
+		
+        // Create a signature object
+
+        sig = prov.newSignature();
+        sig->setDSIGNSPrefix("ds");
+
+        // Use it to create a blank signature DOM structure from the doc
+
+        sigNode = sig->createBlankSignature(doc, 
+                                    CANON_C14N_COM, 
+                                    SIGNATURE_HMAC, 
+                                    HASH_SHA1);
+
+]]></source>
+		<p>
+		  The call to <em>newSignature</em> creates a signature
+		  object only.  No DOM nodes are created at this point.
+		  The call to <em>setDSIGNSPrefix</em> tells the XSEC
+		  library what namespace prefix to use for the signature object when
+		  it starts to create DOM nodes (in this case "ds" will be used).  
+		  By default, the library will use "dsig" as the prefix for the name 
+		  space for Digital Signatures.
+		</p>
+		<p>
+		  Finally, the call to sig->createBlankSignature sets up both the 
+		  DOM structure and the XSEC objects for a new signature with no
+		  &lt;Reference&gt; elements.  In this case, the signature will be
+		  made using Commented C14n canonicalisation, and a HMAC-SHA1
+		  signature.
+		</p>
+		<warning>
+		  The XSECProvider class still "owns" the DSIGSignature object.
+		  To delete the object, the original provider.release(sig) call
+		  should be used.  Never delete a DSIGSignature object directly.
+		</warning>
+	  </section>
+	  <section>
+		<title>Create a Reference and Sign</title>
+		<p>
+		  Now that the signature object is created, the signature is inserted
+		  into the document, and a reference is created and set for an
+		  enveloping transform.
+		</p>
+	  <source><![CDATA[
+        // Insert the signature DOM nodes into the doc
+
+        rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n")));
+        rootElem->appendChild(sigNode);
+        rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n")));
+
+        // Create an envelope reference for the text to be signed
+        DSIGReference * ref = sig->createReference("");
+        ref->appendEnvelopedSignatureTransform();
+
+]]></source>
+		<p>
+		  The <em>""</em> parameter to <em>createReference</em> sets the
+		  URI attribute for the reference to be "" - indicating the root
+		  element of the document in which the signature resides.
+		  The call to <em>appendEnvelopedSignatureTransform</em> adds
+		  a standard eneveloped-signature transform to the Reference node.
+		</p>
+		<p>
+		  The macro MAKE_UNICODE_STRING is defined within the library
+		  header files and is used to transcode local code page strings.
+		</p>
+		<note>
+		  There is no need to insert the reference object into the DOM structure.
+		  This is done automatically by the <em>createReference</em> call.
+		</note>
+		<p>
+		  Finally we create a signing key and sign the document.
+		</p>
+		<source><![CDATA[
+
+        // Set the HMAC Key to be the string "secret"
+
+        OpenSSLCryptoKeyHMAC * hmacKey = new OpenSSLCryptoKeyHMAC();
+        hmacKey->setKey((unsigned char *) "secret", strlen("secret"));
+        sig->setSigningKey(hmacKey);
+
+        // Add a KeyInfo element
+        sig->appendKeyName("The secret key is \"secret\"");
+
+        // Sign
+
+        sig->sign();
+    }
+
+    catch (XSECException &e)
+    {
+        cerr << "An error occured during a signature load\n   Message: "
+             << e.getMsg() << endl;
+        exit(1);
+                
+    }
+]]></source>
+		<p>
+		  The first two code lines create an OpenSSLCryptoKeyHMAC object,
+		  and set the key value to the string "secret".  The OpenSSL...
+		  classes are the interface layer between XSEC and OpenSSL.  More
+		  information can be found in the API documentation, but the main
+		  point of note is that the XSEC library never deals directly with
+		  OpenSSL - it works via the XSECCrypto abstract classes which are
+		  implemented in the OpenSSLCrypto code.  This would allow another
+		  person to re-implement the XSECCrypto code to use any cryptographic
+		  provider required.
+		</p>
+		<note>
+		  Once the key is passed to the signature it is owned by the signature.
+		  The signature object will delete the key when it is itself deleted,
+		  or a new key is passed in.
+		</note>
+		<p>
+		  The call to <em>sig->appendKeyName()</em> is used to append a
+		  &lt;KeyName&gt; element into the &lt;KeyInfo&gt; block.  The
+		  KeyInfo block was created as part of this call.
+		</p> 
+		<p>
+		  After the call to <em>sig->sign()</em> the DOM structure has the
+		  correct hash and signature values.  The owner program can write,
+		  store or further manipulate the document as required.  If a document
+		  manipulation might affect the signature (in this case almost anything
+		  would, as we are using an enveloping transform which effectively
+		  signs everything that is not part of the signature), then a further
+		  call to <em>sig->sign()</em> will re-sign the changes.
+		</p>
+		<p>
+		  The last part of the code does some work to output the new DOM
+		  structure.  The output should look something like the following:
+		</p>
+		<source><![CDATA[
+<Letter>
+<ToAddress>The address of the Recipient</ToAddress>
+<FromAddress>The address of the Sender</FromAddress>
+<Text>
+To whom it may concern
+
+...
+</Text>
+<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+<ds:SignedInfo>
+<ds:CanonicalizationMethod Algorithm=
+"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
+<ds:Reference URI="">
+<ds:Transforms>
+<ds:Transform Algorithm=
+"http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+</ds:Transforms>
+<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+<ds:DigestValue>askxS/A3BaLCjFjZ/ttU9c12kA4=</ds:DigestValue>
+</ds:Reference>
+</ds:SignedInfo>
+<ds:SignatureValue>oYEdQYG1IHzbkR1UcJ9Q5VriRPs=
+</ds:SignatureValue>
+<ds:KeyInfo>
+<ds:KeyName>The secret key is "secret"</ds:KeyName>
+</ds:KeyInfo>
+</ds:Signature>
+</Letter>
+]]></source>
+		<p>Note that the DigestValue and SignatureValue elements have been
+		  filled in.
+		</p>
+	  </section>
+	</section>
+	<section id="simpledsa">
+	  <title>A simple validation example</title>
+	  <p>
+		The second example takes a pre-signed document and an associated
+		certificate and verifies the embedded signature.  The document in
+		question is a simple purchase order, and changes are made to the
+		value of the order to demonstrate a signature failing verification.
+	  </p>
+	  <section>
+		<title>Setup</title>
+		<p>
+		  As in the first example, Initialisation of the libraries is
+		  performed, and Xerces is used to read in the document (which in
+		  this case is stored in a string in the source code).
+		</p>
+		<p>
+		  In order to be able to modify the contents of the document later
+		  on, we also quickly find the string containing the value of the
+		  purchase order.
+		</p>
+		<p>
+		  For the sake of brevity, the code relating to parsing the in-memory
+		  document has been removed from the snippet below.
+		</p>
+		<source><![CDATA[
+int main (int argc, char **argv) {
+
+    try {
+        XMLPlatformUtils::Initialize();
+#ifndef XSEC_NO_XALAN
+        XalanTransformer::initialize();
+#endif
+        XSECPlatformUtils::Initialise();
+    }
+    catch (const XMLException &e) {
+
+        cerr << "Error during initialisation of Xerces" << endl;
+        cerr << "Error Message = : "
+             << DOMString(e.getMessage()) << endl;
+
+    }
+
+    ...
+    
+    Xerces is used to parse the document here
+    
+   
+
+    DOM_Document doc = parser->getDocument();
+
+    // Find the Amount node
+    DOMNode *amt = doc->getDocumentElement();
+
+    if (amt != NULL)
+        amt = amt->getFirstChild();
+
+    while (amt != NULL && 
+           (amt->getNodeType() != DOMNode::ELEMENT_NODE || 
+           !strEquals(amt->getNodeName(), "Amount")))
+        amt = amt->getNextSibling();
+
+    if (amt != NULL)
+        amt = amt->getFirstChild();
+
+    if (amt == NULL || amt->getNodeType() != DOMNode::TEXT_NODE) {
+        cerr << "Error finding amount in purchase order" << endl;
+        exit (1);
+    }
+]]></source>
+	  </section>
+	  <section>
+		<title>Create the Signature and Key objects</title>
+		<p>
+		  Now that the document is in memory, an XSECProvider is
+		  created and used to create a new DSIGSignature object.  In
+		  addition, the OpenSSL interface routines are used to
+		  read in a certificate and obtain the associated public
+		  key.
+		</p>
+		<source><![CDATA[
+    XSECProvider prov;
+
+    DSIGSignature * sig = prov.newSignatureFromDOM(doc);
+
+
+    try {
+        // Use the OpenSSL interface objects to get a signing key
+
+        OpenSSLCryptoX509 * x509 = new OpenSSLCryptoX509();
+        x509->loadX509Base64Bin(cert, strlen(cert));
+                
+        sig->load();
+]]></source>
+		<p>
+		  In this case, the signature is create with the 
+		  <em>newSignatureFromDOM</em> method.  This tells the library that
+		  the signature structure (although not necessarily a signed
+		  structure) already exists in the DOM nodes.  The library attempts
+		  to find the &lt;Signature&gt; node so that the load will work.
+		  (The library will throw an XSECException if it cannot find the
+		  Element.)
+		</p>
+		<p>
+		  The later call to <em>sig-&gt;load()</em> tells the library to
+		  read the DOM structure and create the appropriate DSIG elements.
+		</p>
+		<p>
+		  In this case an OpenSSLCryptoX509 object is also created.  It is
+		  used to read in the <em>cert</em> string and convert to an X509
+		  structure.  This could also be done using standard calls directly
+		  to OpenSSL, but this is a quick shortcut.
+		</p>
+	  </section>
+	  <section>
+		<title>Find a key</title>
+		<p>
+		  As we already know the key, the following code snippet loads the 
+		  key directly from the related X509.  However prior to doing this,
+		  the code demonstrates
+		  using the DSIGKeyInfo structures to find the key name that was
+		  embedded in the certificate.  In an application, this could be
+		  used to reference the correct key to be passed in.  (Maybe via
+		  an XKMS call.)
+		</p>
+		<p>
+		  the <em>safeBuffer</em> type is used extensively within the XSEC
+		  library to safely handle variable length strings and raw buffers.
+		  The call to <em>rawCharBuffer()</em> simply returns a (char *)
+		  type pointer to the buffer within the <em>safeBuffer</em>
+		</p>
+		<p>
+		  The call to <em>clonePublicKey()</em> returns a copy of the
+		  public key embedded in the certificate.  It is owned by the caller,
+		  so in this case it can safely be passed to the DSIGSignature object
+		  where it will be destroyed when another key is loaded or the 
+		  object is released by the XSECProvider.
+		</p>
+		<source><![CDATA[
+        DSIGKeyInfoList * kinfList = sig->getKeyInfoList();
+                
+        // See if we can find a Key Name
+        safeBuffer kname;
+        DSIGKeyInfo * kinf = kinfList->getFirstKeyInfo();
+        while (kinf != NULL) {
+            kname = kinf->getKeyName();
+            if (kname.sbStrcmp("")) {
+                cout << "Key Name = " 
+                     << kname.rawCharBuffer() << endl;
+            }
+            kinf = kinfList->getNextKeyInfo();
+        }
+
+        sig->setSigningKey(x509->clonePublicKey());
+]]></source>
+	  </section>
+	  <section>
+		<title>Validate the signature</title>
+		<p>
+		  Finally the signature is validated.  In this case, we validate it
+		  three times.  First with the original DOM structure, then with the
+		  price changed and finally with the price set back to the original
+		  value.
+		</p>
+		<source><![CDATA[
+        cout << "Amount = " << amt << " -> ";
+
+        if (sig->verify()) {
+            cout << "Signature Valid\n";
+        }
+        else {
+            cout << "Incorrect Signature\n";
+        }
+
+        amt.setNodeValue("$0.50");
+                
+        cout << "Amount = " << amt << " -> ";
+
+        if (sig->verify()) {
+            cout << "Signature Valid\n";
+        }
+        else {
+            cout << "Incorrect Signature\n";
+        }
+
+        amt.setNodeValue("$16.50");
+                
+        cout << "Amount = " << amt << " -> ";
+
+        if (sig->verify()) {
+            cout << "Signature Valid\n";
+        }
+        else {
+            cout << "Incorrect Signature\n";
+        }
+]]></source>
+		<p>
+		  When run, the program outputs the following:
+		</p>
+		<source><![CDATA[
+Key Name = C=AU, ST=Vic, O=XML-Security-C Project, 
+CN=Samples Demo Certificate
+Amount = $16.50 -> Signature Valid
+Amount = $0.50 -> Incorrect Signature
+Amount = $16.50 -> Signature Valid
+		  ]]></source>
+	  </section>
+	</section>
+  </body>
+</document>
diff --git a/doc/site/src/documentation/content/xdocs/c/releases.xml b/doc/site/src/documentation/content/xdocs/c/releases.xml
new file mode 100644
index 0000000..20651a2
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/releases.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+  <header>
+	<title>Release Information</title>
+  </header>
+  <body>
+	<section>
+	  <title>Changes</title>
+	  <p>
+		This section describes the changes that have occurred between the
+		various releases of the library
+	  </p>
+	  <section>
+		<title>Version 1.1.0</title>
+		<p>
+		  Version 1.1 provides bug fixes to signature functionality +
+		  beta support for XML Encryption.
+		</p>
+		<p>
+		  Changes from version 1.0.0 include :
+		</p>
+		<ul>
+		  <li>Beta implementation of XML Encryption, using an interface
+			similar to that used in the Apache Java xml-security library</li>
+		  <li>Fix for bug where large text elements would be truncated during
+			canonicalisation</li>
+		  <li>Provision of a <em>cipher</em> tool that can be used to encrypt
+			and decrypt XML documents</li>
+		  <li>Updated and improved the Windows Crypto API interface</li>
+		  <li>Other bug fixes to signature functionality</li>
+		  <li>Updated to support Xerces 2.4/2.5 and Xalan 1.7</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>Changes from 0.10 - 1.00</title>
+		<p>
+		  Version 1.00 is the first release of the library considered basically
+		  stable.  The interface is fairly simple, but all the mandatory
+		  requirements of the XML Digital Signature standard, canonicalised
+		  XML, exclusive canonicalised XML and XPath-Filter2 are implemented.
+		</p>
+		<p>
+		  Changes from version 0.20 include :
+		</p>
+		<ul>
+		  <li>Implementation of remaining KeyInfo elements (SPKIData,
+			PGPData and MgmtData</li>
+		  <li>Re-implementation of XSECXPathNodeList using a binary search 
+			to speed up list searches</li>
+		  <li>Support for Intel Compiler 6.0 on
+			Linux and Forte CC (CC 5.4) on Solaris</li>
+		  <li>Limited support (i.e. without Xalan integration for NetBSD, 
+			FreeBSD and Cygwin</li>
+		  <li>A number of minor bug fixes</li>
+		</ul>
+	  </section>
+	  <section>
+	    <title>Changes from 0.10 - 0.20</title>
+		<p>
+		  Includes a number of bug-fixes and a first cut at a provider for the
+		  Windows Crypto API.
+		</p>
+	  </section>
+	  <section>
+		<title>Beta release 0.10</title>
+		<p>
+		  The current release of the xml-security-c library is a beta of the
+		  XML Digital Signature code, and is the first version of the library
+		  produced within Apache's XML project.
+		</p>
+		<p>
+		  Previous versions were created within Sourceforge as the
+		  xml-security-c project at that site.
+		</p>
+	  </section>
+	  <section>
+		<title>Changes from 0.03-0.10</title>
+		<p>
+		  The following changes occurred between versions 0.03 and 0.10 :
+		</p>
+		<ul>
+		  <li>A <em>threadTest</em> tool, which is primarily used to show
+			how multiple threads can access the library under Windows</li>
+		  <li>Windows and UNIX URI Resolvers, based on the Xerces resolver,
+			but which can handle HTTP re-directs</li>
+		  <li>Completed a basic level of API documentation</li>
+		  <li>Reviewed library to ensure usage of UTF-16 internally</li>
+		  <li>Closed a number of memory-leaks caused by exceptions being
+			thrown</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>Changes from 0.02-0.03</title>
+		<p>
+		  The following changes occurred between 0.02->0.03
+		</p>
+		<ul>
+		  <li>A <em>txfmout</em> tool to output the transformed references</li>
+		  <li>Updates to <em>templatesign</em> to support KeyInfo elements
+			and RSA signatures</li>
+		  <li>Library support for RSA signatures</li>
+		  <li>API support form manipulating KeyInfo elements</li>
+		  <li>Pluggable KeyInfo Resolvers (to allow an application to supply
+			an object that will resolve a given KeyInfo to a key)</li>
+		  <li>Pluggable URI resolvers</li>
+		  <li>API support for creating references and transformations</li>
+		  <li>Re-written Makefiles for *NIX</li>
+		  <li>Improved API docs</li>
+		  <li>Envelope Transform that no longer uses XPath transforms (much
+			quicker)</li>
+		  <li>Uses new Xerces DOMNode objects - has made for significant
+			speed improvements</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>Changes from 0.01-0.02</title>
+		<ul>
+		  <li>Signing functionality</li>
+		  <li>Update C14n canonicalisation</li>
+		  <li>Exclusive Canonicalisation</li>
+		  <li>Basic ability to create a signature via the API (rather than just
+			from an XML template file</li>
+		  <li>SHA-1 HMAC support</li>
+		  <li>Basic Documentation of core API</li>
+		  <li>A <em>templatesign</em> tool</li>
+		</ul>
+	  </section>
+	</section>
+	<section>
+	  <title>Future Release Plans</title>
+	  <p>A number of items are planned for after the 1.0 major release.</p>
+	  <ul>
+		<li>XML Encryption Support</li>
+		<li>decoupled, pluggable interface for transforms and signature types. 
+		  Currently these are hard coded into the library, so it is not
+		  possible for calling applications to "plug-in" their own signature
+		  types or transforms</li>
+		<li>Implement a SAX based canonicaliser for situations where an XML
+		  document needs to be read in and directly canonicalised (i.e. where
+		  the signature is not part of the document being processed</li>
+		<li>Improved <em>KeyInfo</em> resolver interface leading to...</li>
+		<li>XKMS client support</li>
+		<li>Implementation of libgcrypt as a crypto provider</li>
+		<li>Support for PGP/GPG key based signatures (using libgcrypt and 
+		  gpgme)</li>
+		<li>Bring the API in-line with JCP 105 (if appropriate)</li>
+		<li>Eventually (the GRAND PLAN) an XKMS server implementation</li>
+		<li>Implementation of a core set of encryption primitives to allow
+		  decoupling from OpenSSL for "light" applications</li>
+	  </ul>
+	</section>
+  </body>
+</document>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/c/tools.xml b/doc/site/src/documentation/content/xdocs/c/tools.xml
new file mode 100644
index 0000000..23a6d10
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/c/tools.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+  <header>
+    <title>Tools</title>
+  </header>
+  <body>
+	<section>
+	  <title>Provided Tools</title>
+	  <p>
+		A number of very simple "tools" (really examples) are provided with
+		the XML Security library.  These can be used either to provide examples
+		of how to use the library or as simple utilities in their own right for
+		performing canonicalisation and signature functions.
+	  </p>
+	  <p>
+		The tools are :
+	  </p>
+	  <ul>
+		<li><em>c14n</em> - A tool to output a Canonicalised version of an 
+		  input document.</li>
+		<li><em>checksig</em> - A tool to validate a signature in an XML
+		  input document</li>
+		<li><em>templatesign</em> - A tool to sign an XML document that already
+		  has the &lt;Signature&gt; structure installed, but needs the references
+		  hashed and the SignatureValue set.</li>
+		<li><em>txfmout</em> - A tool to take an XML Signature and output
+		  the fully transformed references to stdout or a nominated file</li>
+		<li><em>threadTest</em> - A Windows only program that runs up a number
+		  of threads which simultaneously sign and validate documents.  A
+		  number of documents are modified in between (to cause the signature
+		  validation to fail).</li>
+		<li><em>siginf</em> - A tool to read in an XML Signature and dump
+		  various details about the signature and references to the terminal
+		</li>
+		<li><em>cipher</em> - A tool to encrypt and decrypt XML documents.
+		</li>
+	  </ul>
+	  <p>
+		The tools can all be run with no command line arguments to see their
+		parameters.
+	  </p>
+	  <p>
+		One extra "tool" is provided - <em>xtest</em>.  This is really a testing
+		program that exercises various capabilities of the library and compares
+		the results with known good results.
+	  </p>
+	</section>
+  </body>
+</document>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/contrib.xml b/doc/site/src/documentation/content/xdocs/contrib.xml
new file mode 100644
index 0000000..1406508
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/contrib.xml
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+  <header>
+    <title>Contributing to XML-Security</title>
+  </header>
+  <body>
+    <section>
+      <title>Introduction</title>
+      <p> 
+	The XML Security Project is an 
+	<link href="http://www.opensource.org/">Open Source</link> 
+        volunteer project released
+	under a very open license. This means there are many ways to contribute to the
+	project - either with direct participation (coding, documenting, answering
+	questions, proposing ideas, reporting bugs, suggesting bug-fixes, etc..) or by
+	resource donations (money, time, publicity, hardware, software, conference
+	presentations, speeches, etc...). 
+      </p>
+      <p> 
+	To begin with, we suggest you to subscribe to the
+        <link href="site:mail-lists">XML-Security mailing list</link> (follow the link for
+	information on how to subscribe and to access the mail list archives).
+	Listen-in for a while, to hear how others make contributions. 
+      </p>
+      <p>
+	You can get your local working copy of the
+        <link href="http://cvs.apache.org/viewcvs.cgi/xml-security">latest and
+	  greatest code</link> (which you find in the xml-security module in the CVS code
+	repository. Review the todo list, choose a task (or perhaps you have noticed
+	something that needs patching). Make the changes, do the testing, generate a
+	patch, and post to the dev mailing list. (Do not worry - the process is easy
+	and explained below.) 
+      </p>
+    </section>
+    <section>
+     <title>Help Wanted Here</title>
+      <p> 
+	The rest of this document is mainly about contributing new or
+        improved code and/or documentation, but we would also be glad to have extra
+        help in any of the following areas: 
+      </p>
+      <ul>
+        <li>
+	  Answering questions on the mailing list - there
+          is often a problem of having too many questioners and not enough experts to
+          respond to all the questions.
+	</li>
+        <li>
+	  Testing the package (especially its less-frequently-used features) on
+          various configurations and reporting back.
+	</li>
+        <li>
+	  Debugging - producing reproduceable test cases and/or finding
+          causes of bugs. Some known bugs are informally listed on To Do, and some are
+          recorded in Bugzilla (see <link href="#procedure">explanation
+	    below</link>).
+	</li>
+      <li>
+	  Specifying/analysing/designing new features - and beyond. (If you
+	  wish to get involved with this, please join the mailing list, install
+	  and try out xml-security and read some of the 
+	  <link href="site:mail-lists">mail archives</link>. You should have a strong
+          "fluency" in XML technologies especially XMLDSig and XML Encryption,
+	  Java or C++ and a basic understanding of the architecture of this
+	  package.
+	</li>
+      </ul>
+    </section> <anchor id="cvshowto"/>
+    <section>
+    <title>CVS Usage Precis</title>
+      <p>
+	An overview of how to use CVS to participate in the XML Security development.
+        Do not be afraid - you cannot accidently destroy the actual code repository,
+        because you are working with a local copy as an anonymous user. Therefore, you
+        do not have the system permissions to change anything. You can only update your
+        local repository and compare your revisions with the real repository. 
+      </p>
+      <p> 
+	(Further general CVS usage information is at
+        <link href="http://www.cvshome.org/">www.cvshome.org</link> and your local
+	<code>info cvs</code> pages or <code>man cvs</code> pages or user
+	documentation.) 
+      </p>
+      <p> 
+	Have a look at the <link href="site:java/installation">Java</link> or
+	<link href="site:c/install">C++</link> installation pages to see
+	how to get a local copy of the source.
+      </p>
+    </section> <anchor id="ssh"/>
+    <section>
+    <title>CVS Committer with Secure Shell access</title>
+      <p>
+	After a developer has consistently provided contributions (code,
+        documentation and discussion), then the rest of the dev community may vote to
+        grant this developer commit access to CVS. 
+      </p>
+      <p>
+	You will need secure access to the repository to be able to commit
+        patches. Here are some resources that help to get your machine configured to
+        use the repository over SSH. 
+      </p>
+      <ul>
+        <li><link href="http://cvsbook.red-bean.com/">The CVS Book</link></li>
+	<li><link href="http://www.cvshome.org/">www.cvshome.org</link></li>
+      </ul>
+    </section> <anchor id="procedure"/>
+    <section>
+    <title>Procedure for Raising Development Issues</title>
+      <p> 
+	There are two methods for discussing development and submitting
+        patches. So that everyone can be productive, it is important to know which
+        method is appropriate for a certain situation and how to go about it without
+        confusion. This section explains when to use the <code>developer</code>
+        <link href="site:mail-lists">mailing list</link> the bug database. 
+      </p>
+      <p> 
+	Research your topic thoroughly before beginning to discuss a new
+        development issue. Search and browse through the email archives - your issue
+        may have been discussed before. Prepare your post clearly and
+	concisely. 
+      </p>
+      <p> 
+	Most issues will be discovered, resolved, and then patched quickly
+        via the <code>developer</code> mailing list. Larger issues, and ones that are
+        not yet fully understood or are hard to solve, are destined for
+	Bugzilla. 
+      </p>
+      <p> 
+	Experienced developers use Bugzilla directly, as they are very sure
+        when they have found a bug and when not. However, less experienced users should
+        first discuss it on the user or developer mailing list (as appropriate).
+        Impatient people always enter everything into Bugzilla without caring if it is
+        a bug of our package or their own installation/configuration mistake - please do
+        not do this. 
+      </p>
+      <p> 
+	As a rule-of-thumb, discuss an issue on the <code>developers</code>
+        mailing list first to work out any details. After it is confirmed to be
+        worthwhile, and you are clear about it, then submit the bug description or
+        patch via Bug Tracking. 
+      </p>
+      <p> 
+	Perhaps you do not get any answer on your first reply, so just post
+        it again until you get one. (But please not every hour - allow a few days for
+        the list to deal with it.) Do not be impatient - remember that the whole world
+        is busy, not just you. Bear in mind that other countries will have holidays at
+        different times to your country and that they are in different time zones. You
+        might also consider rewriting your initial posting - perhaps it was not clear
+        enough and the readers eyes glazed over. 
+      </p>
+    </section> <anchor id="tips"/>
+    <section>
+     <title>Contribution Notes and Tips</title>
+      <p> 
+	This is a collection of tips for contributing to the project in a
+        manner that is productive for all parties. 
+      </p>
+      <ul>
+        <li> 
+	  Every contribution is worthwhile. Even if the ensuing discussion
+          proves it to be off-beam, then it may jog ideas for other people. 
+	</li>
+        <li> 
+	  Use sensible and concise email subject headings. Search engines,
+          and humans trying to browse a voluminous list, will respond favourably to a
+          descriptive title. 
+	</li>
+        <li>
+	  Start new threads with new Subject for new topics, rather than
+          reusing the previous Subject line. 
+	</li>
+        <li>
+	  Keep each topic focused. If some new topic arises then start a new
+          discussion. This leaves the original topic to continue uncluttered. 
+	</li>
+        <li>
+	  Whenever you decide to start a new topic, then start with a fresh
+          new email message window. Do not use the &quot;Reply to&quot; button, because
+          threaded mail-readers get confused (they utilise the <code>In-reply-to</code>
+          header). If so, then your new topic will get lost in the previous thread and go
+          unanswered. 
+	</li>
+        <li> 
+	  Prepend your email subject line with a marker when that is
+          appropriate, e.g. <code>[Patch]</code>, <code>[Proposal]</code>,
+          <code>[RT]</code> (Random Thought which quickly blossom into research topics
+          :-), <code>[STATUS]</code> (development status of a certain
+	  facility). 
+	</li>
+        <li> 
+	  When making changes to XML documentation, or any XML document for
+          that matter, use a <link href="http://www.oasis-open.org/cover/">validating
+	    parser</link> (one that is tried and true is
+	  <link href="http://openjade.sourceforge.net/">OpenSP/onsgmls</link>). This
+	  procedure will detect errors without having to go through the whole <code>build
+	    docs</code> process to find them. Do not expect Forrest or the build system to
+	  detect the validation errors for you - they can do it, but that is not their
+	  purpose. (Anyway, nsgmls validation error messages are more
+	  informative.) 
+	</li>
+	<li> 
+	  Remember that most people are participating in development on a
+	  volunteer basis and in their "spare time". These enthusiasts will attempt to
+	  respond to issues. It may take a little while to get your answers. </li>
+	<li> 
+	  Research your topic thoroughly before beginning to discuss a new
+	  development issue. Search and browse through the email archives - your issue
+	  may have been discussed before. Do not just perceive a problem and then rush
+	  out with a question - instead, delve. 
+	</li>
+	<li> 
+	  Try to at least offer a partial solution and not just a problem
+	  statement. 
+	</li>
+	<li> 
+	  Take the time to clearly explain your issue and write a concise
+	  email message. Less confusion facilitates fast and complete
+	  resolution. 
+	</li>
+	<li> 
+	  Do not bother to send an email reply that simply says "thanks". When
+	  the issue is resolved, that is the finish - end of thread. Reduce clutter.
+        </li>
+	<li> 
+	  You would usually do any development work against the HEAD branch of
+	  CVS. 
+	</li>
+	<li> 
+	  When sending a patch, you usually do not need to worry about which
+	  CVS branch it should be applied to. The maintainers of the repository will
+	  decide. 
+	</li>
+	<li> 
+	  If an issue starts to get bogged down in list discussion, then it
+	  may be appropriate to go into private off-list discussion with a few interested
+	  other people. Spare the list from the gory details. Report a summary back to
+	  the list to finalise the thread. 
+	</li>
+	<li> 
+	  Become familiar with the mailing lists. As you browse and search,
+	  you will see the way other people do things. Follow the leading
+	  examples. 
+	</li>
+      </ul>
+    </section>
+  </body>
+</document>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/download.xml b/doc/site/src/documentation/content/xdocs/download.xml
new file mode 100644
index 0000000..48b46a0
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/download.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "./xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>Downloading the Libraries</title> 
+  </header> 
+  <body> 
+	<section>
+	  <title>Obtaining the Libraries</title>
+	  <p>
+		Source and binrary distributions for both the Java and C++ libraries
+		are available from from the 
+		<jump href="http://xml.apache.org/security/dist/">
+		  XML project site</jump> only.  Current
+		distributions are <em>not</em> available from the mirrors.
+	  </p>
+	</section>
+    <section> 
+      <title>Validating Distribution Signatures</title>
+      <p>
+		All distributions are provided with signature <em>.sig</em> files.
+		These contain PGP signatures for the related distribution.
+		You should validate these using the keys found in the
+		<jump href="http://www.apache.org/dist/xml/security/KEYS">
+		  key file</jump> downloaded from the Apache site.
+	  </p>
+	  <p/>
+<!--
+	  This is not valid if the mirror is not available
+	  <warning>
+		You should always use a key file downloaded from the Apache site
+		directly rather than from a mirror.
+	  </warning>
+-->
+	  <p>
+		Verification can be performed using :
+	  </p>
+	  <source>
+% pgpk -a KEYS
+% pgpv xml-security-bin-1_2_1.zip.sig
+  <em>or</em>
+% pgp -ka KEYS
+% pgp xml-security-bin-1_2_1.zip.sig
+  <em>or</em>
+% gpg --import KEYS
+% gpg --verify xml-security-bin-1_2_1.zip.sig
+	  </source>
+	</section>
+    <section>
+      <title>CVS Download</title>
+      <p>
+		For the adventurous, this project's CVS repository can be checked 
+		out through anonymous (pserver) CVS with the following instruction 
+		set.  When prompted for a password for anonymous, simply enter 
+		"anoncvs" without quotes: 
+      </p>
+      <source>cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
+	password: anoncvs
+	cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout
+	xml-security
+      </source>
+	</section>
+  </body>
+</document>
+
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/faq.xml b/doc/site/src/documentation/content/xdocs/faq.xml
new file mode 100644
index 0000000..2460b2a
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/faq.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V1.1//EN" "dtd/faq-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "./xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<faqs title="Frequently Asked Questions">
+  <part id="mailinglist">
+    <title>Mailinglist</title>
+    <faq id="archive">
+      <question>
+        Where's the archive for the list?
+      </question>
+      <answer>
+        <p>
+	  Currently, <link href="ext:gmane">Gmane</link> holds the messages
+	  of the last two weeks. This service also makes the mailinglist
+	  reachable with a news reader.
+	</p>
+	<p>
+	  You can use the ezmlm mailing list controller to recieve previous
+	  messages by email. Send an empty email to <link
+	    href="ext:mailhelp">security-dev-help@xml.apache.org</link> for detailed information on how
+	  to use this service 
+	</p>
+      </answer>
+    </faq>
+    <!-- More faqs or parts here -->
+  </part>
+  
+  <part id="general">
+    <title>Required background</title>
+    <faq id="XML-general">
+      <question>
+	Where can I learn about XML?
+      </question>
+      <answer>
+	<p>
+	  There are plenty of resources on the web, just use any search
+	  engine. You might start at <link href="ext:xmlfaq">XMLFAQ</link> or <link href="ext:zvon">ZVON</link>.
+	</p>
+      </answer>
+    </faq>
+   <faq id="XMLDSig">
+      <question>
+	Where can I learn about XML Digital Signatures?
+      </question>
+      <answer>
+	<p>
+	  The best place to start is <link href="ext:w3c/xmldsig"> &xmldsig; </link>. Links on XML
+	  security in general can be found on <link href="ext:christ-page">&christpage; </link>.
+	</p>
+      </answer>
+    </faq>
+   <faq id="XMLEnc">
+      <question>
+	Where can I learn about XML Encryption?
+      </question>
+      <answer>
+	<p>
+	  The best place to start is <link href="ext:w3c/xmlenc">&xmlenc;</link>. Links on XML
+	  security in general can be found on <link href="ext:christ-page">&christpage;</link>.
+	</p>
+      </answer>
+    </faq>
+   <faq id="Crypto">
+      <question>
+	Where can I learn about Cryptography in general?
+      </question>
+      <answer>
+	<p> 
+	  A lot of resources exist on the web, including the 'green bible' for
+	  cryptography: <link href="ext:hac">&hac;</link>. The &hac; is completely online and
+	  it should satisfy most of your cryptographic hunger. Disadvantage of
+	  it is that it goes rather deep, so it isn't a executive overview or a
+	  &quot;Learn XYZ in 21 days&quot;-book
+	</p>
+      </answer>
+    </faq>
+  </part>
+
+  <part id="xmldsig">
+    <title>XMLDSig questions</title>
+    <faq id="env-transf">
+      <question>
+	What is the enveloped transform?
+      </question>
+      <answer>
+	<p>
+	  The enveloped transform is a special transform that enables the use of
+	  so-called enveloped signatures.
+	</p>
+	<p>
+	  Enveloped signatures are signatures over an entire XML document, for
+	  which the <code>&lt;Signature&gt;</code> element is included in the
+	  document itself. An example could be:
+	</p>
+	<source>
+<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+   <Root>
+     <SomeContent>
+       ... 
+     </SomeContent>]]><em><![CDATA[
+       <ds:Signature>
+         <ds:SignedInfo>
+           <ds:Reference URI="">
+             <ds:Transforms>
+               <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+             </ds:Transforms>
+           </ds:Reference>
+         </ds:SignedInfo>
+         ....
+       </ds:Signature>]]></em><![CDATA[
+   </Root>]]>
+	</source>
+	<p>
+	  The <code>Reference</code> indicates that <code>Root</code> and it's
+	  descendants (except for comments) are signed, but the
+	  <code>Transform</code> element says to throw out the
+	  <code>Signature</code> element (that is the parent of this
+	  <code>Reference</code>) from the stream that is to be signed. Note
+	  that if there are other
+	  <code>Signature</code> elements in <code>Root</code>, they will remain
+	  untouched.
+	</p>
+      </answer>
+    </faq>
+    <faq id="c14N">
+      <question>
+	What's the difference between C14N and ExclC14N?
+      </question>
+      <answer>
+	<p>
+	  C14N was introduced to solve some problems that arise when signing
+	  XML. Because XML allows to change the representation of an XML document
+	  without changing the actual content, signatures may break when
+	  different parsers are used to generate and verify the signature. A simple
+	  example of such an allowed change is changing the order of attributes
+	  within an element. (That is solved by C14N by sorting the attributes by
+	  alphabet)
+	</p>
+	<p>
+	  Because a C14N'ed XML fragment inherits all the namespace declarations
+	  from it's ancestors, it is not possible to embed a signed XML fragment
+	  into a document that has other namespace declarations.
+	</p>
+	<p>
+	  This is solved by ExclC14N. ExclC14N takes extra information as input
+	  in which you can specify which of the ancestor's namespaces should be
+	  included. 
+	</p>
+	<p>
+	  For more information on this topic, have a look at the C14N and
+	  ExclC14N sections of the <jump href="site:w3c/xmldsig">W3C XMLDSig WG</jump>.
+	</p>
+      </answer>
+    </faq>
+    
+    <!-- template
+    <faq id="">
+    <question>
+  </question>
+    <answer>
+  </answer>
+    </faq>
+    -->
+
+  </part>
+  <!-- More faqs or parts here -->
+</faqs>
+
+
+
+
+
diff --git a/doc/site/src/documentation/content/xdocs/history.xml b/doc/site/src/documentation/content/xdocs/history.xml
new file mode 100644
index 0000000..bb4863b
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/history.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"
+[
+  <!ENTITY % xmlsec_entities SYSTEM "./xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document> 
+  <header> 
+    <title>XML Security History</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>The &lt;WebSig&gt; project</title>
+      <p>
+	In mid-1999, the <jump
+	  href="http://www.nue.et-inf.uni-siegen.de/">Institute for Data
+	  Communications Systems</jump> at the <jump
+	  href="http://www.uni-siegen.de/">University of Siegen</jump> in
+	Germany looked for partners to participate in a European project for
+	implementing the upcoming <jump href="ext:w3c/xmldsig">XML Signature
+	  standard</jump>. We found our partners in the companies <jump
+	  href="http://www.expnet.gr/">Expertnet S.A.</jump> and <jump
+	  href="http://www.proodos.gr/">PROODOS S.A.</jump>, both from Athens,
+	who were willing to use our XML Signature library in a first commercial
+	project. 
+      </p>
+      <p>
+	The project started in January 2000 and ended up in September 2001. 50%
+	of the costs have been funded by the European Commission in the <jump
+	  href="http://www.ispo.cec.be/isis/99websig.htm">ISIS
+	  programme</jump>. Goal was to develop a JAVA library for creating and
+	validating XML Signatures and to make the binaries of this software
+	freely available. 
+      </p>
+      <p>In September 2001, the Institute for Data Communications Systems decided to
+	make the sources freely available, too, to promote the use of digital
+	signatures and to give XML Signature a spin. The decision was made to
+	give the complete library (including an implementation of "Canonical
+	XML" and "XML Signature") under the hood of the Apache Software
+	Foundation to ensure availablility of the source and to enable other
+	people to use it under the Apache License. 
+      </p>
+    </section>
+    <section>
+      <title>XML Encryption in Java</title>
+      <p>2Bdone</p>
+    </section>    
+    <section>
+      <title>The C++ Library</title>
+      <p>The C++ library is a much more recent addition to the XML-Security
+        project.  It started out on <jump href="http://www.sourceforge.net">
+          Sourceforge</jump> and was migrated into XML Security in early 2003.
+      </p>
+    </section>
+  </body>
+</document>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/index.xml b/doc/site/src/documentation/content/xdocs/index.xml
new file mode 100644
index 0000000..e7ce23d
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/index.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document> 
+  <header> 
+    <title>Welcome to XML Security</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>News</title>
+      <section>
+		<title>December 2004</title>
+		<p>
+		  Version 1.2 of the Java library has been released.  
+		  This version provides :
+		</p>
+		<ul>
+		  <li>Better speed &amp; memory utilization.</li>
+		  <li>Easier JCE integration.</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>April 2004</title>
+		<p>
+		  Version 1.1 of the Java library has been released.  
+		  This version provides :
+		</p>
+		<ul>
+		  <li>Beta implementation of XML Encryption</li>
+		  <li>Bug fixes to Signature implementation</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>March 2004</title>
+		<p>
+		  Version 1.1 of the C++ library has been released.  Supporting
+		  Xerces 2.5, 2.4 and 2.3 together with Xalan 1.6 and 1.7, this
+		  version provides :
+		</p>
+		<ul>
+		  <li>Beta implementation of XML Encryption</li>
+		  <li>Improved support for Windows Crypto API</li>
+		  <li>Bug fixes to Signature implementation</li>
+		</ul>
+	  </section>
+      <section>
+        <title>August 2003</title>
+        <p>
+          Version 1.00 of the C++ library is now released.  This is the first
+          stable release of the library.  Functionality is still fairly basic,
+          but all mandatory parts of the the DSIG standard are implemented.
+        </p>
+		<p>
+		  This version supports Xerces 2.2 and 2.3 and Xalan 1.6.
+		</p>
+      </section>
+	  <section>
+		<title>May 2003</title>
+		<p>
+		  The Beta 0.20 of the C++ library has now been released.  Features:
+		</p>
+		<ul>
+		  <li>Ability to use the Windows Crypto API as a crypto provider</li>
+		  <li>Several minor bug fixes in transforms and UNIX build process</li>
+		</ul>
+	  </section>
+	  <section>
+		<title>February 2003</title>
+		<p>
+		  The site has now been re-built using the new xml.apache.org standard,
+		  using Forrest.
+		</p>
+	  </section>
+    </section>
+    <section>
+      <title>The Project</title>
+      <p>
+        The XML Security project is aimed at providing implementation of
+        security standards for XML.  Currently the focus is on the W3C
+        standards :
+      </p>
+      <ul>
+        <li><jump href="http://www.w3.org/Signature/">
+            XML-Signature Syntax and Processing; and</jump>
+        </li>
+        <li><jump href="http://www.w3.org/Encryption/2001/">
+            XML Encryption Syntax and Processing.</jump></li>
+      </ul>
+      <p>
+        Once these are implemented, 
+        <jump href="http://www.w3.org/2001/XKMS">XML Key Management</jump>
+          is likely to be the next focus for the project.
+      </p>
+      <p>
+        Two libraries are currently available.
+      </p>
+      <ol>
+        <li>A Java library, which includes a mature Digital Signature 
+          implementation.  Encryption is currently under development.</li>
+        <li>A C++ library is also now available.  Functionality is currently
+		  more basic than that provided by the Java library.</li>
+      </ol>
+    </section>
+  </body>
+</document>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/license.xml b/doc/site/src/documentation/content/xdocs/license.xml
new file mode 100644
index 0000000..d655344
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/license.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+ <header>
+  <title>The Apache Software License, Version 2.0</title>
+ </header>
+
+<body>
+<source><![CDATA[
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+]]></source>
+</body>
+</document>
diff --git a/doc/site/src/documentation/content/xdocs/mail-lists.xml b/doc/site/src/documentation/content/xdocs/mail-lists.xml
new file mode 100644
index 0000000..61a033f
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/mail-lists.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document> 
+  <header> 
+    <title>XML security mailing list</title> 
+  </header> 
+  <body> 
+    <section>
+      <title>XML security mailing list</title>
+      <p>
+	There exists a mailing list which you can subscribe to ask questions:
+      </p>
+      <p>
+	The <jump href="ext:xml.apache.org/mail">ezmlm mailing list controller</jump> 
+	accepts commands by sending emails to it, generally
+	like the following:
+      </p>
+      <ul>
+	<li>
+	  <jump href="ext:mailsub">security-dev-subscribe</jump> to subscribe
+	  your current email address to the list.
+	</li>
+	<li>
+	  <jump href="ext:mailunsub">security-dev-unsubscribe</jump> to
+	  <em>un</em>subscribe your *current* email address from the list.
+	</li>
+	<li>
+	  <jump href="ext:mailhelp">security-dev-help</jump> to get Help on
+	  mailing list commands.
+	</li>
+      </ul>
+    </section>
+    <section>
+      <title>Mail Archives</title>
+      <p>
+	An archive of this list is kept under 
+	<jump href="ext:gmane">
+	  http://news.gmane.org/thread.php?group=gmane.text.xml.security.devel
+	</jump>
+      </p>
+      <p>
+	Another archive is held by <jump href="ext:nagoya">The EyeBrowse Mail Archive
+	</jump>.
+      </p>
+    </section>
+  </body>
+</document>
diff --git a/doc/site/src/documentation/content/xdocs/site.xml b/doc/site/src/documentation/content/xdocs/site.xml
new file mode 100644
index 0000000..649bc1c
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/site.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0"?>
+<!DOCTYPE site
+[
+  <!ENTITY % xmlsec_entities SYSTEM "xmlsec_entities.ent"> 
+  %xmlsec_entities; 
+]>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<site label="XML Security" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab="home">
+
+  <about label="About">
+    <index label="Index" href="index.html"/>
+    <!--    <download label="Download" href="http://xml.apache.org/security/dist/"/> -->
+    <!-- <download label="Download" href="http://www.apache.org/dyn/closer.cgi/xml/security/"/> -->
+	<download label="Download" href="download.html"/>
+    <faq label="FAQs" href="faq.html"/>
+    <who label="Who we are" href="who.html"/>
+    <todo label="Todo" href="todo.html"/>
+    <changes label="Changes" href="changes.html"/>
+    <history label="History" href="history.html"/>
+    <license label="License" href="license.html"/>
+  </about>
+
+  <getting-involved label="Getting Involved">
+    <contrib label="Contributing" href="contrib.html"/>
+    <CVS label="CVS" href="http://cvs.apache.org/viewcvs/xml-security/"/>
+    <mail-lists label="Mail lists" href="mail-lists.html"/>
+  </getting-involved>
+
+  <java label="Java" href="Java/" tab="java">
+    <!-- changes label="Changes" href="changes.html"/ -->
+    <index label="Index" href="index.html"/>
+    <installation label="Installation" href="installation.html" />
+    <examples label="Examples" href="examples.html"/>
+    <faq_j label="FAQs" href="faq.html"/>
+    <api label="API Docs" href="api.html" />
+    <interop label="Interoperability" href="interop.html"/>
+    <gump label="Gump results"
+		  href="http://lsd.student.utwente.nl/gump/xml-security/xml-security.html" />
+    <resolvers label="Resolvermania" href="resolver.html"/>
+  </java>
+
+  <c label="C++" href="c/" tab="cpp">
+    <index label="Index" href="index.html"/>
+	<install label="Installation" href="installation.html"/>
+    <cfaq label="FAQs" href="faq.html"/>
+	<external label="API Docs" href="apiDocs/index.html"/>
+	<external label="Nightly API build" href="http://nagoya.apache.org/~blautenb/xml-security-c/apiDocs/"/>
+    <tools label="Tools" href="tools.html"/>
+    <releases label="Release Information" href="releases.html"/>
+    <credits label="Credits" href="credits.html"/>
+    <interop label="Interoperability" href="interop.html"/>
+  </c>
+
+  <cprog label="Programming" href="c/" tab="cpp">
+	<signature label="Signatures" href="programming.html"/>
+	<enc label="Encryption" href="prog_enc.html"/>
+  </cprog>
+
+  <references label="References">
+    <xmldsig label="W3C XML DSig" href="http://www.w3c.org/Signature"/>
+    <xmlenc label="W3C XML Enc" href="http://www.w3c.org/Encryption"/>
+  </references>
+
+  <external-refs>
+    <!-- NOTE: the label atts are not defined/used in Forrest; I added them for -->
+    <!-- later use. Karel. -->
+
+    <!-- Christian's security page -->
+    <christ-page label="The XML Security page" href="http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/xml_security.html"/>
+
+    <!-- W3C -->
+    <w3c href="http://www.w3c.org/">
+      <xmldsig label="&xmldsig;" href="Signature"/>
+      <xmldsig_java_supported label="&supp_java_dsig;" href="&supp_java_dsig_ref;"/> 
+      <xmldsig_C_supported label="&supp_C_dsig;" href="&supp_C_dsig_ref;"/> 
+      <xmlenc_java_supported label="&supp_java_enc;" href="&supp_java_enc_ref;"/> 
+      <xmlenc_C_supported label="&supp_C_enc;" href="&supp_C_enc_ref;"/> 
+      <xmlenc label="&xmlenc;" href="Encryption"/>
+      <c14n label="C14N-supported" href="TR/2002/REC-xml-exc-c14n-20020718/" />
+      <c14n-interop label="C14N tests" href="Signature/2002/02/01-exc-c14n-interop.html" />
+      <xpath-filterv2 label="XMLDSig XPath Filter 2.0" href="TR/2002/CR-xmldsig-filter2-20020718/" />
+      <xpath label="XML Path Language (XPath) Version 1.0" href="TR/xpath"/>
+      <dom label="DOM" href="DOM"/>
+      <dom2 label="DOM level 2" href="DOM-Level-2/"/>      
+    </w3c>
+
+    <!-- SAX -->
+    <sax label="SAX" href="http://www.megginson.com/SAX/sax.html"/>
+    <sax2 label="SAX 2" href="http://www.megginson.com/SAX/Java/index.html"/>
+
+    <!-- Apache -->
+    <xml.apache.org href="http://xml.apache.org/">
+      <xml4j-used label="Apache Xerces2" href="xerces2-j/index.html"/>
+      <ApacheLicense label="The Apache Software License, Version 1.1" href="dist/LICENSE.txt"/>
+      <forrest href="forrest/"/>
+      <mail href="mail.html"/>
+    </xml.apache.org>
+    <ant label="Ant" href="http://jakarta.apache.org/ant/index.html"/>
+    <bugzilla label="Bugzilla (the Apache bug database)" href="http://nagoya.apache.org/bugzilla"/>
+    <buglist label="XalanJ2 open bugs" href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=XalanJ2&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=%27Importance%27"/>
+    
+    <!-- Java -->
+    <java>
+      <docs>
+	<full-api href="Java/api/index.html"/>
+	<hierachry href="Java/api/overview-tree.html"/>
+	<gumpdocs href="http://nagoya.apache.org/gump/javadoc/xml-security/build/doc/html/api/index.html" />
+      </docs>
+      <jce>
+	<download href="http://www.bouncycastle.org/download/">
+	  <file href="&jce_download_file;"/>
+	</download>
+      </jce>
+    </java>
+
+    <!-- Crypto and CSPs -->
+    <hac label="&hac;" href="http://www.cacr.math.uwaterloo.ca/hac/"/>
+    <bouncy label="Boucy Castle" href="http://www.bouncycastle.org/"/>
+
+    <!-- SUN -->
+    <java label="Java (TM) 2 Platform Standard Edition v1.4.0"
+	href="http://java.sun.com/j2se/1.4/index.html"/>
+    <javaforum label="SUN java forum" href="http://forum.java.sun.com/"/>
+    <jaxp label="Java API for XML Parsing 1.0" href="http://java.sun.com/xml/docs/api/index.html"/>
+
+    <!-- General information -->
+    <zvon label="ZVON" href="http://www.zvon.org/"/>
+    <xmlfaq label="XMLFAQ" href="http://www.ucc.ie/xml/"/>
+    <bsf label="Bean Scripting Framework (BSF)" href="http://oss.software.ibm.com/developerworks/projects/bsf"/>
+
+    <!-- Mailing list -->
+    <nagoya label="EyeBrowseList" href="http://nagoya.apache.org/eyebrowse/SummarizeList?listId=72"/>
+    <gmane label="Gmane" href="http://news.gmane.org/thread.php?group=gmane.text.xml.security.devel"/>
+    <mailhelp label="mailinglisthelp" href="mailto:security-dev-help@xml.apache.org"/>
+    <mailsub label="mailinglistsubscribe" href="mailto:security-dev-subscribe@xml.apache.org"/>
+    <mailunsub label="mailinglistunsubscribe" href="mailto:security-dev-unsubscribe@xml.apache.org"/>
+
+    <!-- Contacts (this should change in a future version of Forrest) -->
+    <geuerp label="Christian Geuer-Pollmann" href="mailto:geuerp@apache.org"/>
+
+    <!-- Links to specific emails -->      
+    <mail>
+      <linkmaps href="http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=103444028129281&amp;w=2"/>
+      <semantic-linking href="http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=103097808318773&amp;w=2"/>
+      <inputmoduletransformer
+        href="http://marc.theaimsgroup.com/?t=103992708800001&amp;r=1&amp;w=2"/>
+      <linkrewritertransformer href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15611"/>
+      <xpathtransformer href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12235"/>
+    </mail>
+  </external-refs>
+
+</site>
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/tabs.xml b/doc/site/src/documentation/content/xdocs/tabs.xml
new file mode 100644
index 0000000..f176ac7
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/tabs.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tabs PUBLIC "-//APACHE//DTD Cocoon Documentation Tab V1.0//EN" "tab-cocoon-v10.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<tabs software="XML Security"
+    title="Apache XML Security"
+    copyright="@year@ The Apache Foundation"
+    xmlns:xlink="http://www.w3.org/1999/xlink">
+
+    <!-- The rules are:
+    @dir will always have /index.html added.
+    @href is not modified unless it is root-relative and obviously specifies a
+    directory (ends in '/'), in which case /index.html will be added
+    -->
+
+    <tab id="home" label="Home" dir=""/>
+    <tab id="java" label="Java" dir="Java"/>
+    <tab id="cpp" label="C++" dir="c"/>
+
+</tabs>
diff --git a/doc/site/src/documentation/content/xdocs/who.xml b/doc/site/src/documentation/content/xdocs/who.xml
new file mode 100644
index 0000000..c99fc6d
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/who.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+  <header>
+    <title>Who we are</title>
+  </header>
+  <body>
+    <section>
+      <title>The Apache XML-Security Community</title>
+      <p> The XML-Security Project operates on a meritocracy: the more you do, the
+        more responsibility you will obtain. This page lists all of the people who have
+        gone the extra mile and are Committers. If you would like to get involved, the
+        first step is to join the mailing lists. </p>
+      <p> We ask that you please do not send us emails privately asking for
+        support. We are non-paid volunteers who help out with the project and we do not
+        necessarily have the time or energy to help people on an individual basis.
+        Instead, we have set up mailing lists which often contain hundreds of
+        individuals who will help answer detailed requests for help. The benefit of
+        using mailing lists over private communication is that it is a shared resource
+        where others can also learn from common mistakes and as a community we all grow
+        together.</p>
+    </section>
+    <section>
+      <title>Committers</title>
+      <ul>
+	<li> [CGP] Christian Geuer-Pollmann (geuer-pollmannATnue.et-inf.uni-siegen.de) </li>
+        <li> [BL] Berin Lautenbach (berinATozemail.com.au) </li>
+        <li> [AXL] Axl Mattheus (axl.mattheusATsun.com) </li>
+        <li> [EK] Erwin van der Koogh (erwinATkoogh.com) </li>
+        <li> [RB] Raul Benito Garcia (raul-infoATr-bg.com) </li>
+        <li> [VM] Vishal Mahajan (Vishal.MahajanATSun.COM) </li>
+        <li> [MT] Milan Tomic (milan.setcce.org) </li>
+      </ul>
+    </section>
+  </body>
+</document>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/doc/site/src/documentation/content/xdocs/xmlsec_entities.ent b/doc/site/src/documentation/content/xdocs/xmlsec_entities.ent
new file mode 100644
index 0000000..29e3b22
--- /dev/null
+++ b/doc/site/src/documentation/content/xdocs/xmlsec_entities.ent
@@ -0,0 +1,31 @@
+<!ENTITY packagenamelong  "Apache-XML-Security-J">
+<!ENTITY packagename      "xml-security">
+<!ENTITY packageversion   "1.2">
+<!ENTITY packagedirectory "NOT USED ??">
+<!ENTITY packagedistname  "Apache-XML-Security-J">
+
+<!ENTITY jce_download_file "jce-jdk13-124.jar">
+<!ENTITY lib_jce "./libs/bc-&jce_download_file;">
+
+<!-- ENTITY packagenamelong  "@@packagenamelong@@"-->
+<!-- ENTITY packagename      "@@packagename@@"-->
+<!-- ENTITY packageversion   "@@packageversion@@"-->
+<!-- ENTITY packagedirectory "@@packagedirectory@@ "-->
+<!-- ENTITY packagedistname  "@@packagedistname@@  Apache-XML-Security-J"-->
+
+<!ENTITY xmlsec  "Apache-XML-Security-J">
+<!ENTITY xmldsig "W3C XML-Signature Syntax and Processing">
+<!ENTITY xmlenc  "W3C XML Encryption Syntax and Processing">
+<!ENTITY hac     "Handbook of Applied Cryptography">
+<!ENTITY christpage     "The XML Security Page">
+<!ENTITY supp_java_dsig "XML-Signature Syntax and Processing,  W3C Recommendation 12 February 2002">
+<!ENTITY supp_java_dsig_ref "TR/2002/REC-xmldsig-core-20020212/">
+<!ENTITY supp_C_dsig "XML-Signature Syntax and Processing,  W3C Recommendation 12 February 2002">
+<!ENTITY supp_C_dsig_ref "TR/2002/REC-xmldsig-core-20020212/">
+<!ENTITY supp_java_enc "XML Encryption Syntax and Processing, W3C Recommendation 10 December 2002">
+<!ENTITY supp_java_enc_ref "TR/2002/REC-xmlenc-core-20021210/">
+<!ENTITY supp_C_enc "XML Encryption Syntax and Processing, W3C Recommendation 10 December 2002">
+<!ENTITY supp_C_enc_ref "TR/2002/REC-xmlenc-core-20021210/">
+<!ENTITY api_ref "api/org/apache/xml/security/">
+
+
diff --git a/doc/site/src/documentation/resources/images/group-logo.gif b/doc/site/src/documentation/resources/images/group-logo.gif
new file mode 100644
index 0000000..57e4b36
--- /dev/null
+++ b/doc/site/src/documentation/resources/images/group-logo.gif
Binary files differ
diff --git a/doc/site/src/documentation/resources/images/icon.png b/doc/site/src/documentation/resources/images/icon.png
new file mode 100644
index 0000000..3be8bbb
--- /dev/null
+++ b/doc/site/src/documentation/resources/images/icon.png
Binary files differ
diff --git a/doc/site/src/documentation/resources/images/project-logo.gif b/doc/site/src/documentation/resources/images/project-logo.gif
new file mode 100644
index 0000000..4982c8e
--- /dev/null
+++ b/doc/site/src/documentation/resources/images/project-logo.gif
Binary files differ
diff --git a/doc/site/src/documentation/resources/images/vc6a.gif b/doc/site/src/documentation/resources/images/vc6a.gif
new file mode 100644
index 0000000..87b526e
--- /dev/null
+++ b/doc/site/src/documentation/resources/images/vc6a.gif
Binary files differ
diff --git a/doc/site/src/documentation/resources/images/vc6b.gif b/doc/site/src/documentation/resources/images/vc6b.gif
new file mode 100644
index 0000000..d68ab11
--- /dev/null
+++ b/doc/site/src/documentation/resources/images/vc6b.gif
Binary files differ
diff --git a/doc/site/src/documentation/skinconf.xml b/doc/site/src/documentation/skinconf.xml
new file mode 100644
index 0000000..1dc3826
--- /dev/null
+++ b/doc/site/src/documentation/skinconf.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0"?>
+<!--
+Copyright 2003-2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!--
+Skin configuration file. This file contains details of your project, which will
+be used to configure the chosen Forrest skin.
+-->
+
+ <!DOCTYPE skinconfig PUBLIC
+        "-//APACHE//DTD Skin Configuration V0.6-1//EN"
+        "skinconfig-v06-2.dtd">
+
+<skinconfig>
+  <!-- Do we want to disable the Google search box? -->
+  <search name="Apache XML Security" domain="xml.apache.org/security" provider="google" />
+  <disable-compliance-links>false</disable-compliance-links>
+
+  <!-- mandatory project logo
+       skin: forrest-site renders it at the top -->
+  <project-name>Apache XML Security</project-name>
+  <project-url>http://xml.apache.org/security</project-url>
+  <project-logo>images/project-logo.gif</project-logo>
+
+  <!-- optional group logo
+       skin: forrest-site renders it at the top-left corner -->
+  <group-name>Apache XML</group-name>
+  <group-url>http:///xml.apache.org</group-url>
+  <group-logo>images/group-logo.gif</group-logo>
+
+  <!-- optional host logo (e.g. sourceforge logo)
+       skin: forrest-site renders it at the bottom-left corner -->
+  <host-url></host-url>
+  <host-logo></host-logo>
+
+  <!-- The following are used to construct a copyright statement -->
+  <year>2002-2003</year>
+  <vendor>The Apache Software Foundation.</vendor>
+
+  <!-- Some skins use this to form a 'breadcrumb trail' of links. If you don't
+  want these, set the attributes to blank. The DTD purposefully requires them.
+  -->
+  <trail>
+    <link1 name="apache" href="http://www.apache.org/"/>
+    <link2 name="xml.apache" href="http://xml.apache.org/"/>
+    <link3 name="" href=""/>
+  </trail>
+
+  <!-- Setup Colours - required as of V 0.6 -->
+  <colors>
+    <color name="header"    value="#294563"/>
+
+    <color name="tab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="tab-unselected" value="#b5c7e7" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="subtab-selected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="subtab-unselected" value="#4a6d8c" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+
+    <color name="heading" value="#294563"/>
+    <color name="subheading" value="#4a6d8c"/>
+        
+    <color name="published" value="#4C6C8F" font="#FFFFFF"/>
+    <color name="feedback" value="#4C6C8F" font="#FFFFFF" />
+	        
+    <color name="navstrip" value="#4a6d8c" font="#ffffff" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
+    <color name="toolbox" value="#4a6d8c"/>
+    <color name="border" value="#294563"/>
+    
+    <color name="menu" value="#4a6d8c" font="#cedfef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/>   
+    
+    <color name="menuheading" value="#cfdced" font="#000000" />
+    <color name="searchbox" value="#E5E4D9" font="#000000"/>
+         
+    <color name="dialog" value="#4a6d8c"/>
+    <color name="body" value="#ffffff"  link="#0F3660" vlink="#009999" hlink="#000066"/>
+    
+    <color name="table" value="#7099C5"/>    
+    <color name="table-cell" value="#f0f0ff"/>    
+    <color name="highlight" value="#ffff00"/>
+    <color name="fixme" value="#cc6600"/>
+    <color name="note" value="#006699"/>
+    <color name="warning" value="#990000"/>
+    <color name="code" value="#CFDCED"/>
+        
+    <color name="footer" value="#cedfef"/>
+  </colors>
+
+  <!-- Credits are typically rendered as a set of small clickable images in the
+  page footer -->
+  <credits>
+    <credit>
+      <name>Built with Apache Forrest</name>
+      <url>http://xml.apache.org/forrest/</url>
+      <image>images/built-with-forrest-button.png</image>
+      <width>88</width>
+      <height>31</height>
+    </credit>
+    <!-- A credit with @role='pdf' will have its name and url displayed in the
+    PDF page's footer. -->
+  </credits>
+
+</skinconfig>
+
+
+
+
+
+
diff --git a/doc/site/status.xml b/doc/site/status.xml
new file mode 100644
index 0000000..420462d
--- /dev/null
+++ b/doc/site/status.xml
@@ -0,0 +1,209 @@
+<?xml version="1.0"?>
+<!--
+Copyright 2003-2005 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<status>  
+  <developers>
+    <person name="Christian Geuer-Pollmann"  email="geuer-pollmann@nue.et-inf.uni-siegen.de"  id="CGP" />
+    <person name="Berin Lautenbach"      email="berin@ozemail.com.au"      id="BL" />
+    <person name="Axl Mattheus"      email="axl.mattheus@sun.com"      id="AXL" />
+    <person name="Erwin van der Koogh" email="erwin@koogh.com" id="EK" />
+    <person name="Karel Wouters"      email="karel.wouters@esat.kuleuven.ac.be"      id="KW" />
+    <person name="Raul Benito Garcia" email="raul@apache.org" id="RB"/>
+    <person name="Vishal Mahajan" email="Vishal.Mahajan@Sun.COM" id="VM"/>
+    <person name="Milan Tomic" email="milan@setcce.org" id="MT"/>
+    <!-- Add more people here -->
+  </developers>
+  
+  <changes>
+    <!-- Add new releases here; action attributes: type:(add | fix | update); -->
+    <!-- context:(docs | java_something | c_something ) -->
+    
+    <release version="Java 1.2.1" date="February 2005(not yet released)">
+    	<action dev="RB" type="fix" fixes-bug="32836" context="java_general" due-to="Sylvain Dusart">
+    	Fix a memory leak when using xpath or using ResourceResolver and not hitting getElementByIdUsingDOM()
+    	</action>
+        <action dev="RB" type="fix" context="java_general">
+        Fix erroneous creation/verification when using XPath2Filter and inclusive c14n.</action>
+        <action dev="RB" type="fix" fixes-bug="23554" context="java_general" due-to="Raymond Wong">
+        Library now throws an exception when asked to sign/verify an inexistent fragment.</action>
+ 		<action dev="RB" type="fix" context="java_general">
+ 		Restore reset behaviour as default when reusing Canonicalizers(but an append one can still be used).</action>
+        <action dev="RB" type="fix" fixes-bug="33393" context="java_general" due-to="Sean Mullan">
+        Fix a bug when using base64transformation and external resources.</action>
+        <action dev="RB" type="fix" context="java_general">
+        Fix a bug when passing XMLsignatureInput(InputStream) streams that don't acknowledge reset() as expected.
+        </action>
+        <action dev="RB" type="fix" fixes-bug="32996" context="java_general" due-to="Sean Mullan">
+        Added i14n Base64 error message.
+        </action>
+        <action dev="RB" type="remove" context="external-libs">
+        Clean unused jar (xmlParserAPI.jar,etc) and check and stored new versions.
+        </action>
+        <action dev="RB" type="update" context="external-libs">
+        Generated the dist jar with version (i.e. xmlsec-1.2.1.jar instead of plain xmlsec.jar)
+        </action>
+	    <action dev="RB" type="remove" context="build">
+    	Clean unused build*.xml files.
+	    </action>
+    </release>
+    
+    <release version="Java 1.2" date="December 2004">
+      <action dev="RB" type="update" context="java_c14n">
+	 Rework the canonicalization for speed-up common cases
+      </action>
+      <action dev="RB" type="update" context="java_general">
+	General memory footprint improvements
+      </action>
+      <action dev="RB" type="update" context="java_general">
+	  General speed optimizations
+      </action>
+      <action dev="VM" type="update" context="java_csp">
+	 Update the JCE algorith mechanism
+      </action>
+    </release>
+    <release version="C++ 1.10" date="March 2004">
+      <action dev="BL" type="add" context="c_rel">
+	    <ul>
+		  <li>Bug fixes for signature code</li>
+		  <li>Beta implementation of XML Encryption</li>
+		  <li>Initial implementation of pluggable algorithm handlers</li>
+		</ul>
+      </action>
+	</release>
+    <release version="C++ 1.00" date="July 2003">
+      <action dev="BL" type="add" context="c_rel">
+	    <ul>
+		  <li>First stable release</li>
+		  <li>Support for FreeBSD, NetBSD and Cygwin builds</li>
+		  <li>All KeyInfo elements now available</li>
+		  <li>Various bug fixes</li>
+		</ul>
+      </action>
+	</release>
+    <release version="C++ 0.20" date="May 2003">
+      <action dev="BL" type="add" context="c_rel">
+	    <ul>
+		<li>Windows Crypto API interface</li>
+		<li>Basic functions to extract information from signature objects</li>
+		<li>Various bug fixes</li>
+		</ul>
+      </action>
+	</release>
+    <release version="Java 1.0.5" date="unreleased">
+      <action dev="KW" type="update" context="docs">
+	<p>Ported the docs to Forrest</p>
+      </action>
+    </release>
+    <release version="C++ 0.10" date="unreleased">
+      <action dev="BL" type="add" context="c_rel">
+        <p>
+          First release of a Beta for the C++ library.
+        </p>
+      </action>
+    </release>
+    <release version="Java 1.0.4" date="15 July 2002">
+      <action dev="CGP" type="update" context="java_jdk">
+	<p>Java - People who did not install Xalan properly under JDK 1.4.0 now
+	get a more specific error message.</p>
+      </action>
+      <action dev="CGP" type="update" context="java_csp">
+	<p>Java - We use the most recent version of the BouncyCastle JCE now.</p>
+      </action>
+    </release>
+    <release version="Java 1.0.3" date="unknown">
+      <action dev="CGP" type="add" context="java_exc_c14n">
+	<p>Java - Added support <link href="ext:w3c/c14n"> Exclusive XML
+	  Canonicalization Version 1.0, W3C Recommendation 18 July 2002
+	</link>. (There is no interop to test vector <link
+	  href="ext:w3c/c14n-interop">Y4</link> because of a problem in Xalan) </p>
+	<p>Canonicalization is written completely new: it's about 5-80 times
+	faster than the implementation in version 1.0.2. It's highly
+	recommended to upgrade to the new version. </p>
+      </action>
+      <action dev="CGP" type="update" context="java_xpath2">
+	 <p>Java - Added support for <link href="ext:w3c/xpath-filterv2">
+	    XML-Signature XPath Filter 2.0, W3C Candidate Recommendation 18
+	    July 2002 
+	  </link>
+	  </p>
+      </action>
+    </release>
+  </changes>
+  
+  <todo>
+    <actions priority="high">
+      <action context="Java-code" dev="AXL">
+	Finish XML Encryption.
+      </action>
+      <action context="C++ code" dev="BL">
+        Create MD5 transform.
+      </action>
+      <action context="C++ code" dev="BL">
+        Create XPath-Filter Transform.
+      </action>
+      <action context="C++ code" dev="BL">
+        Release a "1.00" version.
+      </action>
+      <action context="C++ code" dev="BL">
+        Implement XML Encryption. 
+      </action>
+    </actions>
+    <actions priority="medium">
+      <action context="Java-code" dev="open">
+	Construct more examples.
+      </action>
+      <action context="C++ code" dev="BL">
+        Build a PGP/GPG signature capability.
+      </action>
+      <action context="C++ code" dev="BL">
+        Implement interface for Windows CAPI.
+      </action>
+    </actions>
+    <actions priority="low">
+      <action context="docs" dev="KW">
+	Polish the ported docs. Add more content. Todo and changes are in <code>status.xml</code>
+      </action>
+      <action context="Java-code and C++ code" dev="open">
+        Implement an XKMS client.
+      </action>
+    </actions>
+  </todo>
+</status>
+
+
+
+
+
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
diff --git a/libs/.cvsignore b/libs/.cvsignore
new file mode 100644
index 0000000..a65902b
--- /dev/null
+++ b/libs/.cvsignore
@@ -0,0 +1,2 @@
+jce*.jar
+bc*.jar
diff --git a/libs/commons-logging-api.jar b/libs/commons-logging-api.jar
new file mode 100644
index 0000000..209bcdf
--- /dev/null
+++ b/libs/commons-logging-api.jar
Binary files differ
diff --git a/libs/commons-logging.jar b/libs/commons-logging.jar
new file mode 100644
index 0000000..b99c937
--- /dev/null
+++ b/libs/commons-logging.jar
Binary files differ
diff --git a/libs/style-apachexml.jar b/libs/style-apachexml.jar
new file mode 100644
index 0000000..ea06a17
--- /dev/null
+++ b/libs/style-apachexml.jar
Binary files differ
diff --git a/libs/stylebook-1.0-b3_xalan-2.jar b/libs/stylebook-1.0-b3_xalan-2.jar
new file mode 100644
index 0000000..85b0f7c
--- /dev/null
+++ b/libs/stylebook-1.0-b3_xalan-2.jar
Binary files differ
diff --git a/libs/xalan.jar b/libs/xalan.jar
new file mode 100644
index 0000000..73cf175
--- /dev/null
+++ b/libs/xalan.jar
Binary files differ
diff --git a/libs/xercesImpl.jar b/libs/xercesImpl.jar
new file mode 100644
index 0000000..14c3162
--- /dev/null
+++ b/libs/xercesImpl.jar
Binary files differ
diff --git a/libs/xml-apis.jar b/libs/xml-apis.jar
new file mode 100644
index 0000000..2dd8377
--- /dev/null
+++ b/libs/xml-apis.jar
Binary files differ
diff --git a/provider.properties b/provider.properties
new file mode 100644
index 0000000..842ecf0
--- /dev/null
+++ b/provider.properties
@@ -0,0 +1,52 @@
+# The XML Security Project uses a third party cryptographic provider
+# because the JCE does not supply all the relevant algorithms.
+#
+# Use this file to specify the provider information. The XML Security
+# implementation uses The Legion of the Bouncy Castle's provider.
+
+# Specify your preferred provider, together with the download location
+# of the provider file in this section.
+jce.provider.source     = http://www.bouncycastle.org/download
+jce.provider.prefix     = bc
+jce.provider.jar        = jce-jdk13-124.jar
+
+# Specify a checksum algoritm and a checksum value for JCE provider
+# in this section. The checksum is used to ensure that no data
+# corruption occured during the download of the provider.
+checksum.algorithm      = md5
+checksum.value          = e24cb5cfbfeed7a521676d55dfe4b0d5
+
+
+# Other usefull values
+#
+# MD5
+# 8a90f10826c0b8a4460231dcef0e0e45          jce-jdk13-114.jar
+# 38c40aa5c386e3ba5fac70916bcc5b0d          jce-jdk13-115.jar
+# 85c64cd754719a4bc8da7e9aa0e113fd          jce-jdk13-116.jar
+# 6f201e74b8d455c1960d2aadc6eba7dd          jce-jdk13-117.jar
+# e4a56ae49cf6d523d94c2682c5475144          jce-jdk13-118.jar
+# 521d0d68bd1bad5ad86262b96f05d8f1          jce-jdk13-119.jar
+# e24cb5cfbfeed7a521676d55dfe4b0d5			jce-jdk13-122.jar
+# 2d93ce3dd5e7e3f598f324146d1e25d0			jce-jdk13-124.jar
+# 6b7c9352d1f6014a8e0da51d57e4964b          bcprov-jdk14-115.jar
+# ad8526ea2d2c83b86d14b9b3a68df6d0          bcprov-jdk14-116.jar
+# 077b6d7bd82640a61eda1bcbb55994d1          bcprov-jdk14-117.jar
+# 150fb1132003b824c26939ad2cb247af          bcprov-jdk14-118.jar
+# 86add778fbbd2ef13a2e52c7587f5234          bcprov-jdk14-119.jar
+# 111fbfeb83d922cb6e092fe71765ab82			bcprov-jdk14-122.jar
+#
+# SHA1
+# f3cf2677ad8fa7a038ab3a62e05afef9615ea579  jce-jdk13-114.jar
+# 15f5af7fc73e4ff5c059f83f47509b9720e129e7  jce-jdk13-115.jar
+# c1f0e975e8c8e0a0105787b249a50615b485d109  jce-jdk13-116.jar
+# a6c4b425db845f4d00c84d8ffed437fe0cca0548  jce-jdk13-117.jar
+# 23f992d3d746fe6756ec6121089bd535e65c4e5e  jce-jdk13-118.jar
+# e8d38f066fe51d7f86cb48d9bb124fe49584a2c9  jce-jdk13-119.jar
+# 92536c37d1ae241d5fb1a03375ec6fec6ccb0ce8  jce-jdk13-122.jar
+# df189e1f018332468055dc2698f433349e449439  jce-jdk13-124.jar
+# 31c03c553044a1c0fe884c7e9a5a09de58850a4f  bcprov-jdk14-115.jar
+# d635405c78101cedbc710da12ed0cf57c0e0f895  bcprov-jdk14-116.jar
+# d56bb87abb942b481ffdcb03dfde5c4a8c5e1365  bcprov-jdk14-117.jar
+# 3be88c4b4b60371731950973e1868325a1cbf27d  bcprov-jdk14-118.jar
+# ba539139beedba1c4b675a4623a242e38c73b540  bcprov-jdk14-119.jar
+# 415a9fa6399c5cc0b1c5c1608682dfc8fda5f15b  bcprov-jdk14-122.jar
diff --git a/proxy.properties b/proxy.properties
new file mode 100644
index 0000000..729bdc8
--- /dev/null
+++ b/proxy.properties
@@ -0,0 +1,3 @@
+# Set these values if you are behind a firewall
+proxy.host = your.proxy.goes.here
+proxy.port = 8080
diff --git a/src/javax/xml/crypto/AlgorithmMethod.java b/src/javax/xml/crypto/AlgorithmMethod.java
new file mode 100644
index 0000000..05b965c
--- /dev/null
+++ b/src/javax/xml/crypto/AlgorithmMethod.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * An abstract representation of an algorithm defined in the XML Security 
+ * specifications. Subclasses represent specific types of XML security
+ * algorithms, such as a {@link javax.xml.crypto.dsig.Transform}.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */ 
+public interface AlgorithmMethod {
+
+    /**
+     * Returns the algorithm URI of this <code>AlgorithmMethod</code>.
+     *
+     * @return the algorithm URI of this <code>AlgorithmMethod</code>
+     */
+    String getAlgorithm();
+
+    /**
+     * Returns the algorithm parameters of this <code>AlgorithmMethod</code>.
+     *
+     * @return the algorithm parameters of this <code>AlgorithmMethod</code>.
+     *    Returns <code>null</code> if this <code>AlgorithmMethod</code> does
+     *    not require parameters and they are not specified.
+     */
+    AlgorithmParameterSpec getParameterSpec();
+}
diff --git a/src/javax/xml/crypto/Data.java b/src/javax/xml/crypto/Data.java
new file mode 100644
index 0000000..68e7570
--- /dev/null
+++ b/src/javax/xml/crypto/Data.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import javax.xml.crypto.dsig.Transform;
+
+/**
+ * An abstract representation of the result of dereferencing a 
+ * {@link URIReference} or the input/output of subsequent {@link Transform}s.
+ * The primary purpose of this interface is to group and provide type safety
+ * for all <code>Data</code> subtypes.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public interface Data { }
diff --git a/src/javax/xml/crypto/KeySelector.java b/src/javax/xml/crypto/KeySelector.java
new file mode 100644
index 0000000..3f775dd
--- /dev/null
+++ b/src/javax/xml/crypto/KeySelector.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.security.Key;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.RetrievalMethod;
+
+/**
+ * A selector that finds and returns a key using the data contained in a
+ * {@link KeyInfo} object. An example of an implementation of
+ * this class is one that searchs a {@link java.security.KeyStore} for 
+ * trusted keys that match information contained in a <code>KeyInfo</code>.
+ *
+ * <p>Whether or not the returned key is trusted and the mechanisms 
+ * used to determine that is implementation-specific.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public abstract class KeySelector {
+
+    /**
+     * The purpose of the key that is to be selected.
+     */
+    public static class Purpose {
+
+	private final String name;
+
+	private Purpose(String name) 	{ this.name = name; }
+
+	/**
+	 * Returns a string representation of this purpose ("sign",
+	 * "verify", "encrypt", or "decrypt").
+	 *
+	 * @return a string representation of this purpose
+	 */
+	public String toString()	{ return name; } 	
+
+	/**
+	 * A key for signing.
+	 */
+        public static final Purpose SIGN = new Purpose("sign");
+	/**
+	 * A key for verifying.
+	 */
+        public static final Purpose VERIFY = new Purpose("verify");
+	/**
+	 * A key for encrypting.
+	 */
+        public static final Purpose ENCRYPT = new Purpose("encrypt");
+	/**
+	 * A key for decrypting.
+	 */
+        public static final Purpose DECRYPT = new Purpose("decrypt");
+    }
+
+    /**
+     * Default no-args constructor; intended for invocation by subclasses only.
+     */
+    protected KeySelector() {}
+
+    /**
+     * Attempts to find a key that satisfies the specified constraints.
+     *
+     * @param keyInfo a <code>KeyInfo</code> (may be <code>null</code>)
+     * @param purpose the key's purpose ({@link Purpose#SIGN}, 
+     *    {@link Purpose#VERIFY}, {@link Purpose#ENCRYPT}, or 
+     *    {@link Purpose#DECRYPT})
+     * @param method the algorithm method that this key is to be used for.
+     *    Only keys that are compatible with the algorithm and meet the 
+     *    constraints of the specified algorithm should be returned.
+     * @param context an <code>XMLCryptoContext</code> that may contain
+     *    useful information for finding an appropriate key. If this key 
+     *    selector supports resolving {@link RetrievalMethod} types, the 
+     *    context's <code>baseURI</code> and <code>dereferencer</code> 
+     *    parameters (if specified) should be used by the selector to 
+     *    resolve and dereference the URI.
+     * @return the result of the key selector
+     * @throws KeySelectorException if an exceptional condition occurs while 
+     *    attempting to find a key. Note that an inability to find a key is not 
+     *    considered an exception (<code>null</code> should be
+     *    returned in that case). However, an error condition (ex: network 
+     *    communications failure) that prevented the <code>KeySelector</code>
+     *    from finding a potential key should be considered an exception.
+     * @throws ClassCastException if the data type of <code>method</code> 
+     *    is not supported by this key selector
+     */
+    public abstract KeySelectorResult select(KeyInfo keyInfo, Purpose purpose, 
+	AlgorithmMethod method, XMLCryptoContext context) 
+	throws KeySelectorException;
+
+    /**
+     * Returns a <code>KeySelector</code> that always selects the specified
+     * key, regardless of the <code>KeyInfo</code> passed to it.
+     *
+     * @param key the sole key to be stored in the key selector
+     * @return a key selector that always selects the specified key
+     * @throws NullPointerException if <code>key</code> is <code>null</code>
+     */
+    public static KeySelector singletonKeySelector(Key key) {
+        return new SingletonKeySelector(key);
+    }
+
+    private static class SingletonKeySelector extends KeySelector {
+        private final Key key;
+
+        SingletonKeySelector(Key key) {
+            if (key == null) {
+                throw new NullPointerException();
+            }
+            this.key = key;
+        }
+
+        public KeySelectorResult select(KeyInfo keyInfo, Purpose purpose,
+	    AlgorithmMethod method, XMLCryptoContext context) 
+	    throws KeySelectorException {
+
+            return new KeySelectorResult() {
+		public Key getKey() {
+		    return key;
+		}
+	    };
+        }
+    }
+}
diff --git a/src/javax/xml/crypto/KeySelectorException.java b/src/javax/xml/crypto/KeySelectorException.java
new file mode 100644
index 0000000..9ef6e27
--- /dev/null
+++ b/src/javax/xml/crypto/KeySelectorException.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+ * Indicates an exceptional condition thrown by a {@link KeySelector}.
+ *
+ * <p>A <code>KeySelectorException</code> can contain a cause: another 
+ * throwable that caused this <code>KeySelectorException</code> to get thrown. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public class KeySelectorException extends Exception {
+
+    private static final long serialVersionUID = -7480033639322531109L;
+
+    /**
+     * The throwable that caused this exception to get thrown, or 
+     * <code>null</code> if this exception was not caused by another throwable 
+     * or if the causative throwable is unknown. 
+     *
+     * @serial
+     */
+    private Throwable cause;
+
+    /**
+     * Constructs a new <code>KeySelectorException</code> with 
+     * <code>null</code> as its detail message.
+     */
+    public KeySelectorException() {
+        super();
+    }
+
+    /**
+     * Constructs a new <code>KeySelectorException</code> with the specified 
+     * detail message. 
+     *
+     * @param message the detail message
+     */
+    public KeySelectorException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new <code>KeySelectorException</code> with the 
+     * specified detail message and cause.  
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     */
+    public KeySelectorException(String message, Throwable cause) {
+        super(message);
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs a new <code>KeySelectorException</code> with the specified 
+     * cause and a detail message of 
+     * <code>(cause==null ? null : cause.toString())</code>
+     * (which typically contains the class and detail message of 
+     * <code>cause</code>).
+     *
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *        indicates that the cause is nonexistent or unknown.)
+     */
+    public KeySelectorException(Throwable cause) {
+        super(cause==null ? null : cause.toString());
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the cause of this <code>KeySelectorException</code> or 
+     * <code>null</code> if the cause is nonexistent or unknown.  (The 
+     * cause is the throwable that caused this 
+     * <code>KeySelectorException</code> to get thrown.)
+     *
+     * @return the cause of this <code>KeySelectorException</code> or 
+     *         <code>null</code> if the cause is nonexistent or unknown.
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Prints this <code>KeySelectorException</code>, its backtrace and
+     * the cause's backtrace to the standard error stream.
+     */
+    public void printStackTrace() {
+	super.printStackTrace();
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>KeySelectorException</code>, its backtrace and
+     * the cause's backtrace to the specified print stream.
+     *
+     * @param s <code>PrintStream</code> to use for output
+     */
+    public void printStackTrace(PrintStream s) {
+	super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>KeySelectorException</code>, its backtrace and
+     * the cause's backtrace to the specified print writer.
+     *
+     * @param s <code>PrintWriter</code> to use for output
+     */
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+}
diff --git a/src/javax/xml/crypto/KeySelectorResult.java b/src/javax/xml/crypto/KeySelectorResult.java
new file mode 100644
index 0000000..2315d4c
--- /dev/null
+++ b/src/javax/xml/crypto/KeySelectorResult.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.security.Key;
+
+/**
+ * The result returned by the {@link KeySelector#select KeySelector.select} 
+ * method.
+ * <p>
+ * At a minimum, a <code>KeySelectorResult</code> contains the <code>Key</code>
+ * selected by the <code>KeySelector</code>. Implementations of this interface
+ * may add methods to return implementation or algorithm specific information,
+ * such as a chain of certificates or debugging information.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeySelector
+ */
+public interface KeySelectorResult {
+
+    /**
+     * Returns the selected key.
+     *
+     * @return the selected key, or <code>null</code> if none can be found
+     */
+    Key getKey();
+}
diff --git a/src/javax/xml/crypto/MarshalException.java b/src/javax/xml/crypto/MarshalException.java
new file mode 100644
index 0000000..5f6878a
--- /dev/null
+++ b/src/javax/xml/crypto/MarshalException.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import javax.xml.crypto.dsig.Manifest;
+import javax.xml.crypto.dsig.XMLSignature;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+
+/**
+ * Indicates an exceptional condition that occured during the XML
+ * marshalling or unmarshalling process.
+ *
+ * <p>A <code>MarshalException</code> can contain a cause: another 
+ * throwable that caused this <code>MarshalException</code> to get thrown. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignature#sign(XMLSignContext)
+ * @see XMLSignatureFactory#unmarshalXMLSignature(XMLValidateContext)
+ */
+public class MarshalException extends Exception {
+
+    private static final long serialVersionUID = -863185580332643547L;
+
+    /**
+     * The throwable that caused this exception to get thrown, or null if this
+     * exception was not caused by another throwable or if the causative
+     * throwable is unknown. 
+     *
+     * @serial
+     */
+    private Throwable cause;
+
+    /**
+     * Constructs a new <code>MarshalException</code> with 
+     * <code>null</code> as its detail message.
+     */
+    public MarshalException() {
+        super();
+    }
+
+    /**
+     * Constructs a new <code>MarshalException</code> with the specified 
+     * detail message. 
+     *
+     * @param message the detail message
+     */
+    public MarshalException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new <code>MarshalException</code> with the 
+     * specified detail message and cause.  
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     */
+    public MarshalException(String message, Throwable cause) {
+        super(message);
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs a new <code>MarshalException</code> with the specified cause 
+     * and a detail message of <code>(cause==null ? null : cause.toString())
+     * </code> (which typically contains the class and detail message of 
+     * <code>cause</code>).
+     *
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *        indicates that the cause is nonexistent or unknown.)
+     */
+    public MarshalException(Throwable cause) {
+        super(cause==null ? null : cause.toString());
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the cause of this <code>MarshalException</code> or 
+     * <code>null</code> if the cause is nonexistent or unknown.  (The 
+     * cause is the throwable that caused this 
+     * <code>MarshalException</code> to get thrown.)
+     *
+     * @return the cause of this <code>MarshalException</code> or 
+     *         <code>null</code> if the cause is nonexistent or unknown.
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Prints this <code>MarshalException</code>, its backtrace and
+     * the cause's backtrace to the standard error stream.
+     */
+    public void printStackTrace() {
+	super.printStackTrace();
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>MarshalException</code>, its backtrace and
+     * the cause's backtrace to the specified print stream.
+     *
+     * @param s <code>PrintStream</code> to use for output
+     */
+    public void printStackTrace(PrintStream s) {
+	super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>MarshalException</code>, its backtrace and
+     * the cause's backtrace to the specified print writer.
+     *
+     * @param s <code>PrintWriter</code> to use for output
+     */
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+}
diff --git a/src/javax/xml/crypto/NoSuchMechanismException.java b/src/javax/xml/crypto/NoSuchMechanismException.java
new file mode 100644
index 0000000..6060f17
--- /dev/null
+++ b/src/javax/xml/crypto/NoSuchMechanismException.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import javax.xml.crypto.dsig.Manifest;
+import javax.xml.crypto.dsig.XMLSignature;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+
+/**
+ * This exception is thrown when a particular XML mechanism is requested but
+ * is not available in the environment.
+ *
+ * <p>A <code>NoSuchMechanismException</code> can contain a cause: another 
+ * throwable that caused this <code>NoSuchMechanismException</code> to get 
+ * thrown. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#getInstance XMLSignatureFactory.getInstance
+ * @see KeyInfoFactory#getInstance KeyInfoFactory.getInstance
+ */
+public class NoSuchMechanismException extends RuntimeException {
+
+    private static final long serialVersionUID = 4189669069570660166L;
+
+    /**
+     * The throwable that caused this exception to get thrown, or null if this
+     * exception was not caused by another throwable or if the causative
+     * throwable is unknown. 
+     *
+     * @serial
+     */
+    private Throwable cause;
+
+    /**
+     * Constructs a new <code>NoSuchMechanismException</code> with 
+     * <code>null</code> as its detail message.
+     */
+    public NoSuchMechanismException() {
+        super();
+    }
+
+    /**
+     * Constructs a new <code>NoSuchMechanismException</code> with the 
+     * specified detail message. 
+     *
+     * @param message the detail message
+     */
+    public NoSuchMechanismException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new <code>NoSuchMechanismException</code> with the 
+     * specified detail message and cause.  
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     */
+    public NoSuchMechanismException(String message, Throwable cause) {
+        super(message);
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs a new <code>NoSuchMechanismException</code> with the 
+     * specified cause and a detail message of 
+     * <code>(cause==null ? null : cause.toString())</code> (which typically 
+     * contains the class and detail message of <code>cause</code>).
+     *
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *        indicates that the cause is nonexistent or unknown.)
+     */
+    public NoSuchMechanismException(Throwable cause) {
+        super(cause==null ? null : cause.toString());
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the cause of this <code>NoSuchMechanismException</code> or 
+     * <code>null</code> if the cause is nonexistent or unknown.  (The 
+     * cause is the throwable that caused this 
+     * <code>NoSuchMechanismException</code> to get thrown.)
+     *
+     * @return the cause of this <code>NoSuchMechanismException</code> or 
+     *         <code>null</code> if the cause is nonexistent or unknown.
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Prints this <code>NoSuchMechanismException</code>, its backtrace and
+     * the cause's backtrace to the standard error stream.
+     */
+    public void printStackTrace() {
+	super.printStackTrace();
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>NoSuchMechanismException</code>, its backtrace and
+     * the cause's backtrace to the specified print stream.
+     *
+     * @param s <code>PrintStream</code> to use for output
+     */
+    public void printStackTrace(PrintStream s) {
+	super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>NoSuchMechanismException</code>, its backtrace and
+     * the cause's backtrace to the specified print writer.
+     *
+     * @param s <code>PrintWriter</code> to use for output
+     */
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+}
diff --git a/src/javax/xml/crypto/NodeSetData.java b/src/javax/xml/crypto/NodeSetData.java
new file mode 100644
index 0000000..bdb26be
--- /dev/null
+++ b/src/javax/xml/crypto/NodeSetData.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.util.Iterator;
+
+/**
+ * An abstract representation of a <code>Data</code> type containing a 
+ * node-set. The type (class) and ordering of the nodes contained in the set 
+ * are not defined by this class; instead that behavior should be 
+ * defined by <code>NodeSetData</code> subclasses.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public interface NodeSetData extends Data {
+
+    /**
+     * Returns a read-only iterator over the nodes contained in this 
+     * <code>NodeSetData</code> in 
+     * <a href="http://www.w3.org/TR/1999/REC-xpath-19991116#dt-document-order">
+     * document order</a>. Attempts to modify the returned iterator
+     * via the <code>remove</code> method throw 
+     * <code>UnsupportedOperationException</code>.
+     *
+     * @return an <code>Iterator</code> over the nodes in this 
+     *    <code>NodeSetData</code> in document order
+     */
+    Iterator iterator();
+}
diff --git a/src/javax/xml/crypto/OctetStreamData.java b/src/javax/xml/crypto/OctetStreamData.java
new file mode 100644
index 0000000..7cc4e23
--- /dev/null
+++ b/src/javax/xml/crypto/OctetStreamData.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.io.InputStream;
+
+/**
+ * A representation of a <code>Data</code> type containing an octet stream.
+ */
+public class OctetStreamData implements Data {
+  
+    private InputStream octetStream;
+    private String uri;
+    private String mimeType;
+
+    /**
+     * Creates a new <code>OctetStreamData</code>.
+     *
+     * @param octetStream the input stream containing the octets
+     * @throws NullPointerException if <code>octetStream</code> is 
+     *    <code>null</code>
+     */
+    public OctetStreamData(InputStream octetStream) {
+	if (octetStream == null) {
+	    throw new NullPointerException("octetStream is null");
+	}
+	this.octetStream = octetStream;
+    }
+
+    /**
+     * Creates a new <code>OctetStreamData</code>.
+     *
+     * @param octetStream the input stream containing the octets
+     * @param uri the URI String identifying the data object (may be 
+     *    <code>null</code>) 
+     * @param mimeType the MIME type associated with the data object (may be 
+     *    <code>null</code>) 
+     * @throws NullPointerException if <code>octetStream</code> is 
+     *    <code>null</code>
+     */
+    public OctetStreamData(InputStream octetStream, String uri, 
+	String mimeType) {
+	if (octetStream == null) {
+	    throw new NullPointerException("octetStream is null");
+	}
+	this.octetStream = octetStream;
+	this.uri = uri;
+	this.mimeType = mimeType;
+    }
+
+    /**
+     * Returns the input stream of this <code>OctetStreamData</code>.
+     *
+     * @return the input stream of this <code>OctetStreamData</code>.
+     */
+    public InputStream getOctetStream() {
+	return octetStream;
+    }
+
+    /**
+     * Returns the URI String identifying the data object represented by this
+     * <code>OctetStreamData</code>.
+     *
+     * @return the URI String or <code>null</code> if not applicable
+     */
+    public String getURI() {
+	return uri;
+    }
+
+    /**
+     * Returns the MIME type associated with the data object represented by this
+     * <code>OctetStreamData</code>.
+     *
+     * @return the MIME type or <code>null</code> if not applicable
+     */
+    public String getMimeType() {
+	return mimeType;
+    }
+}
diff --git a/src/javax/xml/crypto/URIDereferencer.java b/src/javax/xml/crypto/URIDereferencer.java
new file mode 100644
index 0000000..d0c76c9
--- /dev/null
+++ b/src/javax/xml/crypto/URIDereferencer.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * =========================================================================== 
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+/**
+ * A dereferencer of {@link URIReference}s.
+ * <p>
+ * The result of dereferencing a <code>URIReference</code> is either an 
+ * instance of {@link OctetStreamData} or {@link NodeSetData}. Unless the
+ * <code>URIReference</code> is a <i>same-document reference</i> as defined
+ * in section 4.2 of the W3C Recommendation for XML-Signature Syntax and 
+ * Processing, the result of dereferencing the <code>URIReference</code>
+ * MUST be an <code>OctetStreamData</code>.
+ *
+ * @author Sean Mullan
+ * @author Joyce Leung
+ * @author JSR 105 Expert Group
+ * @see XMLCryptoContext#setURIDereferencer(URIDereferencer)
+ * @see XMLCryptoContext#getURIDereferencer
+ */
+public interface URIDereferencer {
+
+    /**
+     * Dereferences the specified <code>URIReference</code> and returns the 
+     * dereferenced data.
+     *
+     * @param uriReference the <code>URIReference</code>
+     * @param context an <code>XMLCryptoContext</code> that may 
+     *    contain additional useful information for dereferencing the URI. This 
+     *    implementation should dereference the specified 
+     *    <code>URIReference</code> against the context's <code>baseURI</code> 
+     *    parameter, if specified.
+     * @return the dereferenced data 
+     * @throws NullPointerException if <code>uriReference</code> or 
+     *    <code>context</code> are <code>null</code>
+     * @throws URIReferenceException if an exception occurs while 
+     *    dereferencing the specified <code>uriReference</code>
+     */
+    Data dereference(URIReference uriReference, XMLCryptoContext context) 
+	throws URIReferenceException;
+}
diff --git a/src/javax/xml/crypto/URIReference.java b/src/javax/xml/crypto/URIReference.java
new file mode 100644
index 0000000..a3197c6
--- /dev/null
+++ b/src/javax/xml/crypto/URIReference.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+/**
+ * Identifies a data object via a URI-Reference, as specified by 
+ * <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>.
+ *
+ * <p>Note that some subclasses may not have a <code>type</code> attribute
+ * and for objects of those types, the {@link #getType} method always returns 
+ * <code>null</code>. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see URIDereferencer
+ */
+public interface URIReference {
+
+    /**
+     * Returns the URI of the referenced data object.
+     *
+     * @return the URI of the data object in RFC 2396 format (may be
+     *    <code>null</code> if not specified)
+     */
+    String getURI();
+
+    /**
+     * Returns the type of data referenced by this URI.
+     *
+     * @return the type (a URI) of the data object (may be <code>null</code> 
+     *    if not specified)
+     */
+    String getType();
+}
diff --git a/src/javax/xml/crypto/URIReferenceException.java b/src/javax/xml/crypto/URIReferenceException.java
new file mode 100644
index 0000000..05f99f5
--- /dev/null
+++ b/src/javax/xml/crypto/URIReferenceException.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import javax.xml.crypto.dsig.keyinfo.RetrievalMethod;
+
+/**
+ * Indicates an exceptional condition thrown while dereferencing a 
+ * {@link URIReference}.
+ *
+ * <p>A <code>URIReferenceException</code> can contain a cause: another 
+ * throwable that caused this <code>URIReferenceException</code> to get thrown. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see URIDereferencer#dereference(URIReference, XMLCryptoContext)
+ * @see RetrievalMethod#dereference(XMLCryptoContext)
+ */
+public class URIReferenceException extends Exception {
+
+    private static final long serialVersionUID = 7173469703932561419L;
+
+    /**
+     * The throwable that caused this exception to get thrown, or null if this
+     * exception was not caused by another throwable or if the causative
+     * throwable is unknown. 
+     *
+     * @serial
+     */
+    private Throwable cause;
+
+    private URIReference uriReference;
+
+    /**
+     * Constructs a new <code>URIReferenceException</code> with 
+     * <code>null</code> as its detail message.
+     */
+    public URIReferenceException() {
+        super();
+    }
+
+    /**
+     * Constructs a new <code>URIReferenceException</code> with the specified 
+     * detail message. 
+     *
+     * @param message the detail message
+     */
+    public URIReferenceException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new <code>URIReferenceException</code> with the 
+     * specified detail message and cause.  
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     */
+    public URIReferenceException(String message, Throwable cause) {
+        super(message);
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs a new <code>URIReferenceException</code> with the 
+     * specified detail message, cause and <code>URIReference</code>.
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     * @param uriReference the <code>URIReference</code> that was being
+     *    dereferenced when the error was encountered
+     * @throws NullPointerException if <code>uriReference</code> is
+     *    <code>null</code>
+     */
+    public URIReferenceException(String message, Throwable cause, 
+	URIReference uriReference) {
+	this(message, cause);
+	if (uriReference == null) {
+	    throw new NullPointerException("uriReference cannot be null");
+	}
+	this.uriReference = uriReference;
+    }
+
+    /**
+     * Constructs a new <code>URIReferenceException</code> with the specified 
+     * cause and a detail message of <code>(cause==null ? null : 
+     * cause.toString())</code> (which typically contains the class and detail 
+     * message of <code>cause</code>).
+     *
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *        indicates that the cause is nonexistent or unknown.)
+     */
+    public URIReferenceException(Throwable cause) {
+        super(cause==null ? null : cause.toString());
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the <code>URIReference</code> that was being dereferenced
+     * when the exception was thrown.
+     *
+     * @return the <code>URIReference</code> that was being dereferenced
+     * when the exception was thrown, or <code>null</code> if not specified
+     */
+    public URIReference getURIReference() {
+	return uriReference;
+    }
+
+    /**
+     * Returns the cause of this <code>URIReferenceException</code> or 
+     * <code>null</code> if the cause is nonexistent or unknown.  (The 
+     * cause is the throwable that caused this 
+     * <code>URIReferenceException</code> to get thrown.)
+     *
+     * @return the cause of this <code>URIReferenceException</code> or 
+     *    <code>null</code> if the cause is nonexistent or unknown.
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Prints this <code>URIReferenceException</code>, its backtrace and
+     * the cause's backtrace to the standard error stream.
+     */
+    public void printStackTrace() {
+	super.printStackTrace();
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>URIReferenceException</code>, its backtrace and
+     * the cause's backtrace to the specified print stream.
+     *
+     * @param s <code>PrintStream</code> to use for output
+     */
+    public void printStackTrace(PrintStream s) {
+	super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+
+    /**
+     * Prints this <code>URIReferenceException</code>, its backtrace and
+     * the cause's backtrace to the specified print writer.
+     *
+     * @param s <code>PrintWriter</code> to use for output
+     */
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+	//XXX print backtrace of cause
+    }
+}
diff --git a/src/javax/xml/crypto/XMLCryptoContext.java b/src/javax/xml/crypto/XMLCryptoContext.java
new file mode 100644
index 0000000..8909e5d
--- /dev/null
+++ b/src/javax/xml/crypto/XMLCryptoContext.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+/**
+ * Contains common context information for XML cryptographic operations.
+ *
+ * <p>This interface contains methods for setting and retrieving properties 
+ * that affect the processing of XML signatures or XML encrypted structures.
+ *
+ * <p>Note that <code>XMLCryptoContext</code> instances can contain information
+ * and state specific to the XML cryptographic structure it is used with.
+ * The results are unpredictable if an <code>XMLCryptoContext</code> is 
+ * used with multiple structures (for example, you should not use the same 
+ * {@link javax.xml.crypto.dsig.XMLValidateContext} instance to validate two 
+ * different {@link javax.xml.crypto.dsig.XMLSignature} objects). 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public interface XMLCryptoContext {
+
+    /**
+     * Returns the base URI.
+     *
+     * @return the base URI, or <code>null</code> if not specified
+     * @see #setBaseURI(String)
+     */
+    String getBaseURI();
+
+    /**
+     * Sets the base URI.
+     *
+     * @param baseURI the base URI, or <code>null</code> to remove current
+     *    value
+     * @throws IllegalArgumentException if <code>baseURI</code> is not RFC
+     *    2396 compliant
+     * @see #getBaseURI
+     */
+    void setBaseURI(String baseURI);
+
+    /**
+     * Returns the key selector for finding a key.
+     *
+     * @return the key selector, or <code>null</code> if not specified
+     * @see #setKeySelector(KeySelector)
+     */
+    KeySelector getKeySelector();
+
+    /**
+     * Sets the key selector for finding a key.
+     *
+     * @param ks the key selector, or <code>null</code> to remove the current
+     *    setting
+     * @see #getKeySelector
+     */
+    void setKeySelector(KeySelector ks);
+
+    /**
+     * Returns a <code>URIDereferencer</code> that is used to dereference
+     * {@link URIReference}s.
+     *
+     * @return the <code>URIDereferencer</code>, or <code>null</code> if not
+     *    specified
+     * @see #setURIDereferencer(URIDereferencer)
+     */
+    URIDereferencer getURIDereferencer();
+
+    /**
+     * Sets a <code>URIDereferencer</code> that is used to dereference
+     * {@link URIReference}s. The specified <code>URIDereferencer</code>
+     * is used in place of an implementation's default 
+     * <code>URIDereferencer</code>.
+     *
+     * @param dereferencer the <code>URIDereferencer</code>, or 
+     *    <code>null</code> to remove any current setting
+     * @see #getURIDereferencer
+     */
+    void setURIDereferencer(URIDereferencer dereferencer);
+
+    /**
+     * Returns the namespace prefix that the specified namespace URI is
+     * associated with. Returns the specified default prefix if the specified
+     * namespace URI has not been bound to a prefix. To bind a namespace URI
+     * to a prefix, call the {@link #putNamespacePrefix putNamespacePrefix}
+     * method.
+     *
+     * @param namespaceURI a namespace URI
+     * @param defaultPrefix the prefix to be returned in the event that the
+     *    the specified namespace URI has not been bound to a prefix.
+     * @return the prefix that is associated with the specified namespace URI,
+     *    or <code>defaultPrefix</code> if the URI is not registered. If
+     *    the namespace URI is registered but has no prefix, an empty string
+     *    (<code>""</code>) is returned.
+     * @throws NullPointerException if <code>namespaceURI</code> is
+     *    <code>null</code>
+     * @see #putNamespacePrefix(String, String)
+     */
+    String getNamespacePrefix(String namespaceURI, String defaultPrefix);
+
+    /**
+     * Maps the specified namespace URI to the specified prefix. If there is
+     * already a prefix associated with the specified namespace URI, the old
+     * prefix is replaced by the specified prefix.
+     *
+     * @param namespaceURI a namespace URI
+     * @param prefix a namespace prefix (or <code>null</code> to remove any
+     *    existing mapping). Specifying the empty string (<code>""</code>)
+     *    binds no prefix to the namespace URI.
+     * @return the previous prefix associated with the specified namespace
+     *    URI, or <code>null</code> if there was none
+     * @throws NullPointerException if <code>namespaceURI</code> is
+     *    <code>null</code>
+     * @see #getNamespacePrefix(String, String)
+     */
+    String putNamespacePrefix(String namespaceURI, String prefix);
+
+    /**
+     * Returns the default namespace prefix. The default namespace prefix
+     * is the prefix for all namespace URIs not explicitly set by the
+     * {@link #putNamespacePrefix putNamespacePrefix} method.
+     *
+     * @return the default namespace prefix, or <code>null</code> if none has
+     *    been set.
+     * @see #setDefaultNamespacePrefix(String)
+     */
+    String getDefaultNamespacePrefix();
+
+    /**
+     * Sets the default namespace prefix. This sets the namespace prefix for
+     * all namespace URIs not explicitly set by the {@link #putNamespacePrefix
+     * putNamespacePrefix} method.
+     *
+     * @param defaultPrefix the default namespace prefix, or <code>null</code>
+     *    to remove the current setting. Specify the empty string
+     *    (<code>""</code>) to bind no prefix.
+     * @see #getDefaultNamespacePrefix
+     */
+    void setDefaultNamespacePrefix(String defaultPrefix);
+
+    /**
+     * Sets the specified property.
+     *
+     * @param name the name of the property
+     * @param value the value of the property to be set
+     * @return the previous value of the specified property, or
+     *    <code>null</code> if it did not have a value
+     * @throws NullPointerException if <code>name</code> is <code>null</code>
+     * @see #getProperty(String)
+     */
+    Object setProperty(String name, Object value);
+
+    /**
+     * Returns the value of the specified property.
+     *
+     * @param name the name of the property
+     * @return the current value of the specified property, or
+     *    <code>null</code> if it does not have a value
+     * @throws NullPointerException if <code>name</code> is <code>null</code>
+     * @see #setProperty(String, Object)
+     */
+    Object getProperty(String name);
+
+    /**
+     * Returns the value to which this context maps the specified key.
+     *
+     * <p>More formally, if this context contains a mapping from a key 
+     * <code>k</code> to a value <code>v</code> such that 
+     * <code>(key==null ? k==null : key.equals(k))</code>, then this method 
+     * returns <code>v</code>; otherwise it returns <code>null</code>. (There 
+     * can be at most one such mapping.)
+     *
+     * <p>This method is useful for retrieving arbitrary information that is
+     * specific to the cryptographic operation that this context is used for. 
+     *
+     * @param key the key whose associated value is to be returned
+     * @return the value to which this context maps the specified key, or
+     *    <code>null</code> if there is no mapping for the key
+     * @see #put(Object, Object)
+     */ 
+    Object get(Object key);
+
+    /**
+     * Associates the specified value with the specified key in this context.
+     * If the context previously contained a mapping for this key, the old
+     * value is replaced by the specified value.
+     *
+     * <p>This method is useful for storing arbitrary information that is
+     * specific to the cryptographic operation that this context is used for. 
+     *
+     * @param key key with which the specified value is to be associated with
+     * @param value value to be associated with the specified key
+     * @return the previous value associated with the key, or <code>null</code>
+     *    if there was no mapping for the key
+     * @throws IllegalArgumentException if some aspect of this key or value
+     *    prevents it from being stored in this context
+     * @see #get(Object)
+     */
+    Object put(Object key, Object value);
+}
diff --git a/src/javax/xml/crypto/XMLStructure.java b/src/javax/xml/crypto/XMLStructure.java
new file mode 100644
index 0000000..06d1467
--- /dev/null
+++ b/src/javax/xml/crypto/XMLStructure.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto;
+
+/**
+ * A representation of an XML structure from any namespace. The purpose of 
+ * this interface is to group (and provide type safety for) all 
+ * representations of XML structures.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public interface XMLStructure {
+
+    /**
+     * Indicates whether a specified feature is supported.
+     *
+     * @param feature the feature name (as an absolute URI)
+     * @return <code>true</code> if the specified feature is supported,
+     *    <code>false</code> otherwise
+     * @throws NullPointerException if <code>feature</code> is <code>null</code>
+     */
+    boolean isFeatureSupported(String feature);
+}
diff --git a/src/javax/xml/crypto/dom/DOMCryptoContext.java b/src/javax/xml/crypto/dom/DOMCryptoContext.java
new file mode 100644
index 0000000..fd36876
--- /dev/null
+++ b/src/javax/xml/crypto/dom/DOMCryptoContext.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dom;
+
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.XMLCryptoContext;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import org.w3c.dom.Element;
+
+/**
+ * This class provides a DOM-specific implementation of the
+ * {@link XMLCryptoContext} interface. It also includes additional
+ * methods that are specific to a DOM-based implementation for registering
+ * and retrieving elements that contain attributes of type ID. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public class DOMCryptoContext implements XMLCryptoContext {
+
+    private HashMap nsMap = new HashMap();
+    private HashMap idMap = new HashMap();
+    private HashMap objMap = new HashMap();
+    private String baseURI;
+    private KeySelector ks;
+    private URIDereferencer dereferencer;
+    private HashMap propMap = new HashMap();
+    private String defaultPrefix;
+
+    /**
+     * Default constructor. (For invocation by subclass constructors).
+     */
+    protected DOMCryptoContext() {}
+
+    /**
+     * This implementation uses an internal {@link HashMap} to get the prefix 
+     * that the specified URI maps to. It returns the <code>defaultPrefix</code>
+     * if it maps to <code>null</code>.
+     *
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public String getNamespacePrefix(String namespaceURI, 
+	String defaultPrefix) {
+        if (namespaceURI == null) {
+            throw new NullPointerException("namespaceURI cannot be null");
+        }
+	String prefix = (String) nsMap.get(namespaceURI);
+	return (prefix != null ? prefix : defaultPrefix);
+    }
+
+    /**
+     * This implementation uses an internal {@link HashMap} to map the URI
+     * to the specified prefix.
+     *
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public String putNamespacePrefix(String namespaceURI, String prefix) {
+        if (namespaceURI == null) {
+            throw new NullPointerException("namespaceURI is null");
+        }
+        return (String) nsMap.put(namespaceURI, prefix);
+    }
+
+    public String getDefaultNamespacePrefix() {
+	return defaultPrefix;
+    }
+
+    public void setDefaultNamespacePrefix(String defaultPrefix) {
+	this.defaultPrefix = defaultPrefix;
+    }
+
+    public String getBaseURI() {
+        return baseURI;
+    }
+
+    /**
+     * @throws IllegalArgumentException {@inheritDoc}
+     */
+    public void setBaseURI(String baseURI) {
+	if (baseURI != null) {
+	    java.net.URI.create(baseURI);
+	}
+        this.baseURI = baseURI;
+    }
+
+    public URIDereferencer getURIDereferencer() {
+        return dereferencer;
+    }
+
+    public void setURIDereferencer(URIDereferencer dereferencer) {
+        this.dereferencer = dereferencer;
+    }
+
+    /**
+     * This implementation uses an internal {@link HashMap} to get the object 
+     * that the specified name maps to. 
+     *
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public Object getProperty(String name) {
+        if (name == null) {
+            throw new NullPointerException("name is null");
+        }
+        return propMap.get(name);
+    }
+
+    /**
+     * This implementation uses an internal {@link HashMap} to map the name
+     * to the specified object.
+     *
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public Object setProperty(String name, Object value) {
+        if (name == null) {
+            throw new NullPointerException("name is null");
+        }
+        return propMap.put(name, value);
+    }
+
+    public KeySelector getKeySelector() {
+        return ks;
+    }
+
+    public void setKeySelector(KeySelector ks) {
+        this.ks = ks;
+    }
+
+    /**
+     * Returns the <code>Element</code> with the specified ID attribute value.
+     *
+     * <p>This implementation uses an internal {@link HashMap} to get the 
+     * element that the specified attribute value maps to. 
+     *
+     * @param idValue the value of the ID
+     * @return the <code>Element</code> with the specified ID attribute value,
+     *    or <code>null</code> if none.
+     * @throws NullPointerException if <code>idValue</code> is <code>null</code>
+     * @see #setIdAttributeNS
+     */
+    public Element getElementById(String idValue) {
+        if (idValue == null) {
+            throw new NullPointerException("idValue is null");
+        }
+        return (Element) idMap.get(idValue);
+    }
+
+    /**
+     * Registers the element's attribute specified by the namespace URI and
+     * local name to be of type ID. The attribute must have a non-empty value.
+     *
+     * <p>This implementation uses an internal {@link HashMap} to map the 
+     * attribute's value to the specified element.
+     *
+     * @param element the element
+     * @param namespaceURI the namespace URI of the attribute (specify
+     *    <code>null</code> if not applicable)
+     * @param localName the local name of the attribute
+     * @throws IllegalArgumentException if <code>localName</code> is not an
+     *    attribute of the specified element or it does not contain a specific
+     *    value
+     * @throws NullPointerException if <code>element</code> or
+     *    <code>localName</code> is <code>null</code>
+     * @see #getElementById
+     */
+    public void setIdAttributeNS(Element element, String namespaceURI, 
+	String localName) {
+	if (element == null) {
+	    throw new NullPointerException("element is null");
+	}
+	if (localName == null) {
+	    throw new NullPointerException("localName is null");
+	}
+	String idValue = element.getAttributeNS(namespaceURI, localName);
+	if (idValue == null || idValue.length() == 0) {
+	    throw new IllegalArgumentException(localName + " is not an " +
+		"attribute");
+	}
+	idMap.put(idValue, element);
+    }
+
+    /**
+     * Returns a read-only iterator over the set of Id/Element mappings of 
+     * this <code>DOMCryptoContext</code>. Attempts to modify the set via the
+     * {@link Iterator#remove} method throw an
+     * <code>UnsupportedOperationException</code>. The mappings are returned
+     * in no particular order. Each element in the iteration is represented as a
+     * {@link java.util.Map.Entry}. If the <code>DOMCryptoContext</code> is 
+     * modified while an iteration is in progress, the results of the 
+     * iteration are undefined.
+     *
+     * @return a read-only iterator over the set of mappings
+     */
+    public Iterator iterator() {
+	return Collections.unmodifiableMap(idMap).entrySet().iterator();
+    }
+
+    /**
+     * This implementation uses an internal {@link HashMap} to get the object 
+     * that the specified key maps to. 
+     */
+    public Object get(Object key) {
+	return objMap.get(key);
+    }
+
+    /**
+     * This implementation uses an internal {@link HashMap} to map the key
+     * to the specified object.
+     *
+     * @throws IllegalArgumentException {@inheritDoc}
+     */
+    public Object put(Object key, Object value) {
+	return objMap.put(key, value);
+    }
+}
diff --git a/src/javax/xml/crypto/dom/DOMStructure.java b/src/javax/xml/crypto/dom/DOMStructure.java
new file mode 100644
index 0000000..7786666
--- /dev/null
+++ b/src/javax/xml/crypto/dom/DOMStructure.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dom;
+
+import org.w3c.dom.Node;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.XMLSignature;
+
+/**
+ * A DOM-specific {@link XMLStructure}. The purpose of this class is to
+ * allow a DOM node to be used to represent extensible content (any elements
+ * or mixed content) in XML Signature structures.
+ *
+ * <p>If a sequence of nodes is needed, the node contained in the
+ * <code>DOMStructure</code> is the first node of the sequence and successive
+ * nodes can be accessed by invoking {@link Node#getNextSibling}.
+ *
+ * <p>If the owner document of the <code>DOMStructure</code> is different than 
+ * the target document of an <code>XMLSignature</code>, the   
+ * {@link XMLSignature#sign(XMLSignContext)} method imports the node into the 
+ * target document before generating the signature.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public class DOMStructure implements XMLStructure {
+
+    private final Node node;
+
+    /**
+     * Creates a <code>DOMStructure</code> containing the specified node.
+     *
+     * @param node the node
+     * @throws NullPointerException if <code>node</code> is <code>null</code>
+     */
+    public DOMStructure(Node node) {
+        if (node == null) {
+	    throw new NullPointerException("node cannot be null");
+	}
+	this.node = node;
+    }
+
+    /**
+     * Returns the node contained in this <code>DOMStructure</code>.
+     *
+     * @return the node
+     */
+    public Node getNode() {
+	return node;
+    }
+
+    /**
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public boolean isFeatureSupported(String feature) {
+        if (feature == null) {
+            throw new NullPointerException();
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/src/javax/xml/crypto/dom/DOMURIReference.java b/src/javax/xml/crypto/dom/DOMURIReference.java
new file mode 100644
index 0000000..fa302c5
--- /dev/null
+++ b/src/javax/xml/crypto/dom/DOMURIReference.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dom;
+
+import javax.xml.crypto.URIReference;
+import org.w3c.dom.Node;
+
+/**
+ * A DOM-specific {@link URIReference}. The purpose of this class is to 
+ * provide additional context necessary for resolving XPointer URIs or 
+ * same-document references. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public interface DOMURIReference extends URIReference {
+
+    /**
+     * Returns the here node.
+     *
+     * @return the attribute or processing instruction node or the
+     *    parent element of the text node that directly contains the URI 
+     */
+    Node getHere();
+}
diff --git a/src/javax/xml/crypto/dom/package.html b/src/javax/xml/crypto/dom/package.html
new file mode 100644
index 0000000..daa48a7
--- /dev/null
+++ b/src/javax/xml/crypto/dom/package.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+<!--
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+-->
+<!--
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+-->
+</head>
+<body>
+DOM-specific classes for the {@link javax.xml.crypto} package. 
+Only users who are using a DOM-based XML cryptographic implementations (ex: 
+{@link javax.xml.crypto.dsig.XMLSignatureFactory XMLSignatureFactory} or 
+{@link javax.xml.crypto.dsig.keyinfo.KeyInfoFactory}) 
+should need to make direct use of this package.
+
+<h2>Package Specification</h2>
+
+<ul>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-core/">
+XML-Signature Syntax and Processing: W3C Recommendation</a>
+<li>
+<a href="http://www.ietf.org/rfc/rfc3275.txt">
+RFC 3275: XML-Signature Syntax and Processing</a>
+</ul>
+
+</body>
+</html>
diff --git a/src/javax/xml/crypto/dsig/CanonicalizationMethod.java b/src/javax/xml/crypto/dsig/CanonicalizationMethod.java
new file mode 100644
index 0000000..46537e5
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/CanonicalizationMethod.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.security.spec.AlgorithmParameterSpec;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+
+/**
+ * A representation of the XML <code>CanonicalizationMethod</code> 
+ * element as defined in the 
+ * <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. The XML 
+ * Schema Definition is defined as:
+ * <p>
+ * <pre>
+ *   &lt;element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/&gt;
+ *     &lt;complexType name="CanonicalizationMethodType" mixed="true"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;any namespace="##any" minOccurs="0" maxOccurs="unbounded"/&gt;
+ *           &lt;!-- (0,unbounded) elements from (1,1) namespace --&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="Algorithm" type="anyURI" use="required"/&gt;
+ *     &lt;/complexType&gt;
+ * </pre>
+ *
+ * A <code>CanonicalizationMethod</code> instance may be created by invoking 
+ * the {@link XMLSignatureFactory#newCanonicalizationMethod 
+ * newCanonicalizationMethod} method of the {@link XMLSignatureFactory} class.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newCanonicalizationMethod(String, C14NMethodParameterSpec)
+ */
+public interface CanonicalizationMethod extends Transform {
+
+    /**
+     * The <a href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">Canonical 
+     * XML (without comments)</a> canonicalization method algorithm URI.
+     */
+    final static String INCLUSIVE = 
+	"http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
+
+    /**
+     * The 
+     * <a href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments">
+     * Canonical XML with comments</a> canonicalization method algorithm URI.
+     */
+    final static String INCLUSIVE_WITH_COMMENTS =
+        "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments";
+
+    /**
+     * The <a href="http://www.w3.org/2001/10/xml-exc-c14n#">Exclusive 
+     * Canonical XML (without comments)</a> canonicalization method algorithm
+     * URI.
+     */
+    final static String EXCLUSIVE =
+        "http://www.w3.org/2001/10/xml-exc-c14n#";
+
+    /**
+     * The <a href="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+     * Exclusive Canonical XML with comments</a> canonicalization method 
+     * algorithm URI.
+     */
+    final static String EXCLUSIVE_WITH_COMMENTS =
+        "http://www.w3.org/2001/10/xml-exc-c14n#WithComments";
+
+    /**
+     * Returns the algorithm-specific input parameters associated with this 
+     * <code>CanonicalizationMethod</code>.
+     *
+     * <p>The returned parameters can be typecast to a 
+     * {@link C14NMethodParameterSpec} object.
+     *
+     * @return the algorithm-specific input parameters (may be 
+     *    <code>null</code> if not specified)
+     */
+    AlgorithmParameterSpec getParameterSpec();
+}
diff --git a/src/javax/xml/crypto/dsig/DigestMethod.java b/src/javax/xml/crypto/dsig/DigestMethod.java
new file mode 100644
index 0000000..b5ac0e6
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/DigestMethod.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.AlgorithmMethod;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * A representation of the XML <code>DigestMethod</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+ * The XML Schema Definition is defined as:
+ * <p>
+ * <pre>
+ *   &lt;element name="DigestMethod" type="ds:DigestMethodType"/&gt;
+ *     &lt;complexType name="DigestMethodType" mixed="true"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;any namespace="##any" minOccurs="0" maxOccurs="unbounded"/&gt;
+ *           &lt;!-- (0,unbounded) elements from (1,1) namespace --&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="Algorithm" type="anyURI" use="required"/&gt;
+ *     &lt;/complexType&gt;
+ * </pre>
+ *
+ * A <code>DigestMethod</code> instance may be created by invoking the 
+ * {@link XMLSignatureFactory#newDigestMethod newDigestMethod} method 
+ * of the {@link XMLSignatureFactory} class.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newDigestMethod(String, DigestMethodParameterSpec)
+ */
+public interface DigestMethod extends XMLStructure, AlgorithmMethod {
+
+    /**
+     * The <a href="http://www.w3.org/2000/09/xmldsig#sha1">
+     * SHA1</a> digest method algorithm URI.
+     */
+    static final String SHA1 = "http://www.w3.org/2000/09/xmldsig#sha1";
+
+    /**
+     * The <a href="http://www.w3.org/2001/04/xmlenc#sha256">
+     * SHA256</a> digest method algorithm URI.
+     */
+    static final String SHA256 = "http://www.w3.org/2001/04/xmlenc#sha256";
+
+    /**
+     * The <a href="http://www.w3.org/2001/04/xmlenc#sha512">
+     * SHA512</a> digest method algorithm URI.
+     */
+    static final String SHA512 = "http://www.w3.org/2001/04/xmlenc#sha512";
+
+    /**
+     * The <a href="http://www.w3.org/2001/04/xmlenc#ripemd160">
+     * RIPEMD-160</a> digest method algorithm URI.
+     */
+    static final String RIPEMD160 = "http://www.w3.org/2001/04/xmlenc#ripemd160";
+
+    /**
+     * Returns the algorithm-specific input parameters associated with this
+     * <code>DigestMethod</code>.
+     *
+     * <p>The returned parameters can be typecast to a {@link 
+     * DigestMethodParameterSpec} object.
+     *
+     * @return the algorithm-specific parameters (may be <code>null</code> if
+     *    not specified)
+     */
+    AlgorithmParameterSpec getParameterSpec();
+}
diff --git a/src/javax/xml/crypto/dsig/Manifest.java b/src/javax/xml/crypto/dsig/Manifest.java
new file mode 100644
index 0000000..4b260e5
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/Manifest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.XMLStructure;
+import java.util.List;
+
+/**
+ * A representation of the XML <code>Manifest</code> element as defined in 
+ * the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * The XML Schema Definition is defined as:
+ * <pre><code>
+ * &lt;element name="Manifest" type="ds:ManifestType"/&gt; 
+ *   &lt;complexType name="ManifestType"&gt;
+ *     &lt;sequence>
+ *       &lt;element ref="ds:Reference" maxOccurs="unbounded"/&gt; 
+ *     &lt;/sequence&gt;  
+ *     &lt;attribute name="Id" type="ID" use="optional"/&gt; 
+ *   &lt;/complexType&gt;
+ * </code></pre>
+ *
+ * A <code>Manifest</code> instance may be created by invoking
+ * one of the {@link XMLSignatureFactory#newManifest newManifest} 
+ * methods of the {@link XMLSignatureFactory} class; for example: 
+ *
+ * <pre>
+ *   XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
+ *   List references = Collections.singletonList(factory.newReference
+ *       ("#reference-1", DigestMethod.SHA1));
+ *   Manifest manifest = factory.newManifest(references, "manifest-1");
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newManifest(List)
+ * @see XMLSignatureFactory#newManifest(List, String)
+ */
+public interface Manifest extends XMLStructure {
+
+    /**
+     * URI that identifies the <code>Manifest</code> element (this can be 
+     * specified as the value of the <code>type</code> parameter of the 
+     * {@link Reference} class to identify the referent's type).
+     */
+    final static String TYPE = "http://www.w3.org/2000/09/xmldsig#Manifest";
+
+    /**
+     * Returns the Id of this <code>Manifest</code>.
+     *
+     * @return the Id  of this <code>Manifest</code> (or <code>null</code> 
+     *    if not specified)
+     */
+    String getId();
+    
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of one or more {@link Reference}s that are contained in this
+     * <code>Manifest</code>. 
+     *
+     * @return an unmodifiable list of one or more <code>Reference</code>s 
+     */
+    List getReferences();
+}
diff --git a/src/javax/xml/crypto/dsig/Reference.java b/src/javax/xml/crypto/dsig/Reference.java
new file mode 100644
index 0000000..f2b2b10
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/Reference.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.URIReference;
+import javax.xml.crypto.XMLStructure;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * A representation of the <code>Reference</code> element as defined in the 
+ * <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+ * The XML schema is defined as: 
+ * <code><pre>
+ * &lt;element name="Reference" type="ds:ReferenceType"/&gt;
+ * &lt;complexType name="ReferenceType"&gt;
+ *   &lt;sequence&gt;
+ *     &lt;element ref="ds:Transforms" minOccurs="0"/&gt;
+ *     &lt;element ref="ds:DigestMethod"/&gt;
+ *     &lt;element ref="ds:DigestValue"/&gt;
+ *   &lt;/sequence&gt;
+ *   &lt;attribute name="Id" type="ID" use="optional"/&gt;
+ *   &lt;attribute name="URI" type="anyURI" use="optional"/&gt;
+ *   &lt;attribute name="Type" type="anyURI" use="optional"/&gt;
+ * &lt;/complexType&gt;
+ *
+ * &lt;element name="DigestValue" type="ds:DigestValueType"/&gt;
+ * &lt;simpleType name="DigestValueType"&gt;
+ *   &lt;restriction base="base64Binary"/&gt;
+ * &lt;/simpleType&gt;
+ * </pre></code>
+ *
+ * <p>A <code>Reference</code> instance may be created by invoking one of the 
+ * {@link XMLSignatureFactory#newReference newReference} methods of the
+ * {@link XMLSignatureFactory} class; for example:
+ *
+ * <pre>
+ *   XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
+ *   Reference ref = factory.newReference
+ *     ("http://www.ietf.org/rfc/rfc3275.txt", 
+ *	factory.newDigestMethod(DigestMethod.SHA1, null));
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author Erwin van der Koogh 
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newReference(String, DigestMethod)
+ * @see XMLSignatureFactory#newReference(String, DigestMethod, List, String, String)
+ */
+public interface Reference extends URIReference, XMLStructure {
+
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of {@link Transform}s that are contained in this 
+     * <code>Reference</code>.
+     *
+     * @return an unmodifiable list of <code>Transform</code>s
+     *    (may be empty but never <code>null</code>)
+     */
+    List getTransforms();
+
+    /**
+     * Returns the digest method of this <code>Reference</code>.
+     *
+     * @return the digest method
+     */
+    DigestMethod getDigestMethod();
+
+    /**
+     * Returns the optional <code>Id</code> attribute of this 
+     * <code>Reference</code>, which permits this reference to be 
+     * referenced from elsewhere.
+     *
+     * @return the <code>Id</code> attribute (may be <code>null</code> if not 
+     *    specified) 
+     */
+    String getId();
+
+    /**
+     * Returns the digest value of this <code>Reference</code>.
+     * 
+     * @return the raw digest value, or <code>null</code> if this reference has
+     *    not been digested yet. Each invocation of this method returns a new
+     *    clone to protect against subsequent modification.
+     */
+    byte[] getDigestValue();
+
+    /**
+     * Returns the calculated digest value of this <code>Reference</code>
+     * after a validation operation. This method is useful for debugging if
+     * the reference fails to validate.
+     * 
+     * @return the calculated digest value, or <code>null</code> if this 
+     *    reference has not been validated yet. Each invocation of this method 
+     *    returns a new clone to protect against subsequent modification.
+     */
+    byte[] getCalculatedDigestValue();
+
+    /**
+     * Validates this reference. This method verifies the digest of this 
+     * reference.
+     *
+     * <p>This method only validates the reference the first time it is 
+     * invoked. On subsequent invocations, it returns a cached result.
+     *
+     * @return <code>true</code> if this reference was validated successfully;
+     *    <code>false</code> otherwise
+     * @param validateContext the validating context
+     * @throws NullPointerException if <code>validateContext</code> is 
+     *    <code>null</code>
+     * @throws XMLSignatureException if an unexpected exception occurs while 
+     *    validating the reference 
+     */
+    boolean validate(XMLValidateContext validateContext) 
+	throws XMLSignatureException;
+
+    /**
+     * Returns the dereferenced data, if 
+     * <a href="XMLSignContext.html#Supported Properties">reference caching</a>
+     * is enabled. This is the result of dereferencing the URI of this 
+     * reference during a validation or generation operation. 
+     *
+     * @return the dereferenced data, or <code>null</code> if reference 
+     *    caching is not enabled or this reference has not been generated or
+     *    validated
+     */
+    Data getDereferencedData();
+
+    /**
+     * Returns the pre-digested input stream, if
+     * <a href="XMLSignContext.html#Supported Properties">reference caching</a>
+     * is enabled. This is the input to the digest operation during a
+     * validation or signing operation. 
+     *
+     * @return an input stream containing the pre-digested input, or
+     *    <code>null</code> if reference caching is not enabled or this
+     *    reference has not been generated or validated
+     */
+    InputStream getDigestInputStream();
+}
diff --git a/src/javax/xml/crypto/dsig/SignatureMethod.java b/src/javax/xml/crypto/dsig/SignatureMethod.java
new file mode 100644
index 0000000..509951e
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/SignatureMethod.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.AlgorithmMethod;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * A representation of the XML <code>SignatureMethod</code> element 
+ * as defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * The XML Schema Definition is defined as:
+ * <p>
+ * <pre>
+ *   &lt;element name="SignatureMethod" type="ds:SignatureMethodType"/&gt;
+ *     &lt;complexType name="SignatureMethodType" mixed="true"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/&gt;
+ *         &lt;any namespace="##any" minOccurs="0" maxOccurs="unbounded"/&gt;
+ *           &lt;!-- (0,unbounded) elements from (1,1) namespace --&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="Algorithm" type="anyURI" use="required"/&gt;
+ *     &lt;/complexType&gt;
+ * </pre>
+ *
+ * A <code>SignatureMethod</code> instance may be created by invoking the
+ * {@link XMLSignatureFactory#newSignatureMethod newSignatureMethod} method
+ * of the {@link XMLSignatureFactory} class.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newSignatureMethod(String, SignatureMethodParameterSpec)
+ */
+public interface SignatureMethod extends XMLStructure, AlgorithmMethod {
+
+    /**
+     * The <a href="http://www.w3.org/2000/09/xmldsig#dsa-sha1">DSAwithSHA1</a>
+     * (DSS) signature method algorithm URI.
+     */
+    static final String DSA_SHA1 =
+	"http://www.w3.org/2000/09/xmldsig#dsa-sha1";
+
+    /**
+     * The <a href="http://www.w3.org/2000/09/xmldsig#rsa-sha1">RSAwithSHA1</a>
+     * (PKCS #1) signature method algorithm URI.
+     */
+    static final String RSA_SHA1 = 
+	"http://www.w3.org/2000/09/xmldsig#rsa-sha1";
+
+    /**
+     * The <a href="http://www.w3.org/2000/09/xmldsig#hmac-sha1">HMAC-SHA1</a>
+     * MAC signature method algorithm URI 
+     */
+    static final String HMAC_SHA1 =
+	"http://www.w3.org/2000/09/xmldsig#hmac-sha1";
+
+    /**
+     * Returns the algorithm-specific input parameters of this  
+     * <code>SignatureMethod</code>.
+     *
+     * <p>The returned parameters can be typecast to a {@link
+     * SignatureMethodParameterSpec} object.
+     *
+     * @return the algorithm-specific input parameters of this 
+     *    <code>SignatureMethod</code> (may be <code>null</code> if not 
+     *    specified)
+     */
+    AlgorithmParameterSpec getParameterSpec();
+}
diff --git a/src/javax/xml/crypto/dsig/SignatureProperties.java b/src/javax/xml/crypto/dsig/SignatureProperties.java
new file mode 100644
index 0000000..1483d41
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/SignatureProperties.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.XMLStructure;
+import java.util.List;
+
+/**
+ * A representation of the XML <code>SignatureProperties</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+ * The XML Schema Definition is defined as:
+ * <pre><code>
+ *&lt;element name="SignatureProperties" type="ds:SignaturePropertiesType"/&gt; 
+ *   &lt;complexType name="SignaturePropertiesType"&gt;
+ *     &lt;sequence&gt;
+ *       &lt;element ref="ds:SignatureProperty" maxOccurs="unbounded"/&gt; 
+ *     &lt;/sequence&gt;
+ *     &lt;attribute name="Id" type="ID" use="optional"/&gt; 
+ *   &lt;/complexType&gt;
+ * </code></pre>
+ *
+ * A <code>SignatureProperties</code> instance may be created by invoking the
+ * {@link XMLSignatureFactory#newSignatureProperties newSignatureProperties} 
+ * method of the {@link XMLSignatureFactory} class; for example: 
+ *
+ * <pre>
+ *   XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
+ *   SignatureProperties properties = 
+ *	factory.newSignatureProperties(props, "signature-properties-1");
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newSignatureProperties(List, String)
+ * @see SignatureProperty
+ */
+public interface SignatureProperties extends XMLStructure {
+
+    /**
+     * URI that identifies the <code>SignatureProperties</code> element (this 
+     * can be specified as the value of the <code>type</code> parameter of the 
+     * {@link Reference} class to identify the referent's type).
+     */
+    final static String TYPE =
+        "http://www.w3.org/2000/09/xmldsig#SignatureProperties";
+
+    /**
+     * Returns the Id of this <code>SignatureProperties</code>.
+     *
+     * @return the Id of this <code>SignatureProperties</code> (or 
+     *    <code>null</code> if not specified)
+     */
+    String getId();
+    
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of one or more {@link SignatureProperty}s that are contained in 
+     * this <code>SignatureProperties</code>. 
+     *
+     * @return an unmodifiable list of one or more 
+     *    <code>SignatureProperty</code>s 
+     */
+    List getProperties();
+}
diff --git a/src/javax/xml/crypto/dsig/SignatureProperty.java b/src/javax/xml/crypto/dsig/SignatureProperty.java
new file mode 100644
index 0000000..190936c
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/SignatureProperty.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.XMLStructure;
+import java.util.List;
+
+/**
+ * A representation of the XML <code>SignatureProperty</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * The XML Schema Definition is defined as:
+ * <pre><code>
+ *&lt;element name="SignatureProperty" type="ds:SignaturePropertyType"/&gt; 
+ *   &lt;complexType name="SignaturePropertyType" mixed="true"&gt;
+ *     &lt;choice maxOccurs="unbounded"&gt; 
+ *       &lt;any namespace="##other" processContents="lax"/&gt;
+ *       &lt;!-- (1,1) elements from (1, unbounded) namespaces --&gt;
+ *     &lt;/choice&gt;
+ *     &lt;attribute name="Target" type="anyURI" use="required"/&gt; 
+ *     &lt;attribute name="Id" type="ID" use="optional"/&gt; 
+ *   &lt;/complexType&gt;
+ * </code></pre>
+ *
+ * A <code>SignatureProperty</code> instance may be created by invoking the
+ * {@link XMLSignatureFactory#newSignatureProperty newSignatureProperty} 
+ * method of the {@link XMLSignatureFactory} class; for example: 
+ *
+ * <pre>
+ *   XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
+ *   SignatureProperty property = factory.newSignatureProperty
+ *	(Collections.singletonList(content), "#Signature-1", "TimeStamp");
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newSignatureProperty(List, String, String)
+ * @see SignatureProperties
+ */
+public interface SignatureProperty extends XMLStructure {
+
+    /**
+     * Returns the target URI of this <code>SignatureProperty</code>.
+     *
+     * @return the target URI of this <code>SignatureProperty</code> (never 
+     *    <code>null</code>)
+     */
+    String getTarget();
+
+    /**
+     * Returns the Id of this <code>SignatureProperty</code>.
+     *
+     * @return the Id of this <code>SignatureProperty</code> (or 
+     *    <code>null</code> if not specified)
+     */
+    String getId();
+    
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of one or more {@link XMLStructure}s that are contained in 
+     * this <code>SignatureProperty</code>. These represent additional
+     * information items concerning the generation of the {@link XMLSignature}
+     * (i.e. date/time stamp or serial numbers of cryptographic hardware used
+     * in signature generation).
+     *
+     * @return an unmodifiable list of one or more <code>XMLStructure</code>s 
+     */
+    List getContent();
+}
diff --git a/src/javax/xml/crypto/dsig/SignedInfo.java b/src/javax/xml/crypto/dsig/SignedInfo.java
new file mode 100644
index 0000000..93fcec5
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/SignedInfo.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.XMLStructure;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * An representation of the XML <code>SignedInfo</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * The XML Schema Definition is defined as:
+ * <pre><code>
+ * &lt;element name="SignedInfo" type="ds:SignedInfoType"/&gt; 
+ * &lt;complexType name="SignedInfoType"&gt;
+ *   &lt;sequence&gt; 
+ *     &lt;element ref="ds:CanonicalizationMethod"/&gt; 
+ *     &lt;element ref="ds:SignatureMethod"/&gt; 
+ *     &lt;element ref="ds:Reference" maxOccurs="unbounded"/&gt; 
+ *   &lt;/sequence&gt;  
+ *   &lt;attribute name="Id" type="ID" use="optional"/&gt; 
+ * &lt;/complexType&gt;
+ * </code></pre>
+ *
+ * A <code>SignedInfo</code> instance may be created by invoking one of the
+ * {@link XMLSignatureFactory#newSignedInfo newSignedInfo} methods of the
+ * {@link XMLSignatureFactory} class.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newSignedInfo(CanonicalizationMethod, SignatureMethod, List)
+ * @see XMLSignatureFactory#newSignedInfo(CanonicalizationMethod, SignatureMethod, List, String)
+ */
+public interface SignedInfo extends XMLStructure {
+
+    /**
+     * Returns the canonicalization method of this <code>SignedInfo</code>.
+     *
+     * @return the canonicalization method
+     */
+    CanonicalizationMethod getCanonicalizationMethod();
+    
+    /**
+     * Returns the signature method of this <code>SignedInfo</code>.
+     *
+     * @return the signature method
+     */
+    SignatureMethod getSignatureMethod();
+    
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList 
+     * unmodifiable list} of one or more {@link Reference}s. 
+     *
+     * @return an unmodifiable list of one or more {@link Reference}s
+     */
+    List getReferences();
+    
+    /**
+     * Returns the optional <code>Id</code> attribute of this 
+     * <code>SignedInfo</code>.
+     *
+     * @return the id (may be <code>null</code> if not specified)
+     */
+    String getId();
+
+    /**
+     * Returns the canonicalized signed info bytes after a signing or 
+     * validation operation. This method is useful for debugging.
+     *
+     * @return an <code>InputStream</code> containing the canonicalized bytes, 
+     *    or <code>null</code> if this <code>SignedInfo</code> has not been 
+     *    signed or validated yet
+     */
+    InputStream getCanonicalizedData();
+}
diff --git a/src/javax/xml/crypto/dsig/Transform.java b/src/javax/xml/crypto/dsig/Transform.java
new file mode 100644
index 0000000..347a919
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/Transform.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.io.OutputStream;
+import java.security.spec.AlgorithmParameterSpec;
+import javax.xml.crypto.AlgorithmMethod;
+import javax.xml.crypto.Data;
+import javax.xml.crypto.OctetStreamData;
+import javax.xml.crypto.XMLCryptoContext;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+/**
+ * A representation of the XML <code>Transform</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+ * The XML Schema Definition is defined as:
+ *
+ * <pre>
+ * &lt;element name="Transform" type="ds:TransformType"/&gt;
+ *   &lt;complexType name="TransformType" mixed="true"&gt;
+ *     &lt;choice minOccurs="0" maxOccurs="unbounded"&gt;
+ *       &lt;any namespace="##other" processContents="lax"/&gt;
+ *       &lt;!-- (1,1) elements from (0,unbounded) namespaces --&gt;
+ *       &lt;element name="XPath" type="string"/&gt;
+ *     &lt;/choice&gt;
+ *     &lt;attribute name="Algorithm" type="anyURI" use="required"/&gt;
+ *   &lt;/complexType&gt;
+ * </pre>
+ *
+ * A <code>Transform</code> instance may be created by invoking the
+ * {@link XMLSignatureFactory#newTransform newTransform} method 
+ * of the {@link XMLSignatureFactory} class.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#newTransform(String, TransformParameterSpec)
+ */
+public interface Transform extends XMLStructure, AlgorithmMethod {
+
+    /**
+     * The <a href="http://www.w3.org/2000/09/xmldsig#base64">Base64</a> 
+     * transform algorithm URI.
+     */
+    final static String BASE64 = "http://www.w3.org/2000/09/xmldsig#base64";
+
+    /**
+     * The <a href="http://www.w3.org/2000/09/xmldsig#enveloped-signature">
+     * Enveloped Signature</a> transform algorithm URI.
+     */
+    final static String ENVELOPED = 
+        "http://www.w3.org/2000/09/xmldsig#enveloped-signature";
+
+    /**
+     * The <a href="http://www.w3.org/TR/1999/REC-xpath-19991116">XPath</a> 
+     * transform algorithm URI.
+     */
+    final static String XPATH = "http://www.w3.org/TR/1999/REC-xpath-19991116";
+
+    /**
+     * The <a href="http://www.w3.org/2002/06/xmldsig-filter2">
+     * XPath Filter 2</a> transform algorithm URI.
+     */
+    final static String XPATH2 = "http://www.w3.org/2002/06/xmldsig-filter2";
+
+    /**
+     * The <a href="http://www.w3.org/TR/1999/REC-xslt-19991116">XSLT</a> 
+     * transform algorithm URI.
+     */
+    final static String XSLT = "http://www.w3.org/TR/1999/REC-xslt-19991116";
+
+    /**
+     * Returns the algorithm-specific input parameters associated with this
+     * <code>Transform</code>.
+     * <p>
+     * The returned parameters can be typecast to a 
+     * {@link TransformParameterSpec} object.
+     *
+     * @return the algorithm-specific input parameters (may be <code>null</code>
+     *    if not specified)
+     */
+    AlgorithmParameterSpec getParameterSpec();
+
+    /**
+     * Transforms the specified data using the underlying transform algorithm.
+     *
+     * @param data the data to be transformed
+     * @param context the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @return the transformed data
+     * @throws NullPointerException if <code>data</code> is <code>null</code>
+     * @throws TransformException if an error occurs while executing the
+     *    transform
+     */
+    public abstract Data transform(Data data, XMLCryptoContext context)
+        throws TransformException;
+
+    /**
+     * Transforms the specified data using the underlying transform algorithm.
+     * If the output of this transform is an <code>OctetStreamData</code>, then 
+     * this method returns <code>null</code> and the bytes are written to the 
+     * specified <code>OutputStream</code>. Otherwise, the 
+     * <code>OutputStream</code> is ignored and the method behaves as if 
+     * {@link #transform(Data, XMLCryptoContext)} were invoked.
+     *
+     * @param data the data to be transformed
+     * @param context the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @param os the <code>OutputStream</code> that should be used to write
+     *    the transformed data to
+     * @return the transformed data (or <code>null</code> if the data was
+     *    written to the <code>OutputStream</code> parameter)
+     * @throws NullPointerException if <code>data</code> or <code>os</code>
+     *    is <code>null</code>
+     * @throws TransformException if an error occurs while executing the
+     *    transform
+     */
+    public abstract Data transform
+        (Data data, XMLCryptoContext context, OutputStream os)
+        throws TransformException;
+}
diff --git a/src/javax/xml/crypto/dsig/TransformException.java b/src/javax/xml/crypto/dsig/TransformException.java
new file mode 100644
index 0000000..075e99f
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/TransformException.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+ * Indicates an exceptional condition that occured while executing a
+ * transform algorithm.
+ *
+ * <p>A <code>TransformException</code> can contain a cause: another 
+ * throwable that caused this <code>TransformException</code> to get thrown. 
+ *
+ * @see Transform#transform
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public class TransformException extends Exception {
+
+    private static final long serialVersionUID = 5082634801360427800L;
+
+    /**
+     * The throwable that caused this exception to get thrown, or null if this
+     * exception was not caused by another throwable or if the causative
+     * throwable is unknown. 
+     *
+     * @serial
+     */
+    private Throwable cause;
+
+    /**
+     * Constructs a new <code>TransformException</code> with 
+     * <code>null</code> as its detail message.
+     */
+    public TransformException() {
+        super();
+    }
+
+    /**
+     * Constructs a new <code>TransformException</code> with the specified 
+     * detail message. 
+     *
+     * @param message the detail message
+     */
+    public TransformException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new <code>TransformException</code> with the 
+     * specified detail message and cause.  
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     */
+    public TransformException(String message, Throwable cause) {
+        super(message);
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs a new <code>TransformException</code> with the specified 
+     * cause and a detail message of 
+     * <code>(cause==null ? null : cause.toString())</code>
+     * (which typically contains the class and detail message of 
+     * <code>cause</code>).
+     *
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *        indicates that the cause is nonexistent or unknown.)
+     */
+    public TransformException(Throwable cause) {
+        super(cause==null ? null : cause.toString());
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the cause of this <code>TransformException</code> or 
+     * <code>null</code> if the cause is nonexistent or unknown.  (The 
+     * cause is the throwable that caused this 
+     * <code>TransformException</code> to get thrown.)
+     *
+     * @return the cause of this <code>TransformException</code> or 
+     *         <code>null</code> if the cause is nonexistent or unknown.
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Prints this <code>TransformException</code>, its backtrace and
+     * the cause's backtrace to the standard error stream.
+     */
+    public void printStackTrace() {
+	super.printStackTrace();
+	if (cause != null) {
+	    cause.printStackTrace();
+	}
+    }
+
+    /**
+     * Prints this <code>TransformException</code>, its backtrace and
+     * the cause's backtrace to the specified print stream.
+     *
+     * @param s <code>PrintStream</code> to use for output
+     */
+    public void printStackTrace(PrintStream s) {
+	super.printStackTrace(s);
+	if (cause != null) {
+	    cause.printStackTrace(s);
+	}
+    }
+
+    /**
+     * Prints this <code>TransformException</code>, its backtrace and
+     * the cause's backtrace to the specified print writer.
+     *
+     * @param s <code>PrintWriter</code> to use for output
+     */
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+	if (cause != null) {
+	    cause.printStackTrace(s);
+	}
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/TransformService.java b/src/javax/xml/crypto/dsig/TransformService.java
new file mode 100644
index 0000000..bb96357
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/TransformService.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Provider;
+import java.security.Security;
+import java.util.*;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.XMLCryptoContext;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+/**
+ * A Service Provider Interface for transform and canonicalization algorithms.
+ *
+ * <p>Each instance of <code>TransformService</code> supports a specific 
+ * transform or canonicalization algorithm and XML mechanism type. To create a 
+ * <code>TransformService</code>, call one of the static 
+ * {@link #getInstance getInstance} methods, passing in the algorithm URI and 
+ * XML mechanism type desired, for example:
+ *
+ * <blockquote><code>
+ * TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");
+ * </code></blockquote>
+ *
+ * <p><code>TransformService</code> implementations are registered and loaded 
+ * using the {@link java.security.Provider} mechanism.  Each 
+ * <code>TransformService</code> service provider implementation should include 
+ * a <code>MechanismType</code> service attribute that identifies the XML 
+ * mechanism type that it supports. If the attribute is not specified,
+ * "DOM" is assumed. For example, a service provider that supports the
+ * XPath Filter 2 Transform and DOM mechanism would be specified in the 
+ * <code>Provider</code> subclass as:
+ * <pre>
+ *     put("TransformService." + Transform.XPATH2,
+ *         "org.example.XPath2TransformService");
+ *     put("TransformService." + Transform.XPATH2 + " MechanismType", "DOM");
+ * </pre>
+ * <code>TransformService</code> implementations that support the DOM
+ * mechanism type must abide by the DOM interoperability requirements defined 
+ * in the 
+ * <a href="../../../../overview-summary.html#DOM Mechanism Requirements">DOM
+ * Mechanism Requirements</a> section of the API overview. See the
+ * <a href="../../../../overview-summary.html#Service Provider">Service
+ * Providers</a> section of the API overview for a list of standard mechanism
+ * types.
+ * <p>
+ * Once a <code>TransformService</code> has been created, it can be used
+ * to process <code>Transform</code> or <code>CanonicalizationMethod</code>
+ * objects. If the <code>Transform</code> or <code>CanonicalizationMethod</code>
+ * exists in XML form (for example, when validating an existing 
+ * <code>XMLSignature</code>), the {@link #init(XMLStructure, XMLCryptoContext)}
+ * method must be first called to initialize the transform and provide document
+ * context (even if there are no parameters). Alternatively, if the 
+ * <code>Transform</code> or <code>CanonicalizationMethod</code> is being
+ * created from scratch, the {@link #init(TransformParameterSpec)} method
+ * is called to initialize the transform with parameters and the 
+ * {@link #marshalParams marshalParams} method is called to marshal the 
+ * parameters to XML and provide the transform with document context. Finally, 
+ * the {@link #transform transform} method is called to perform the 
+ * transformation.
+ * <p>
+ * <b>Concurrent Access</b>
+ * <p>The static methods of this class are guaranteed to be thread-safe.
+ * Multiple threads may concurrently invoke the static methods defined in this
+ * class with no ill effects.
+ *
+ * <p>However, this is not true for the non-static methods defined by this
+ * class. Unless otherwise documented by a specific provider, threads that
+ * need to access a single <code>TransformService</code> instance
+ * concurrently should synchronize amongst themselves and provide the
+ * necessary locking. Multiple threads each manipulating a different
+ * <code>TransformService</code> instance need not synchronize.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public abstract class TransformService implements Transform {
+
+    private String algorithm;
+    private String mechanism;
+    private Provider provider;
+
+    /**
+     * Default constructor, for invocation by subclasses.
+     */
+    protected TransformService() {}
+
+    /**
+     * Returns a <code>TransformService</code> that supports the specified 
+     * algorithm URI (ex: {@link Transform#XPATH2}) and mechanism type 
+     * (ex: DOM).
+     *
+     * <p>This method uses the standard JCA provider lookup mechanism to
+     * locate and instantiate a <code>TransformService</code> implementation
+     * of the desired algorithm and <code>MechanismType</code> service 
+     * attribute. It traverses the list of registered security 
+     * <code>Provider</code>s, starting with the most preferred 
+     * <code>Provider</code>. A new <code>TransformService</code> object
+     * from the first <code>Provider</code> that supports the specified 
+     * algorithm and mechanism type is returned. 
+     * 
+     * <p> Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method. 
+     *
+     * @param algorithm the URI of the algorithm
+     * @param mechanismType the type of the XML processing mechanism and 
+     *   representation
+     * @return a new <code>TransformService</code>
+     * @throws NullPointerException if <code>algorithm</code> or 
+     *   <code>mechanismType</code> is  <code>null</code>
+     * @throws NoSuchAlgorithmException if no <code>Provider</code> supports a
+     *   <code>TransformService</code> implementation for the specified 
+     *   algorithm and mechanism type
+     * @see Provider
+     */
+    public static TransformService getInstance
+	(String algorithm, String mechanismType) 
+	throws NoSuchAlgorithmException {
+	if (mechanismType == null || algorithm == null) {
+	    throw new NullPointerException();
+	}
+	return findInstance(algorithm, mechanismType, null);
+    }
+
+    /**
+     * Returns a <code>TransformService</code> that supports the specified 
+     * algorithm URI (ex: {@link Transform#XPATH2}) and mechanism type 
+     * (ex: DOM) as supplied by the specified provider. Note that the specified 
+     * <code>Provider</code> object does not have to be registered in the 
+     * provider list. 
+     *
+     * @param algorithm the URI of the algorithm
+     * @param mechanismType the type of the XML processing mechanism and 
+     *   representation
+     * @param provider the <code>Provider</code> object
+     * @return a new <code>TransformService</code>
+     * @throws NullPointerException if <code>provider</code>, 
+     *   <code>algorithm</code>, or <code>mechanismType</code> is 
+     *   <code>null</code>
+     * @throws NoSuchAlgorithmException if a <code>TransformService</code> 
+     *   implementation for the specified algorithm and mechanism type is not 
+     *   available from the specified <code>Provider</code> object
+     * @see Provider
+     */
+    public static TransformService getInstance
+	(String algorithm, String mechanismType, Provider provider) 
+	throws NoSuchAlgorithmException {
+	if (mechanismType == null || algorithm == null || provider == null) {
+	    throw new NullPointerException();
+	}
+	return findInstance(algorithm, mechanismType, provider);
+    }
+
+    /**
+     * Returns a <code>TransformService</code> that supports the specified 
+     * algorithm URI (ex: {@link Transform#XPATH2}) and mechanism type 
+     * (ex: DOM) as supplied by the specified provider. The specified provider 
+     * must be registered in the security provider list. 
+     *
+     * <p>Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method.
+     *
+     * @param algorithm the URI of the algorithm
+     * @param mechanismType the type of the XML processing mechanism and 
+     *   representation
+     * @param provider the string name of the provider
+     * @return a new <code>TransformService</code>
+     * @throws NoSuchProviderException if the specified provider is not 
+     *   registered in the security provider list
+     * @throws NullPointerException if <code>provider</code>, 
+     *   <code>mechanismType</code>, or <code>algorithm</code> is 
+     *   <code>null</code>
+     * @throws NoSuchAlgorithmException if a <code>TransformService</code> 
+     *   implementation for the specified algorithm and mechanism type is not 
+     *   available from the specified provider
+     * @see Provider
+     */
+    public static TransformService getInstance
+	(String algorithm, String mechanismType, String provider) 
+	throws NoSuchAlgorithmException, NoSuchProviderException {
+	if (mechanismType == null || algorithm == null || provider == null) {
+	    throw new NullPointerException();
+	}
+	Provider prov = Security.getProvider(provider);
+	if (prov == null) {
+	    throw new NoSuchProviderException("cannot find provider named "
+		+ provider);
+	}
+	return findInstance(algorithm, mechanismType, prov);
+    }
+
+    private static TransformService findInstance(String algorithm, 
+	String mechanismType, Provider provider) 
+	throws NoSuchAlgorithmException {
+
+	Object[] objs = (Object[]) XMLDSigSecurity.getImpl
+	    (algorithm, new MechanismMapEntry(algorithm, mechanismType),
+	    "TransformService", provider);
+
+        TransformService spi = (TransformService) objs[0];
+        spi.mechanism = mechanismType;
+        spi.algorithm = algorithm;
+        spi.provider = (Provider) objs[1];
+        return spi;
+    }
+
+    private static class MechanismMapEntry implements Map.Entry {
+	private final String mechanism;
+	private final String algorithm;
+	private final String key;
+	MechanismMapEntry(String algorithm, String mechanism) {
+	    this.algorithm = algorithm;
+	    this.mechanism = mechanism;
+	    this.key = "TransformService." + algorithm + " MechanismType";
+	}
+	public boolean equals(Object o) {
+	    if (!(o instanceof Map.Entry)) {
+		return false;
+	    }
+	    Map.Entry e = (Map.Entry) o;
+	    return (getKey()==null ? 
+		    e.getKey()==null : getKey().equals(e.getKey())) &&
+     		   (getValue()==null ?
+      		    e.getValue()==null : getValue().equals(e.getValue()));
+	}
+	public Object getKey() {
+	    return key;
+	}
+	public Object getValue() {
+	    return mechanism;
+	}
+	public Object setValue(Object value) {
+	    throw new UnsupportedOperationException();
+	}
+	public int hashCode() {
+	    return (getKey()==null ? 0 : getKey().hashCode()) ^
+     		   (getValue()==null ? 0 : getValue().hashCode());
+	}
+    }
+
+    /**
+     * Returns the mechanism type supported by this <code>TransformService</code>.
+     *
+     * @return the mechanism type
+     */
+    public final String getMechanismType() {
+	return mechanism;
+    }
+
+    /**
+     * Returns the URI of the algorithm supported by this
+     * <code>TransformService</code>.
+     *
+     * @return the algorithm URI
+     */
+    public final String getAlgorithm() {
+	return algorithm;
+    }
+
+    /**
+     * Returns the provider of this <code>TransformService</code>.
+     *
+     * @return the provider
+     */
+    public final Provider getProvider() {
+	return provider;
+    }
+
+    /**
+     * Initializes this <code>TransformService</code> with the specified 
+     * parameters.
+     *
+     * <p>If the parameters exist in XML form, the 
+     * {@link #init(XMLStructure, XMLCryptoContext)} method should be used to 
+     * initialize the <code>TransformService</code>.
+     *
+     * @param params the algorithm parameters (may be <code>null</code> if 
+     *   not required or optional)
+     * @throws InvalidAlgorithmParameterException if the specified parameters 
+     *   are invalid for this algorithm
+     */
+    public abstract void init(TransformParameterSpec params)
+	throws InvalidAlgorithmParameterException;
+
+    /**
+     * Marshals the algorithm-specific parameters. If there are no parameters
+     * to be marshalled, this method returns without throwing an exception.
+     *
+     * @param parent a mechanism-specific structure containing the parent
+     *    node that the marshalled parameters should be appended to
+     * @param context the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @throws ClassCastException if the type of <code>parent</code> or
+     *    <code>context</code> is not compatible with this
+     *    <code>TransformService</code>
+     * @throws NullPointerException if <code>parent</code> is <code>null</code>
+     * @throws MarshalException if the parameters cannot be marshalled
+     */
+    public abstract void marshalParams
+	(XMLStructure parent, XMLCryptoContext context)
+	throws MarshalException;
+
+    /**
+     * Initializes this <code>TransformService</code> with the specified 
+     * parameters and document context. 
+     *
+     * @param parent a mechanism-specific structure containing the parent
+     *    structure
+     * @param context the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @throws ClassCastException if the type of <code>parent</code> or
+     *    <code>context</code> is not compatible with this
+     *    <code>TransformService</code>
+     * @throws NullPointerException if <code>parent</code> is <code>null</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters 
+     *   are invalid for this algorithm
+     */
+    public abstract void init(XMLStructure parent, XMLCryptoContext context)
+ 	throws InvalidAlgorithmParameterException;
+}
diff --git a/src/javax/xml/crypto/dsig/XMLDSigSecurity.java b/src/javax/xml/crypto/dsig/XMLDSigSecurity.java
new file mode 100644
index 0000000..d73a83e
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLDSigSecurity.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * =========================================================================== 
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.lang.reflect.*;
+import java.security.Provider;
+import java.security.Security;
+import java.util.*;
+import java.security.NoSuchAlgorithmException;
+import javax.xml.crypto.NoSuchMechanismException;
+
+/**
+ * @author Joyce Leung
+ */
+
+final class XMLDSigSecurity {
+
+    // An element in the cache
+    private static class ProviderProperty {
+	String className;
+	Provider provider;
+    }
+
+    /**
+     * Don't let anyone instantiate this. 
+     */
+    private XMLDSigSecurity() { }                    
+
+    /*
+     * Lookup the mechanism type in our list of providers. Process
+     * each provider in priority order one at a time looking for
+     * either the direct engine property or a matching alias.
+     */
+    private static ProviderProperty getEngineClassName(String alg, 
+	Map.Entry attr, String engineType, String key, boolean mech) 
+	throws NoSuchAlgorithmException
+    {
+	// get all currently installed providers
+	Provider[] provs = Security.getProviders();
+
+        // get the implementation class from the first provider
+        // that supplies an implementation that we can load
+        boolean found = false;
+        ProviderProperty entry = null;
+        for (int i = 0; (i < provs.length) && (!found); i++) {
+            try {
+                entry = getEngineClassName
+		    (alg, attr, engineType, key, provs[i], mech);
+                found = true;
+            } catch (Exception e) {
+	        // do nothing, check the next provider
+            }
+        }
+	if (!found) {
+	    if (mech) {
+                throw new NoSuchMechanismException("Mechanism type " + alg
+					   + " not available");
+	    } else {
+                throw new NoSuchAlgorithmException("Algorithm type " + alg
+					   + " not available");
+	    }
+        }
+        return entry;
+    }
+
+    /**
+     * The parameter provider cannot be null.
+     */
+    private static ProviderProperty getEngineClassName(String alg,
+	Map.Entry attr, String engineType, String key, Provider provider, 
+	boolean mech) throws NoSuchAlgorithmException
+    {
+	String className = getProviderProperty(key, attr, provider);
+	if (className == null) {
+            // try alg as alias name
+	    String stdName = getStandardName(alg, engineType, provider);
+	    if (stdName != null) {
+                key = engineType + "." + stdName;
+	    }
+	    if ((stdName == null)
+	        || (className = getProviderProperty(key, attr, provider)) == null) {
+		if (mech) {
+	            throw new NoSuchMechanismException
+			("no such mechanism type: " + alg + " for provider " +
+			 provider.getName());
+		} else {
+	            throw new NoSuchAlgorithmException
+			("no such algorithm: " + alg + " for provider " +
+		         provider.getName());
+		}
+	    }
+        }
+        
+        ProviderProperty entry = new ProviderProperty();
+	entry.className = className;
+	entry.provider = provider;
+	return entry;
+    } 
+                                          
+    private static boolean checkSuperclass(Class subclass, Class superclass) {
+	return superclass.isAssignableFrom(subclass);
+    }
+
+    /*
+     * Returns an array of objects: the first object in the array is
+     * an instance of an implementation of the requested mechanism type
+     * and type, and the second object in the array identifies the provider
+     * of that implementation.
+     * The <code>provider</code> argument can be null, in which case all
+     * configured providers will be searched in order of preference.
+     */
+    static Object[] getImpl(String mechType, String type, Provider provider)
+	throws NoSuchAlgorithmException
+    {
+	return getImpl(mechType, null, type, provider);
+    }
+
+    static Object[] getImpl(String alg, Map.Entry attr, String type, 
+	Provider provider) throws NoSuchAlgorithmException {
+        Class typeClass = null;
+	boolean m = true;
+	if (type.equals("XMLSignatureFactory")) {
+	    typeClass = javax.xml.crypto.dsig.XMLSignatureFactory.class;
+	} else if (type.equals("KeyInfoFactory")) {
+	    typeClass = javax.xml.crypto.dsig.keyinfo.KeyInfoFactory.class;
+	} else if (type.equals("TransformService")) {
+	    typeClass = javax.xml.crypto.dsig.TransformService.class;
+	    m = false;
+	}
+	String key = type + "." + alg;
+        if (provider == null) {
+            return doGetImpl
+		(type, typeClass, 
+		 getEngineClassName(alg, attr, type, key, m), m);
+        } else {
+            return doGetImpl
+		(type, typeClass, getEngineClassName(alg, attr, type, key,
+		 provider, m), m);
+        }
+    }
+   
+    private static Object[] doGetImpl(String type, Class typeClass, 
+	ProviderProperty pp, boolean mech) throws NoSuchAlgorithmException
+    {
+        String className = pp.className;
+        String providerName = pp.provider.getName();
+
+    	try {
+            // Load the implementation class using the same class loader that
+	    // was used to load the associated provider.
+	    // In order to get the class loader of a class, the caller's class
+	    // loader must be the same as or an ancestor of the class loader
+	    // being returned.
+	    // Since java.security.Security is a system class, it can get the
+	    // class loader of any class (the system class loader is an
+	    // ancestor of all class loaders).
+	    ClassLoader cl = pp.provider.getClass().getClassLoader();
+	    Class implClass;
+	    if (cl != null) {
+		implClass = cl.loadClass(className);
+	    } else {
+		implClass = Class.forName(className);
+	    }
+
+	    if (checkSuperclass(implClass, typeClass)) {
+		return new Object[] { implClass.newInstance(), pp.provider };
+	    } else {
+		if (mech) {
+		    throw new NoSuchMechanismException
+			("class configured for " + type + ": " + className + 
+		         " not a " + type);
+		} else {
+		    throw new NoSuchAlgorithmException
+			("class configured for " + type + ": " + className + 
+		         " not a " + type);
+		}
+	    }
+	} catch (ClassNotFoundException e) {
+	    if (mech) {
+	        throw new NoSuchMechanismException
+		    ("class configured for " + type + "(provider: " + 
+	             providerName + ")" + "cannot be found.\n", e);
+	    } else {
+	        throw (NoSuchAlgorithmException) new NoSuchAlgorithmException
+		    ("class configured for " + type + "(provider: " + 
+	             providerName + ")" + "cannot be found.\n").initCause(e);
+	    }
+	} catch (InstantiationException e) {
+	    if (mech) {
+	        throw new NoSuchMechanismException
+		    ("class " + className + " configured for " + type +
+                     "(provider: " + providerName + ") cannot be " +
+                     "instantiated. ", e);
+	    } else {
+	        throw (NoSuchAlgorithmException) new NoSuchAlgorithmException
+		    ("class " + className + " configured for " + type +
+                     "(provider: " + providerName + ") cannot be " +
+                     "instantiated. ").initCause(e);
+	    }
+	} catch (IllegalAccessException e) {
+	    if (mech) {
+	        throw new NoSuchMechanismException
+		    ("class " + className + " configured for " + type +
+                     "(provider: " + providerName +
+                     ") cannot be accessed.\n", e);
+	    } else {
+	        throw (NoSuchAlgorithmException) new NoSuchAlgorithmException
+		    ("class " + className + " configured for " + type +
+                     "(provider: " + providerName +
+                     ") cannot be accessed.\n").initCause(e);
+	    }
+	}
+    }  
+    
+    /*
+     * Retrieves the property with the given key from the given provider.
+     */
+    private static String getProviderProperty(String key, Map.Entry attr, 
+	Provider prov) {
+	String prop = prov.getProperty(key);
+	if (prop == null) {
+	    // Is there a match if we do a case-insensitive property name
+	    // comparison? Let's try ...
+	    for (Enumeration e = prov.keys(); e.hasMoreElements(); ) {
+	        String matchKey = (String)e.nextElement();
+	        if (key.equalsIgnoreCase(matchKey)) {
+		    prop = prov.getProperty(matchKey);
+		    break;
+	        }
+	    }
+	}
+
+	if (prop != null && attr != null) {
+	    if (!prov.entrySet().contains(attr)) {
+		// if no attribute, assume DOM default if requested
+		if (!attr.getValue().equals("DOM") || 
+		    prov.get(attr.getKey()) != null) {
+		    prop = null;
+		}
+	    }
+	}
+
+	return prop;
+    }
+
+    /*
+     * Converts an alias name to the standard name.
+     */
+    private static String getStandardName(String alias, String engineType,
+					  Provider prov) {
+	return getProviderProperty("Alg.Alias." + engineType + "." + alias,
+				   null, prov);
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/XMLObject.java b/src/javax/xml/crypto/dsig/XMLObject.java
new file mode 100644
index 0000000..f59bd8c
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLObject.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * =========================================================================== 
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.util.List;
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * A representation of the XML <code>Object</code> element as defined in
+ * the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * An <code>XMLObject</code> may contain any data and may include optional 
+ * MIME type, ID, and encoding attributes. The XML Schema Definition is 
+ * defined as:
+ *
+ * <pre><code>
+ * &lt;element name="Object" type="ds:ObjectType"/&gt; 
+ * &lt;complexType name="ObjectType" mixed="true"&gt;
+ *   &lt;sequence minOccurs="0" maxOccurs="unbounded"&gt;
+ *     &lt;any namespace="##any" processContents="lax"/&gt;
+ *   &lt;/sequence&gt;
+ *   &lt;attribute name="Id" type="ID" use="optional"/&gt; 
+ *   &lt;attribute name="MimeType" type="string" use="optional"/&gt;
+ *   &lt;attribute name="Encoding" type="anyURI" use="optional"/&gt; 
+ * &lt;/complexType&gt;
+ * </code></pre>
+ *
+ * A <code>XMLObject</code> instance may be created by invoking the
+ * {@link XMLSignatureFactory#newXMLObject newXMLObject} method of the
+ * {@link XMLSignatureFactory} class; for example:
+ *
+ * <pre>
+ *   XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
+ *   List content = Collections.singletonList(fac.newManifest(references)));
+ *   XMLObject object = factory.newXMLObject(content, "object-1", null, null);
+ * </pre>
+ *
+ * <p>Note that this class is named <code>XMLObject</code> rather than
+ * <code>Object</code> to avoid naming clashes with the existing 
+ * {@link java.lang.Object java.lang.Object} class.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @author Joyce L. Leung
+ * @see XMLSignatureFactory#newXMLObject(List, String, String, String)
+ */
+public interface XMLObject extends XMLStructure {
+
+    /**
+     * URI that identifies the <code>Object</code> element (this can be 
+     * specified as the value of the <code>type</code> parameter of the 
+     * {@link Reference} class to identify the referent's type).
+     */
+    final static String TYPE = "http://www.w3.org/2000/09/xmldsig#Object";
+
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of {@link XMLStructure}s contained in this <code>XMLObject</code>,
+     * which represent elements from any namespace. 
+     *
+     *<p>If there is a public subclass representing the type of 
+     * <code>XMLStructure</code>, it is returned as an instance of that class
+     * (ex: a <code>SignatureProperties</code> element would be returned
+     * as an instance of {@link javax.xml.crypto.dsig.SignatureProperties}).
+     *
+     * @return an unmodifiable list of <code>XMLStructure</code>s (may be empty 
+     *    but never <code>null</code>)
+     */
+    List getContent();
+
+    /**
+     * Returns the Id of this <code>XMLObject</code>.
+     * 
+     * @return the Id (or <code>null</code> if not specified)
+     */
+    String getId();
+    
+    /**
+     * Returns the mime type of this <code>XMLObject</code>. The
+     * mime type is an optional attribute which describes the data within this
+     * <code>XMLObject</code> (independent of its encoding).
+     *
+     * @return the mime type (or <code>null</code> if not specified)
+     */
+    String getMimeType();
+    
+    /**
+     * Returns the encoding URI of this <code>XMLObject</code>. The encoding
+     * URI identifies the method by which the object is encoded.
+     * 
+     * @return the encoding URI (or <code>null</code> if not specified)
+     */
+    String getEncoding();
+}
diff --git a/src/javax/xml/crypto/dsig/XMLSignContext.java b/src/javax/xml/crypto/dsig/XMLSignContext.java
new file mode 100644
index 0000000..7f8c24d
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLSignContext.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.XMLCryptoContext;
+
+/**
+ * Contains context information for generating XML Signatures. This interface
+ * is primarily intended for type-safety.
+ *
+ * <p>Note that <code>XMLSignContext</code> instances can contain
+ * information and state specific to the XML signature structure it is
+ * used with. The results are unpredictable if an
+ * <code>XMLSignContext</code> is used with different signature structures
+ * (for example, you should not use the same <code>XMLSignContext</code>
+ * instance to sign two different {@link XMLSignature} objects).
+ * <p>
+ * <b><a name="Supported Properties"></a>Supported Properties</b>
+ * <p>The following properties can be set using the 
+ * {@link #setProperty setProperty} method.
+ * <ul>
+ *   <li><code>javax.xml.crypto.dsig.cacheReference</code>: value must be a
+ *      {@link Boolean}. This property controls whether or not the digested
+ *      {@link Reference} objects will cache the dereferenced content and 
+ *      pre-digested input for subsequent retrieval via the
+ *      {@link Reference#getDereferencedData Reference.getDereferencedData} and
+ *	{@link Reference#getDigestInputStream Reference.getDigestInputStream}
+ *      methods. The default value if not specified is 
+ *	<code>Boolean.FALSE</code>.
+ * </ul>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignature#sign(XMLSignContext)
+ */
+public interface XMLSignContext extends XMLCryptoContext {}
diff --git a/src/javax/xml/crypto/dsig/XMLSignature.java b/src/javax/xml/crypto/dsig/XMLSignature.java
new file mode 100644
index 0000000..5a12e28
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLSignature.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * =========================================================================== 
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.KeySelectorResult;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import java.security.Signature;
+import java.util.List;
+
+/**
+ * A representation of the XML <code>Signature</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * This class contains methods for signing and validating XML signatures
+ * with behavior as defined by the W3C specification. The XML Schema Definition 
+ * is defined as:
+ * <pre><code>
+ * &lt;element name="Signature" type="ds:SignatureType"/&gt;
+ * &lt;complexType name="SignatureType"&gt;
+ *    &lt;sequence&gt; 
+ *      &lt;element ref="ds:SignedInfo"/&gt; 
+ *      &lt;element ref="ds:SignatureValue"/&gt; 
+ *      &lt;element ref="ds:KeyInfo" minOccurs="0"/&gt; 
+ *      &lt;element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/&gt; 
+ *    &lt;/sequence&gt;  
+ *    &lt;attribute name="Id" type="ID" use="optional"/&gt;
+ * &lt;/complexType&gt;
+ * </code></pre>
+ * <p>
+ * An <code>XMLSignature</code> instance may be created by invoking one of the
+ * {@link XMLSignatureFactory#newXMLSignature newXMLSignature} methods of the
+ * {@link XMLSignatureFactory} class.
+ *
+ * <p>If the contents of the underlying document containing the 
+ * <code>XMLSignature</code> are subsequently modified, the behavior is
+ * undefined.
+ *
+ * <p>Note that this class is named <code>XMLSignature</code> rather than
+ * <code>Signature</code> to avoid naming clashes with the existing
+ * {@link Signature java.security.Signature} class.
+ *
+ * @see XMLSignatureFactory#newXMLSignature(SignedInfo, KeyInfo)
+ * @see XMLSignatureFactory#newXMLSignature(SignedInfo, KeyInfo, List, String, String)
+ * @author Joyce L. Leung
+ * @author Sean Mullan
+ * @author Erwin van der Koogh
+ * @author JSR 105 Expert Group
+ */
+public interface XMLSignature extends XMLStructure {
+
+    /**
+     * The XML Namespace URI of the W3C Recommendation for XML-Signature
+     * Syntax and Processing.
+     */
+    final static String XMLNS = "http://www.w3.org/2000/09/xmldsig#";
+
+    /**
+     * Validates the signature according to the 
+     * <a href="http://www.w3.org/TR/xmldsig-core/#sec-CoreValidation">
+     * core validation processing rules</a>. This method validates the 
+     * signature using the existing state, it does not unmarshal and 
+     * reinitialize the contents of the <code>XMLSignature</code> using the 
+     * location information specified in the context.  
+     *
+     * <p>This method only validates the signature the first time it is 
+     * invoked. On subsequent invocations, it returns a cached result.
+     *
+     * @param validateContext the validating context
+     * @return <code>true</code> if the signature passed core validation,
+     *    otherwise <code>false</code>
+     * @throws ClassCastException if the type of <code>validateContext</code>
+     *    is not compatible with this <code>XMLSignature</code>
+     * @throws NullPointerException if <code>validateContext</code> is 
+     *    <code>null</code>
+     * @throws XMLSignatureException if an unexpected error occurs during 
+     *    validation that prevented the validation operation from completing
+     */
+    boolean validate(XMLValidateContext validateContext) 
+	throws XMLSignatureException;
+
+    /**
+     * Returns the key info of this <code>XMLSignature</code>.
+     *
+     * @return the key info (may be <code>null</code> if not specified)
+     */
+    KeyInfo getKeyInfo();
+
+    /**
+     * Returns the signed info of this <code>XMLSignature</code>.
+     *
+     * @return the signed info (never <code>null</code>)
+     */
+    SignedInfo getSignedInfo();
+    
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable
+     * list} of {@link XMLObject}s contained in this <code>XMLSignature</code>. 
+     *
+     * @return an unmodifiable list of <code>XMLObject</code>s (may be empty 
+     *    but never <code>null</code>)
+     */
+    List getObjects();
+
+    /**
+     * Returns the optional Id of this <code>XMLSignature</code>.
+     *
+     * @return the Id (may be <code>null</code> if not specified)
+     */
+    String getId();
+      
+    /**
+     * Returns the signature value of this <code>XMLSignature</code>.
+     *
+     * @return the signature value 
+     */
+    SignatureValue getSignatureValue();
+
+    /**
+     * Signs this <code>XMLSignature</code>.
+     *
+     * <p>If this method throws an exception, this <code>XMLSignature</code> and
+     * the <code>signContext</code> parameter will be left in the state that 
+     * it was in prior to the invocation.
+     *
+     * @param signContext the signing context
+     * @throws ClassCastException if the type of <code>signContext</code> is
+     *    not compatible with this <code>XMLSignature</code>
+     * @throws NullPointerException if <code>signContext</code> is 
+     *    <code>null</code>
+     * @throws MarshalException if an exception occurs while marshalling
+     * @throws XMLSignatureException if an unexpected exception occurs while
+     *    generating the signature
+     */
+    void sign(XMLSignContext signContext) throws MarshalException, 
+	XMLSignatureException;
+
+    /**
+     * Returns the result of the {@link KeySelector}, if specified, after
+     * this <code>XMLSignature</code> has been signed or validated.
+     *
+     * @return the key selector result, or <code>null</code> if a key
+     *	  selector has not been specified or this <code>XMLSignature</code>
+     *	  has not been signed or validated
+     */
+    KeySelectorResult getKeySelectorResult();
+
+    /**
+     * A representation of the XML <code>SignatureValue</code> element as 
+     * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+     * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+     * The XML Schema Definition is defined as:
+     * <p>
+     * <pre>
+     *   &lt;element name="SignatureValue" type="ds:SignatureValueType"/&gt;
+     *     &lt;complexType name="SignatureValueType"&gt;
+     *       &lt;simpleContent&gt;
+     *         &lt;extension base="base64Binary"&gt;
+     *           &lt;attribute name="Id" type="ID" use="optional"/&gt;
+     *         &lt;/extension&gt;
+     *       &lt;/simpleContent&gt;
+     *     &lt;/complexType&gt;
+     * </pre>
+     *
+     * @author Sean Mullan
+     * @author JSR 105 Expert Group
+     */
+    public interface SignatureValue extends XMLStructure {
+        /**
+         * Returns the optional <code>Id</code> attribute of this
+         * <code>SignatureValue</code>, which permits this element to be
+         * referenced from elsewhere.
+         *
+         * @return the <code>Id</code> attribute (may be <code>null</code> if 
+	 *    not specified)
+         */
+        String getId();
+
+        /**
+         * Returns the signature value of this <code>SignatureValue</code>.
+         *
+         * @return the signature value (may be <code>null</code> if the
+         *    <code>XMLSignature</code> has not been signed yet). Each 
+	 *    invocation of this method returns a new clone of the array to 
+	 *    prevent subsequent modification.
+         */
+        byte[] getValue();
+
+        /**
+         * Validates the signature value. This method performs a
+         * cryptographic validation of the signature calculated over the
+         * <code>SignedInfo</code> of the <code>XMLSignature</code>.
+         *
+         * <p>This method only validates the signature the first
+         * time it is invoked. On subsequent invocations, it returns a cached
+         * result.
+         *
+         * @return <code>true</code> if the signature was
+         *    validated successfully; <code>false</code> otherwise
+         * @param validateContext the validating context
+         * @throws NullPointerException if <code>validateContext</code> is
+         *    <code>null</code>
+         * @throws XMLSignatureException if an unexpected exception occurs while
+         *    validating the signature
+         */
+        boolean validate(XMLValidateContext validateContext)
+            throws XMLSignatureException;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/XMLSignatureException.java b/src/javax/xml/crypto/dsig/XMLSignatureException.java
new file mode 100644
index 0000000..b5749a7
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLSignatureException.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+ * Indicates an exceptional condition that occured during the XML
+ * signature generation or validation process.
+ *
+ * <p>An <code>XMLSignatureException</code> can contain a cause: another 
+ * throwable that caused this <code>XMLSignatureException</code> to get thrown. 
+ */
+public class XMLSignatureException extends Exception {
+
+    private static final long serialVersionUID = -3438102491013869995L;
+
+    /**
+     * The throwable that caused this exception to get thrown, or null if this
+     * exception was not caused by another throwable or if the causative
+     * throwable is unknown. 
+     *
+     * @serial
+     */
+    private Throwable cause;
+
+    /**
+     * Constructs a new <code>XMLSignatureException</code> with 
+     * <code>null</code> as its detail message.
+     */
+    public XMLSignatureException() {
+        super();
+    }
+
+    /**
+     * Constructs a new <code>XMLSignatureException</code> with the specified 
+     * detail message. 
+     *
+     * @param message the detail message
+     */
+    public XMLSignatureException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new <code>XMLSignatureException</code> with the 
+     * specified detail message and cause.  
+     * <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message 
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *	      indicates that the cause is nonexistent or unknown.)
+     */
+    public XMLSignatureException(String message, Throwable cause) {
+        super(message);
+        this.cause = cause;
+    }
+
+    /**
+     * Constructs a new <code>XMLSignatureException</code> with the specified 
+     * cause and a detail message of 
+     * <code>(cause==null ? null : cause.toString())</code>
+     * (which typically contains the class and detail message of 
+     * <code>cause</code>).
+     *
+     * @param cause the cause (A <tt>null</tt> value is permitted, and 
+     *        indicates that the cause is nonexistent or unknown.)
+     */
+    public XMLSignatureException(Throwable cause) {
+        super(cause==null ? null : cause.toString());
+        this.cause = cause;
+    }
+
+    /**
+     * Returns the cause of this <code>XMLSignatureException</code> or 
+     * <code>null</code> if the cause is nonexistent or unknown.  (The 
+     * cause is the throwable that caused this 
+     * <code>XMLSignatureException</code> to get thrown.)
+     *
+     * @return the cause of this <code>XMLSignatureException</code> or 
+     *         <code>null</code> if the cause is nonexistent or unknown.
+     */
+    public Throwable getCause() {
+        return cause;
+    }
+
+    /**
+     * Prints this <code>XMLSignatureException</code>, its backtrace and
+     * the cause's backtrace to the standard error stream.
+     */
+    public void printStackTrace() {
+	super.printStackTrace();
+	if (cause != null) {
+	    cause.printStackTrace();
+	}
+    }
+
+    /**
+     * Prints this <code>XMLSignatureException</code>, its backtrace and
+     * the cause's backtrace to the specified print stream.
+     *
+     * @param s <code>PrintStream</code> to use for output
+     */
+    public void printStackTrace(PrintStream s) {
+	super.printStackTrace(s);
+	if (cause != null) {
+	    cause.printStackTrace(s);
+	}
+    }
+
+    /**
+     * Prints this <code>XMLSignatureException</code>, its backtrace and
+     * the cause's backtrace to the specified print writer.
+     *
+     * @param s <code>PrintWriter</code> to use for output
+     */
+    public void printStackTrace(PrintWriter s) {
+        super.printStackTrace(s);
+	if (cause != null) {
+	    cause.printStackTrace(s);
+	}
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/XMLSignatureFactory.java b/src/javax/xml/crypto/dsig/XMLSignatureFactory.java
new file mode 100644
index 0000000..47cd923
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLSignatureFactory.java
@@ -0,0 +1,777 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.NoSuchMechanismException;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dom.DOMStructure;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+import javax.xml.crypto.dsig.spec.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Provider;
+import java.security.Security;
+import java.util.List;
+
+/**
+ * A factory for creating {@link XMLSignature} objects from scratch or 
+ * for unmarshalling an <code>XMLSignature</code> object from a corresponding
+ * XML representation.
+ *
+ * <h2>XMLSignatureFactory Type</h2>
+ *
+ * <p>Each instance of <code>XMLSignatureFactory</code> supports a specific
+ * XML mechanism type. To create an <code>XMLSignatureFactory</code>, call one
+ * of the static {@link #getInstance getInstance} methods, passing in the XML 
+ * mechanism type desired, for example:
+ *
+ * <blockquote><code>
+ * XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
+ * </code></blockquote>
+ *
+ * <p>The objects that this factory produces will be based
+ * on DOM and abide by the DOM interoperability requirements as defined in the
+ * <a href="../../../../overview-summary.html#DOM Mechanism Requirements">DOM
+ * Mechanism Requirements</a> section of the API overview. See the
+ * <a href="../../../../overview-summary.html#Service Provider">Service 
+ * Providers</a> section of the API overview for a list of standard mechanism 
+ * types.
+ *
+ * <p><code>XMLSignatureFactory</code> implementations are registered and loaded
+ * using the {@link java.security.Provider} mechanism.  
+ * For example, a service provider that supports the
+ * DOM mechanism would be specified in the <code>Provider</code> subclass as:
+ * <pre>
+ *     put("XMLSignatureFactory.DOM", "org.example.DOMXMLSignatureFactory");
+ * </pre>
+ *
+ * <p>An implementation MUST minimally support the default mechanism type: DOM. 
+ *
+ * <p>Note that a caller must use the same <code>XMLSignatureFactory</code>
+ * instance to create the <code>XMLStructure</code>s of a particular 
+ * <code>XMLSignature</code> that is to be generated. The behavior is
+ * undefined if <code>XMLStructure</code>s from different providers or 
+ * different mechanism types are used together.
+ *
+ * <p>Also, the <code>XMLStructure</code>s that are created by this factory
+ * may contain state specific to the <code>XMLSignature</code> and are not
+ * intended to be reusable.
+ *
+ * <h2>Creating XMLSignatures from scratch</h2>
+ *
+ * <p>Once the <code>XMLSignatureFactory</code> has been created, objects
+ * can be instantiated by calling the appropriate method. For example, a
+ * {@link Reference} instance may be created by invoking one of the
+ * {@link #newReference newReference} methods.
+ *
+ * <h2>Unmarshalling XMLSignatures from XML</h2>
+ *
+ * <p>Alternatively, an <code>XMLSignature</code> may be created from an
+ * existing XML representation by invoking the {@link #unmarshalXMLSignature
+ * unmarshalXMLSignature} method and passing it a mechanism-specific 
+ * {@link XMLValidateContext} instance containing the XML content:
+ *
+ * <pre>
+ * DOMValidateContext context = new DOMValidateContext(key, signatureElement);
+ * XMLSignature signature = factory.unmarshalXMLSignature(context);
+ * </pre>
+ *
+ * Each <code>XMLSignatureFactory</code> must support the required 
+ * <code>XMLValidateContext</code> types for that factory type, but may support 
+ * others. A DOM <code>XMLSignatureFactory</code> must support {@link 
+ * DOMValidateContext} objects.
+ * 
+ * <h2>Signing and marshalling XMLSignatures to XML</h2>
+ *
+ * Each <code>XMLSignature</code> created by the factory can also be 
+ * marshalled to an XML representation and signed, by invoking the 
+ * {@link XMLSignature#sign sign} method of the 
+ * {@link XMLSignature} object and passing it a mechanism-specific 
+ * {@link XMLSignContext} object containing the signing key and 
+ * marshalling parameters (see {@link DOMSignContext}).
+ * For example: 
+ *
+ * <pre>
+ *    DOMSignContext context = new DOMSignContext(privateKey, document);
+ *    signature.sign(context);
+ * </pre>
+ *
+ * <b>Concurrent Access</b>
+ * <p>The static methods of this class are guaranteed to be thread-safe. 
+ * Multiple threads may concurrently invoke the static methods defined in this 
+ * class with no ill effects. 
+ *
+ * <p>However, this is not true for the non-static methods defined by this 
+ * class. Unless otherwise documented by a specific provider, threads that 
+ * need to access a single <code>XMLSignatureFactory</code> instance 
+ * concurrently should synchronize amongst themselves and provide the 
+ * necessary locking. Multiple threads each manipulating a different 
+ * <code>XMLSignatureFactory</code> instance need not synchronize. 
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public abstract class XMLSignatureFactory {
+
+    private String mechanismType;
+    private Provider provider;
+
+    /**
+     * Default constructor, for invocation by subclasses.
+     */
+    protected XMLSignatureFactory() {}
+
+    /**
+     * Returns an <code>XMLSignatureFactory</code> that supports the
+     * specified XML processing mechanism and representation type (ex: "DOM").
+     *
+     * <p>This method uses the standard JCA provider lookup mechanism to
+     * locate and instantiate an <code>XMLSignatureFactory</code> 
+     * implementation of the desired mechanism type. It traverses the list of 
+     * registered security <code>Provider</code>s, starting with the most 
+     * preferred <code>Provider</code>.  A new <code>XMLSignatureFactory</code> 
+     * object from the first <code>Provider</code> that supports the specified 
+     * mechanism is returned. 
+     *
+     * <p>Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method. 
+     *
+     * @param mechanismType the type of the XML processing mechanism and
+     *    representation. See the <a 
+     *    href="../../../../overview-summary.html#Service Provider">Service 
+     *    Providers</a> section of the API overview for a list of standard 
+     *    mechanism types.
+     * @return a new <code>XMLSignatureFactory</code>
+     * @throws NullPointerException if <code>mechanismType</code> is 
+     *    <code>null</code>
+     * @throws NoSuchMechanismException if no <code>Provider</code> supports an 
+     *    <code>XMLSignatureFactory</code> implementation for the specified 
+     *    mechanism
+     * @see Provider
+     */
+    public static XMLSignatureFactory getInstance(String mechanismType) {
+	if (mechanismType == null) {
+	    throw new NullPointerException("mechanismType cannot be null");
+	}
+
+	return findInstance(mechanismType, null);
+    }
+
+    private static XMLSignatureFactory findInstance(String mechanismType,
+	Provider provider) {
+
+	Object[] objs = null;
+	try {
+	    objs = (Object[]) XMLDSigSecurity.getImpl
+		(mechanismType, "XMLSignatureFactory", provider);
+	} catch (NoSuchAlgorithmException nsae) {
+	    throw new NoSuchMechanismException
+		("Cannot find " + mechanismType + " mechanism type", nsae);
+	}
+
+	XMLSignatureFactory factory = (XMLSignatureFactory) objs[0];
+	factory.mechanismType = mechanismType;
+	factory.provider = (Provider) objs[1];
+	return factory;
+    }
+
+    /**
+     * Returns an <code>XMLSignatureFactory</code> that supports the
+     * requested XML processing mechanism and representation type (ex: "DOM"),
+     * as supplied by the specified provider. Note that the specified 
+     * <code>Provider</code> object does not have to be registered in the 
+     * provider list. 
+     *
+     * @param mechanismType the type of the XML processing mechanism and
+     *    representation. See the <a 
+     *    href="../../../../overview-summary.html#Service Provider">Service 
+     *    Providers</a> section of the API overview for a list of standard 
+     *    mechanism types.
+     * @param provider the <code>Provider</code> object
+     * @return a new <code>XMLSignatureFactory</code>
+     * @throws NullPointerException if <code>provider</code> or 
+     *    <code>mechanismType</code> is <code>null</code>
+     * @throws NoSuchMechanismException if an <code>XMLSignatureFactory</code> 
+     *   implementation for the specified mechanism is not available 
+     *   from the specified <code>Provider</code> object
+     * @see Provider
+     */
+    public static XMLSignatureFactory getInstance(String mechanismType,
+	Provider provider) { 
+	if (mechanismType == null) {
+	    throw new NullPointerException("mechanismType cannot be null");
+	} else if (provider == null) {
+	    throw new NullPointerException("provider cannot be null");
+	}
+
+	return findInstance(mechanismType, provider);
+    }    
+
+    /**
+     * Returns an <code>XMLSignatureFactory</code> that supports the
+     * requested XML processing mechanism and representation type (ex: "DOM"),
+     * as supplied by the specified provider. The specified provider must be 
+     * registered in the security provider list. 
+     *
+     * <p>Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method.
+     *
+     * @param mechanismType the type of the XML processing mechanism and
+     *    representation. See the <a 
+     *    href="../../../../overview-summary.html#Service Provider">Service 
+     *    Providers</a> section of the API overview for a list of standard 
+     *    mechanism types.
+     * @param provider the string name of the provider
+     * @return a new <code>XMLSignatureFactory</code>
+     * @throws NoSuchProviderException if the specified provider is not 
+     *    registered in the security provider list
+     * @throws NullPointerException if <code>provider</code> or 
+     *    <code>mechanismType</code> is <code>null</code>
+     * @throws NoSuchMechanismException if an <code>XMLSignatureFactory</code> 
+     *    implementation for the specified mechanism is not 
+     *    available from the specified provider
+     * @see Provider
+     */
+    public static XMLSignatureFactory getInstance(String mechanismType,
+	String provider) throws NoSuchProviderException {
+	if (mechanismType == null) {
+	    throw new NullPointerException("mechanismType cannot be null");
+	} else if (provider == null) {
+	    throw new NullPointerException("provider cannot be null");
+	}
+
+	Provider prov = Security.getProvider(provider);
+	if (prov == null) {
+	    throw new NoSuchProviderException("cannot find provider named "
+		+ provider);
+	}
+
+	return findInstance(mechanismType, prov);
+    }
+
+    /**
+     * Returns an <code>XMLSignatureFactory</code> that supports the
+     * default XML processing mechanism and representation type ("DOM").
+     *
+     * <p>This method uses the standard JCA provider lookup mechanism to
+     * locate and instantiate an <code>XMLSignatureFactory</code> 
+     * implementation of the default mechanism type. It traverses the list of 
+     * registered security <code>Provider</code>s, starting with the most 
+     * preferred <code>Provider</code>.  A new <code>XMLSignatureFactory</code> 
+     * object from the first <code>Provider</code> that supports the DOM 
+     * mechanism is returned. 
+     *
+     * <p>Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method. 
+     *
+     * @return a new <code>XMLSignatureFactory</code>
+     * @throws NoSuchMechanismException if no <code>Provider</code> supports an 
+     *    <code>XMLSignatureFactory</code> implementation for the DOM 
+     *    mechanism
+     * @see Provider
+     */
+    public static XMLSignatureFactory getInstance() {
+	return getInstance("DOM");
+    }
+
+    /**
+     * Returns the type of the XML processing mechanism and representation
+     * supported by this <code>XMLSignatureFactory</code> (ex: "DOM").
+     *
+     * @return the XML processing mechanism type supported by this
+     *    <code>XMLSignatureFactory</code>
+     */
+    public final String getMechanismType() {
+        return mechanismType;
+    }
+
+    /**
+     * Returns the provider of this <code>XMLSignatureFactory</code>.
+     *
+     * @return the provider of this <code>XMLSignatureFactory</code>
+     */
+    public final Provider getProvider() {
+	return provider;
+    }
+
+    /**
+     * Creates an <code>XMLSignature</code> and initializes it with the contents
+     * of the specified <code>SignedInfo</code> and <code>KeyInfo</code> 
+     * objects.
+     *
+     * @param si the signed info
+     * @param ki the key info (may be <code>null</code>)
+     * @return an <code>XMLSignature</code>
+     * @throws NullPointerException if <code>si</code> is <code>null</code>
+     */
+    public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki);
+
+    /**
+     * Creates an <code>XMLSignature</code> and initializes it with the
+     * specified parameters.
+     *
+     * @param si the signed info
+     * @param ki the key info (may be <code>null</code>)
+     * @param objects a list of {@link XMLObject}s (may be empty or
+     *    <code>null</code>)
+     * @param id the Id (may be <code>null</code>)
+     * @param signatureValueId the SignatureValue Id (may be <code>null</code>)
+     * @return an <code>XMLSignature</code>
+     * @throws NullPointerException if <code>si</code> is <code>null</code>
+     * @throws ClassCastException if any of the <code>objects</code> are not of
+     *    type <code>XMLObject</code> 
+     */ 
+    public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki,
+	List objects, String id, String signatureValueId);
+
+    /**
+     * Creates a <code>Reference</code> with the specified URI and digest
+     * method.
+     *
+     * @param uri the reference URI (may be <code>null</code>)
+     * @param dm the digest method
+     * @return a <code>Reference</code>
+     * @throws IllegalArgumentException if <code>uri</code> is not RFC 2396
+     *    compliant
+     * @throws NullPointerException if <code>dm</code> is <code>null</code>
+     */
+    public abstract Reference newReference(String uri, DigestMethod dm);
+
+    /**
+     * Creates a <code>Reference</code> with the specified parameters.
+     *
+     * @param uri the reference URI (may be <code>null</code>)
+     * @param dm the digest method
+     * @param transforms a list of {@link Transform}s. The list is defensively 
+     *    copied to protect against subsequent modification. May be 
+     *    <code>null</code> or empty.
+     * @param type the reference type, as a URI (may be <code>null</code>)
+     * @param id the reference ID (may be <code>null</code>)
+     * @return a <code>Reference</code>
+     * @throws ClassCastException if any of the <code>transforms</code> are 
+     *    not of type <code>Transform</code>
+     * @throws IllegalArgumentException if <code>uri</code> is not RFC 2396
+     *    compliant
+     * @throws NullPointerException if <code>dm</code> is <code>null</code>
+     */
+    public abstract Reference newReference(String uri, DigestMethod dm, 
+	List transforms, String type, String id);
+
+    /**
+     * Creates a <code>Reference</code> with the specified parameters and
+     * pre-calculated digest value. 
+     *
+     * <p>This method is useful when the digest value of a 
+     * <code>Reference</code> has been previously computed. See for example,
+     * the 
+     * <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=dss">
+     * OASIS-DSS (Digital Signature Services)</a> specification.
+     * 
+     * @param uri the reference URI (may be <code>null</code>)
+     * @param dm the digest method
+     * @param transforms a list of {@link Transform}s. The list is defensively 
+     *    copied to protect against subsequent modification. May be 
+     *    <code>null</code> or empty.
+     * @param type the reference type, as a URI (may be <code>null</code>)
+     * @param id the reference ID (may be <code>null</code>)
+     * @param digestValue the digest value. The array is cloned to protect
+     *    against subsequent modification.
+     * @return a <code>Reference</code>
+     * @throws ClassCastException if any of the <code>transforms</code> are 
+     *    not of type <code>Transform</code>
+     * @throws IllegalArgumentException if <code>uri</code> is not RFC 2396
+     *    compliant
+     * @throws NullPointerException if <code>dm</code> or 
+     *    <code>digestValue</code> is <code>null</code>
+     */
+    public abstract Reference newReference(String uri, DigestMethod dm, 
+	List transforms, String type, String id, byte[] digestValue);
+
+    /**
+     * Creates a <code>Reference</code> with the specified parameters.
+     *
+     * <p>This method is useful when a list of transforms have already been
+     * applied to the <code>Reference</code>. See for example,
+     * the 
+     * <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=dss">
+     * OASIS-DSS (Digital Signature Services)</a> specification.
+     *
+     * <p>When an <code>XMLSignature</code> containing this reference is 
+     * generated, the specified <code>transforms</code> (if non-null) are 
+     * applied to the specified <code>result</code>. The 
+     * <code>Transforms</code> element of the resulting <code>Reference</code> 
+     * element is set to the concatenation of the 
+     * <code>appliedTransforms</code> and <code>transforms</code>.
+     * 
+     * @param uri the reference URI (may be <code>null</code>)
+     * @param dm the digest method
+     * @param appliedTransforms a list of {@link Transform}s that have 
+     *    already been applied. The list is defensively 
+     *    copied to protect against subsequent modification. The list must 
+     *    contain at least one entry.
+     * @param result the result of processing the sequence of 
+     *    <code>appliedTransforms</code>
+     * @param transforms a list of {@link Transform}s that are to be applied
+     *    when generating the signature. The list is defensively copied to 
+     *    protect against subsequent modification. May be <code>null</code> 
+     *    or empty.
+     * @param type the reference type, as a URI (may be <code>null</code>)
+     * @param id the reference ID (may be <code>null</code>)
+     * @return a <code>Reference</code>
+     * @throws ClassCastException if any of the transforms (in either list) 
+     *    are not of type <code>Transform</code>
+     * @throws IllegalArgumentException if <code>uri</code> is not RFC 2396
+     *    compliant or <code>appliedTransforms</code> is empty
+     * @throws NullPointerException if <code>dm</code>, 
+     *    <code>appliedTransforms</code> or <code>result</code> is 
+     *    <code>null</code>
+     */
+    public abstract Reference newReference(String uri, DigestMethod dm, 
+	List appliedTransforms, Data result, List transforms, String type, 
+	String id);
+
+    /**
+     * Creates a <code>SignedInfo</code> with the specified canonicalization
+     * and signature methods, and list of one or more references. 
+     *
+     * @param cm the canonicalization method
+     * @param sm the signature method
+     * @param references a list of one or more {@link Reference}s. The list is
+     *    defensively copied to protect against subsequent modification.
+     * @return a <code>SignedInfo</code>
+     * @throws ClassCastException if any of the references are not of
+     *    type <code>Reference</code> 
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws NullPointerException if any of the parameters
+     *    are <code>null</code>
+     */
+    public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm,
+	SignatureMethod sm, List references);
+
+    /**
+     * Creates a <code>SignedInfo</code> with the specified parameters.
+     *
+     * @param cm the canonicalization method
+     * @param sm the signature method
+     * @param references a list of one or more {@link Reference}s. The list is
+     *    defensively copied to protect against subsequent modification.
+     * @param id the id (may be <code>null</code>)
+     * @return a <code>SignedInfo</code>
+     * @throws ClassCastException if any of the references are not of
+     *    type <code>Reference</code> 
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws NullPointerException if <code>cm</code>, <code>sm</code>, or
+     *    <code>references</code> are <code>null</code>
+     */
+    public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm,
+	SignatureMethod sm, List references, String id);
+
+    // Object factory methods
+    /**
+     * Creates an <code>XMLObject</code> from the specified parameters.
+     *
+     * @param content a list of {@link XMLStructure}s. The list
+     *    is defensively copied to protect against subsequent modification.
+     *    May be <code>null</code> or empty.
+     * @param id the Id (may be <code>null</code>)
+     * @param mimeType the mime type (may be <code>null</code>)
+     * @param encoding the encoding (may be <code>null</code>)
+     * @return an <code>XMLObject</code>
+     * @throws ClassCastException if <code>content</code> contains any 
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public abstract XMLObject newXMLObject(List content, String id, 
+	String mimeType, String encoding);
+
+    /**
+     * Creates a <code>Manifest</code> containing the specified 
+     * list of {@link Reference}s. 
+     *
+     * @param references a list of one or more <code>Reference</code>s. The list
+     *    is defensively copied to protect against subsequent modification.
+     * @return a <code>Manifest</code>
+     * @throws NullPointerException if <code>references</code> is 
+     *    <code>null</code>
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws ClassCastException if <code>references</code> contains any 
+     *    entries that are not of type {@link Reference}
+     */
+    public abstract Manifest newManifest(List references);
+
+    /**
+     * Creates a <code>Manifest</code> containing the specified 
+     * list of {@link Reference}s and optional id. 
+     *
+     * @param references a list of one or more <code>Reference</code>s. The list
+     *    is defensively copied to protect against subsequent modification.
+     * @param id the id (may be <code>null</code>)
+     * @return a <code>Manifest</code>
+     * @throws NullPointerException if <code>references</code> is 
+     *    <code>null</code>
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws ClassCastException if <code>references</code> contains any 
+     *    entries that are not of type {@link Reference}
+     */
+    public abstract Manifest newManifest(List references, String id);
+
+    /**
+     * Creates a <code>SignatureProperty</code> containing the specified 
+     * list of {@link XMLStructure}s, target URI and optional id. 
+     *
+     * @param content a list of one or more <code>XMLStructure</code>s. The list
+     *    is defensively copied to protect against subsequent modification.
+     * @param target the target URI of the Signature that this property applies 
+     *    to
+     * @param id the id (may be <code>null</code>)
+     * @return a <code>SignatureProperty</code>
+     * @throws NullPointerException if <code>content</code> or 
+     *    <code>target</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>content</code> is empty
+     * @throws ClassCastException if <code>content</code> contains any 
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public abstract SignatureProperty newSignatureProperty
+	(List content, String target, String id);
+
+    /**
+     * Creates a <code>SignatureProperties</code> containing the specified 
+     * list of {@link SignatureProperty}s and optional id. 
+     *
+     * @param properties a list of one or more <code>SignatureProperty</code>s. 
+     *    The list is defensively copied to protect against subsequent 
+     *    modification.
+     * @param id the id (may be <code>null</code>)
+     * @return a <code>SignatureProperties</code>
+     * @throws NullPointerException if <code>properties</code>
+     *    is <code>null</code>
+     * @throws IllegalArgumentException if <code>properties</code> is empty
+     * @throws ClassCastException if <code>properties</code> contains any 
+     *    entries that are not of type {@link SignatureProperty}
+     */
+    public abstract SignatureProperties newSignatureProperties
+	(List properties, String id);
+
+    // Algorithm factory methods
+    /**
+     * Creates a <code>DigestMethod</code> for the specified algorithm URI 
+     * and parameters.
+     *
+     * @param algorithm the URI identifying the digest algorithm
+     * @param params algorithm-specific digest parameters (may be 
+     *    <code>null</code>)
+     * @return the <code>DigestMethod</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters
+     *    are inappropriate for the requested algorithm
+     * @throws NoSuchAlgorithmException if an implementation of the
+     *    specified algorithm cannot be found
+     * @throws NullPointerException if <code>algorithm</code> is 
+     *    <code>null</code>
+     */
+    public abstract DigestMethod newDigestMethod(String algorithm, 
+	DigestMethodParameterSpec params) throws NoSuchAlgorithmException,
+	InvalidAlgorithmParameterException;
+
+    /**
+     * Creates a <code>SignatureMethod</code> for the specified algorithm URI 
+     * and parameters.
+     *
+     * @param algorithm the URI identifying the signature algorithm
+     * @param params algorithm-specific signature parameters (may be 
+     *    <code>null</code>)
+     * @return the <code>SignatureMethod</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters
+     *    are inappropriate for the requested algorithm
+     * @throws NoSuchAlgorithmException if an implementation of the
+     *    specified algorithm cannot be found
+     * @throws NullPointerException if <code>algorithm</code> is 
+     *    <code>null</code>
+     */
+    public abstract SignatureMethod newSignatureMethod(String algorithm, 
+	SignatureMethodParameterSpec params) throws NoSuchAlgorithmException,
+	InvalidAlgorithmParameterException;
+
+    /**
+     * Creates a <code>Transform</code> for the specified algorithm URI 
+     * and parameters.
+     *
+     * @param algorithm the URI identifying the transform algorithm
+     * @param params algorithm-specific transform parameters (may be 
+     *    <code>null</code>)
+     * @return the <code>Transform</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters
+     *    are inappropriate for the requested algorithm
+     * @throws NoSuchAlgorithmException if an implementation of the
+     *    specified algorithm cannot be found
+     * @throws NullPointerException if <code>algorithm</code> is 
+     *    <code>null</code>
+     */
+    public abstract Transform newTransform(String algorithm, 
+	TransformParameterSpec params) throws NoSuchAlgorithmException,
+	InvalidAlgorithmParameterException;
+
+    /**
+     * Creates a <code>Transform</code> for the specified algorithm URI 
+     * and parameters. The parameters are specified as a mechanism-specific
+     * <code>XMLStructure</code> (ex: {@link DOMStructure}). This method is 
+     * useful when the parameters are in XML form or there is no standard 
+     * class for specifying the parameters.
+     *
+     * @param algorithm the URI identifying the transform algorithm
+     * @param params a mechanism-specific XML structure from which to
+     *   unmarshal the parameters from (may be <code>null</code> if
+     *   not required or optional)
+     * @return the <code>Transform</code>
+     * @throws ClassCastException if the type of <code>params</code> is
+     *   inappropriate for this <code>XMLSignatureFactory</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters
+     *    are inappropriate for the requested algorithm
+     * @throws NoSuchAlgorithmException if an implementation of the
+     *    specified algorithm cannot be found
+     * @throws NullPointerException if <code>algorithm</code> is 
+     *    <code>null</code>
+     */
+    public abstract Transform newTransform(String algorithm, 
+	XMLStructure params) throws NoSuchAlgorithmException,
+	InvalidAlgorithmParameterException;
+
+    /**
+     * Creates a <code>CanonicalizationMethod</code> for the specified 
+     * algorithm URI and parameters.
+     *
+     * @param algorithm the URI identifying the canonicalization algorithm
+     * @param params algorithm-specific canonicalization parameters (may be 
+     *    <code>null</code>)
+     * @return the <code>CanonicalizationMethod</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters
+     *    are inappropriate for the requested algorithm
+     * @throws NoSuchAlgorithmException if an implementation of the
+     *    specified algorithm cannot be found
+     * @throws NullPointerException if <code>algorithm</code> is 
+     *    <code>null</code>
+     */
+    public abstract CanonicalizationMethod newCanonicalizationMethod(
+	String algorithm, C14NMethodParameterSpec params) 
+	throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;
+
+    /**
+     * Creates a <code>CanonicalizationMethod</code> for the specified 
+     * algorithm URI and parameters. The parameters are specified as a 
+     * mechanism-specific <code>XMLStructure</code> (ex: {@link DOMStructure}). 
+     * This method is useful when the parameters are in XML form or there is 
+     * no standard class for specifying the parameters.
+     *
+     * @param algorithm the URI identifying the canonicalization algorithm
+     * @param params a mechanism-specific XML structure from which to
+     *   unmarshal the parameters from (may be <code>null</code> if
+     *   not required or optional)
+     * @return the <code>CanonicalizationMethod</code>
+     * @throws ClassCastException if the type of <code>params</code> is
+     *   inappropriate for this <code>XMLSignatureFactory</code>
+     * @throws InvalidAlgorithmParameterException if the specified parameters
+     *    are inappropriate for the requested algorithm
+     * @throws NoSuchAlgorithmException if an implementation of the
+     *    specified algorithm cannot be found
+     * @throws NullPointerException if <code>algorithm</code> is 
+     *    <code>null</code>
+     */
+    public abstract CanonicalizationMethod newCanonicalizationMethod(
+	String algorithm, XMLStructure params) 
+	throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;
+
+    /**
+     * Returns a <code>KeyInfoFactory</code> that creates <code>KeyInfo</code>
+     * objects. The returned <code>KeyInfoFactory</code> has the same 
+     * mechanism type and provider as this <code>XMLSignatureFactory</code>.
+     *
+     * @return a <code>KeyInfoFactory</code>
+     * @throws NoSuchMechanismException if a <code>KeyFactory</code> 
+     *    implementation with the same mechanism type and provider
+     *    is not available
+     */
+    public final KeyInfoFactory getKeyInfoFactory() {
+	return KeyInfoFactory.getInstance(getMechanismType(), getProvider());
+    }
+
+    /**
+     * Unmarshals a new <code>XMLSignature</code> instance from a
+     * mechanism-specific <code>XMLValidateContext</code> instance.
+     *
+     * @param context a mechanism-specific context from which to unmarshal the
+     *    signature from
+     * @return the <code>XMLSignature</code>
+     * @throws NullPointerException if <code>context</code> is 
+     *    <code>null</code>
+     * @throws ClassCastException if the type of <code>context</code> is
+     *    inappropriate for this factory
+     * @throws MarshalException if an unrecoverable exception occurs 
+     *    during unmarshalling
+     */
+    public abstract XMLSignature unmarshalXMLSignature
+	(XMLValidateContext context) throws MarshalException;
+
+    /**
+     * Unmarshals a new <code>XMLSignature</code> instance from a
+     * mechanism-specific <code>XMLStructure</code> instance.
+     * This method is useful if you only want to unmarshal (and not
+     * validate) an <code>XMLSignature</code>.
+     *
+     * @param xmlStructure a mechanism-specific XML structure from which to 
+     *    unmarshal the signature from
+     * @return the <code>XMLSignature</code>
+     * @throws NullPointerException if <code>xmlStructure</code> is 
+     *    <code>null</code>
+     * @throws ClassCastException if the type of <code>xmlStructure</code> is
+     *    inappropriate for this factory
+     * @throws MarshalException if an unrecoverable exception occurs 
+     *    during unmarshalling
+     */
+    public abstract XMLSignature unmarshalXMLSignature
+	(XMLStructure xmlStructure) throws MarshalException;
+
+    /**
+     * Indicates whether a specified feature is supported.
+     *
+     * @param feature the feature name (as an absolute URI)
+     * @return <code>true</code> if the specified feature is supported,
+     *    <code>false</code> otherwise
+     * @throws NullPointerException if <code>feature</code> is <code>null</code>
+     */
+    public abstract boolean isFeatureSupported(String feature);
+
+    /**
+     * Returns a reference to the <code>URIDereferencer</code> that is used by 
+     * default to dereference URIs in {@link Reference} objects.
+     *
+     * @return a reference to the default <code>URIDereferencer</code> (never
+     *    <code>null</code>)
+     */
+    public abstract URIDereferencer getURIDereferencer();
+}
diff --git a/src/javax/xml/crypto/dsig/XMLValidateContext.java b/src/javax/xml/crypto/dsig/XMLValidateContext.java
new file mode 100644
index 0000000..05e879f
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/XMLValidateContext.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig;
+
+import javax.xml.crypto.XMLCryptoContext;
+
+/**
+ * Contains context information for validating XML Signatures. This interface
+ * is primarily intended for type-safety.
+ *
+ * <p>Note that <code>XMLValidateContext</code> instances can contain 
+ * information and state specific to the XML signature structure it is 
+ * used with. The results are unpredictable if an 
+ * <code>XMLValidateContext</code> is used with different signature structures 
+ * (for example, you should not use the same <code>XMLValidateContext</code> 
+ * instance to validate two different {@link XMLSignature} objects).
+ * <p>
+ * <b><a name="Supported Properties"></a>Supported Properties</b>
+ * <p>The following properties can be set by an application using the 
+ * {@link #setProperty setProperty} method.
+ * <ul>
+ *   <li><code>javax.xml.crypto.dsig.cacheReference</code>: value must be a
+ *	{@link Boolean}. This property controls whether or not the
+ *	{@link Reference#validate Reference.validate} method will cache the 
+ *	dereferenced content and pre-digested input for subsequent retrieval via
+ *      the {@link Reference#getDereferencedData Reference.getDereferencedData}
+ *	and {@link Reference#getDigestInputStream 
+ *	Reference.getDigestInputStream} methods. The default value if not 
+ *	specified is <code>Boolean.FALSE</code>.
+ * </ul>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignature#validate(XMLValidateContext)
+ * @see Reference#validate(XMLValidateContext)
+ */
+public interface XMLValidateContext extends XMLCryptoContext {}
diff --git a/src/javax/xml/crypto/dsig/dom/DOMSignContext.java b/src/javax/xml/crypto/dsig/dom/DOMSignContext.java
new file mode 100644
index 0000000..ae37d52
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/dom/DOMSignContext.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.dom;
+
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.XMLSignContext;
+import javax.xml.crypto.dsig.XMLSignature;
+import java.security.Key;
+import org.w3c.dom.Node;
+
+/**
+ * A DOM-specific {@link XMLSignContext}. This class contains additional methods
+ * to specify the location in a DOM tree where an {@link XMLSignature}
+ * object is to be marshalled when generating the signature.
+ *
+ * <p>Note that <code>DOMSignContext</code> instances can contain
+ * information and state specific to the XML signature structure it is
+ * used with. The results are unpredictable if a
+ * <code>DOMSignContext</code> is used with different signature structures
+ * (for example, you should not use the same <code>DOMSignContext</code>
+ * instance to sign two different {@link XMLSignature} objects).
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public class DOMSignContext extends DOMCryptoContext implements XMLSignContext {
+
+    private Node parent;
+    private Node nextSibling;
+
+    /**
+     * Creates a <code>DOMSignContext</code> with the specified signing key
+     * and parent node. The signing key is stored in a
+     * {@link KeySelector#singletonKeySelector singleton KeySelector} that is
+     * returned by the {@link #getKeySelector getKeySelector} method.
+     * The marshalled <code>XMLSignature</code> will be added as the last 
+     * child element of the specified parent node unless a next sibling node is 
+     * specified by invoking the {@link #setNextSibling setNextSibling} method.
+     *
+     * @param signingKey the signing key
+     * @param parent the parent node
+     * @throws NullPointerException if <code>signingKey</code> or 
+     *    <code>parent</code> is <code>null</code>
+     */
+    public DOMSignContext(Key signingKey, Node parent) { 
+        if (signingKey == null) {
+            throw new NullPointerException("signingKey cannot be null");
+        } 
+        if (parent == null) {
+            throw new NullPointerException("parent cannot be null");
+        }
+        setKeySelector(KeySelector.singletonKeySelector(signingKey));
+        this.parent = parent;
+    }
+
+    /**
+     * Creates a <code>DOMSignContext</code> with the specified signing key,
+     * parent and next sibling nodes. The signing key is stored in a
+     * {@link KeySelector#singletonKeySelector singleton KeySelector} that is
+     * returned by the {@link #getKeySelector getKeySelector} method.
+     * The marshalled <code>XMLSignature</code> will be inserted as a child 
+     * element of the specified parent node and immediately before the 
+     * specified next sibling node.
+     *
+     * @param signingKey the signing key
+     * @param parent the parent node
+     * @param nextSibling the next sibling node
+     * @throws NullPointerException if <code>signingKey</code>, 
+     *    <code>parent</code> or <code>nextSibling</code> is <code>null</code>
+     */
+    public DOMSignContext(Key signingKey, Node parent, Node nextSibling) { 
+        if (signingKey == null) {
+            throw new NullPointerException("signingKey cannot be null");
+        }
+        if (parent == null) {
+            throw new NullPointerException("parent cannot be null");
+        }
+        if (nextSibling == null) {
+            throw new NullPointerException("nextSibling cannot be null");
+        }
+        setKeySelector(KeySelector.singletonKeySelector(signingKey));
+        this.parent = parent;
+        this.nextSibling = nextSibling;
+    }
+
+    /**
+     * Creates a <code>DOMSignContext</code> with the specified key selector
+     * and parent node. The marshalled <code>XMLSignature</code> will be added 
+     * as the last child element of the specified parent node unless a next 
+     * sibling node is specified by invoking the 
+     * {@link #setNextSibling setNextSibling} method.
+     *
+     * @param ks the key selector
+     * @param parent the parent node
+     * @throws NullPointerException if <code>ks</code> or <code>parent</code> 
+     *    is <code>null</code>
+     */
+    public DOMSignContext(KeySelector ks, Node parent) {
+        if (ks == null) {
+            throw new NullPointerException("key selector cannot be null");
+        } 
+        if (parent == null) {
+            throw new NullPointerException("parent cannot be null");
+        }
+        setKeySelector(ks);
+        this.parent = parent;
+    }
+
+    /**
+     * Creates a <code>DOMSignContext</code> with the specified key selector,
+     * parent and next sibling nodes. The marshalled <code>XMLSignature</code> 
+     * will be inserted as a child element of the specified parent node and 
+     * immediately before the specified next sibling node.
+     *
+     * @param ks the key selector
+     * @param parent the parent node
+     * @param nextSibling the next sibling node
+     * @throws NullPointerException if <code>ks</code>, <code>parent</code> or 
+     *    <code>nextSibling</code> is <code>null</code>
+     */
+    public DOMSignContext(KeySelector ks, Node parent, Node nextSibling) { 
+        if (ks == null) {
+            throw new NullPointerException("key selector cannot be null");
+        }
+        if (parent == null) {
+            throw new NullPointerException("parent cannot be null");
+        }
+        if (nextSibling == null) {
+            throw new NullPointerException("nextSibling cannot be null");
+        }
+        setKeySelector(ks);
+        this.parent = parent;
+        this.nextSibling = nextSibling;
+    }
+
+    /**
+     * Sets the parent node.
+     *
+     * @param parent the parent node. The marshalled <code>XMLSignature</code> 
+     *    will be added as a child element of this node.
+     * @throws NullPointerException if <code>parent</code> is <code>null</code>
+     * @see #getParent
+     */
+    public void setParent(Node parent) {
+	if (parent == null) {
+	    throw new NullPointerException("parent is null");
+	}
+	this.parent = parent;
+    }
+
+    /**
+     * Sets the next sibling node. 
+     *
+     * @param nextSibling the next sibling node. The marshalled 
+     *    <code>XMLSignature</code> will be inserted immediately before this 
+     *    node. Specify <code>null</code> to remove the current setting. 
+     * @see #getNextSibling
+     */
+    public void setNextSibling(Node nextSibling) {
+	this.nextSibling = nextSibling;
+    }
+
+    /**
+     * Returns the parent node.
+     *
+     * @return the parent node (never <code>null</code>)
+     * @see #setParent(Node)
+     */
+    public Node getParent() {
+	return parent;
+    }
+
+    /**
+     * Returns the nextSibling node.
+     *
+     * @return the nextSibling node, or <code>null</code> if not specified.
+     * @see #setNextSibling(Node)
+     */
+    public Node getNextSibling() {
+	return nextSibling;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/dom/DOMValidateContext.java b/src/javax/xml/crypto/dsig/dom/DOMValidateContext.java
new file mode 100644
index 0000000..3b3ffea
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/dom/DOMValidateContext.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.dom;
+
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.XMLSignature;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.XMLValidateContext;
+import java.security.Key;
+import org.w3c.dom.Node;
+
+/**
+ * A DOM-specific {@link XMLValidateContext}. This class contains additional 
+ * methods to specify the location in a DOM tree where an {@link XMLSignature} 
+ * is to be unmarshalled and validated from.
+ *
+ * <p>Note that the behavior of an unmarshalled <code>XMLSignature</code> 
+ * is undefined if the contents of the underlying DOM tree are modified by the 
+ * caller after the <code>XMLSignature</code> is created.
+ *
+ * <p>Also, note that <code>DOMValidateContext</code> instances can contain
+ * information and state specific to the XML signature structure it is
+ * used with. The results are unpredictable if a
+ * <code>DOMValidateContext</code> is used with different signature structures
+ * (for example, you should not use the same <code>DOMValidateContext</code>
+ * instance to validate two different {@link XMLSignature} objects).
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XMLSignatureFactory#unmarshalXMLSignature(XMLValidateContext)
+ */
+public class DOMValidateContext extends DOMCryptoContext 
+    implements XMLValidateContext {
+
+    private Node node;
+
+    /**
+     * Creates a <code>DOMValidateContext</code> containing the specified key
+     * selector and node.
+     *
+     * @param ks a key selector for finding a validation key
+     * @param node the node
+     * @throws NullPointerException if <code>ks</code> or <code>node</code> is 
+     *    <code>null</code>
+     */
+    public DOMValidateContext(KeySelector ks, Node node) { 
+	if (ks == null) {
+	    throw new NullPointerException("key selector is null");
+	} 
+	if (node == null) {
+	    throw new NullPointerException("node is null");
+	}
+	setKeySelector(ks);
+	this.node = node;
+    }
+
+    /**
+     * Creates a <code>DOMValidateContext</code> containing the specified key
+     * and node. The validating key will be stored in a 
+     * {@link KeySelector#singletonKeySelector singleton KeySelector} that
+     * is returned when the {@link #getKeySelector getKeySelector} 
+     * method is called.
+     *
+     * @param validatingKey the validating key
+     * @param node the node
+     * @throws NullPointerException if <code>validatingKey</code> or 
+     *    <code>node</code> is <code>null</code>
+     */
+    public DOMValidateContext(Key validatingKey, Node node) { 
+	if (validatingKey == null) {
+	    throw new NullPointerException("validatingKey is null");
+	}
+	if (node == null) {
+	    throw new NullPointerException("node is null");
+	}
+	setKeySelector(KeySelector.singletonKeySelector(validatingKey));
+	this.node = node;
+    }
+
+    /**
+     * Sets the node.
+     *
+     * @param node the node 
+     * @throws NullPointerException if <code>node</code> is <code>null</code>
+     * @see #getNode
+     */
+    public void setNode(Node node) {
+	if (node == null) {
+	    throw new NullPointerException();
+	}
+	this.node = node;
+    }
+
+    /**
+     * Returns the node.
+     *
+     * @return the node (never <code>null</code>)
+     * @see #setNode(Node)
+     */
+    public Node getNode() {
+	return node;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/dom/package.html b/src/javax/xml/crypto/dsig/dom/package.html
new file mode 100644
index 0000000..de61c6e
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/dom/package.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+<!--
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+-->
+<!--
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+-->
+</head>
+<body>
+DOM-specific classes for the {@link javax.xml.crypto.dsig} package. 
+Only users who are using a DOM-based {@link 
+javax.xml.crypto.dsig.XMLSignatureFactory XMLSignatureFactory} or 
+{@link javax.xml.crypto.dsig.keyinfo.KeyInfoFactory} 
+should need to make direct use of this package.
+
+<h2>Package Specification</h2>
+
+<ul>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-core/">
+XML-Signature Syntax and Processing: W3C Recommendation</a>
+<li>
+<a href="http://www.ietf.org/rfc/rfc3275.txt">
+RFC 3275: XML-Signature Syntax and Processing</a>
+</ul>
+
+</body>
+</html>
diff --git a/src/javax/xml/crypto/dsig/keyinfo/KeyInfo.java b/src/javax/xml/crypto/dsig/keyinfo/KeyInfo.java
new file mode 100644
index 0000000..98192cf
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/KeyInfo.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import java.util.List;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.XMLCryptoContext;
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * A representation of the XML <code>KeyInfo</code> element as defined in
+ * the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * A <code>KeyInfo</code> contains a list of {@link XMLStructure}s, each of 
+ * which contain information that enables the recipient(s) to obtain the key 
+ * needed to validate an XML signature. The XML Schema Definition is defined as:
+ *
+ * <pre>
+ * &lt;element name="KeyInfo" type="ds:KeyInfoType"/&gt; 
+ * &lt;complexType name="KeyInfoType" mixed="true"&gt;
+ *   &lt;choice maxOccurs="unbounded"&gt;     
+ *     &lt;element ref="ds:KeyName"/&gt; 
+ *     &lt;element ref="ds:KeyValue"/&gt; 
+ *     &lt;element ref="ds:RetrievalMethod"/&gt;
+ *     &lt;element ref="ds:X509Data"/&gt;
+ *     &lt;element ref="ds:PGPData"/&gt;
+ *     &lt;element ref="ds:SPKIData"/&gt;
+ *     &lt;element ref="ds:MgmtData"/&gt;
+ *     &lt;any processContents="lax" namespace="##other"/&gt;
+ *     &lt;!-- (1,1) elements from (0,unbounded) namespaces --&gt;
+ *   &lt;/choice&gt;
+ *   &lt;attribute name="Id" type="ID" use="optional"/&gt; 
+ * &lt;/complexType&gt;
+ * </pre>
+ * 
+ * A <code>KeyInfo</code> instance may be created by invoking one of the 
+ * {@link KeyInfoFactory#newKeyInfo newKeyInfo} methods of the
+ * {@link KeyInfoFactory} class, and passing it a list of one or more 
+ * <code>XMLStructure</code>s and an optional id parameter;
+ * for example:
+ * <pre>
+ *   KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ *   KeyInfo keyInfo = factory.newKeyInfo
+ *	(Collections.singletonList(factory.newKeyName("Alice"), "keyinfo-1"));
+ * </pre>
+ *
+ * <p><code>KeyInfo</code> objects can also be marshalled to XML by invoking
+ * the {@link #marshal marshal} method.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeyInfoFactory#newKeyInfo(List)
+ * @see KeyInfoFactory#newKeyInfo(List, String)
+ */
+public interface KeyInfo extends XMLStructure {
+
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} containing the key information. Each entry of the list is 
+     * an {@link XMLStructure}.
+     *
+     * <p>If there is a public subclass representing the type of 
+     * <code>XMLStructure</code>, it is returned as an instance of that
+     * class (ex: an <code>X509Data</code> element would be returned as an
+     * instance of {@link javax.xml.crypto.dsig.keyinfo.X509Data}).
+     *
+     * @return an unmodifiable list of one or more <code>XMLStructure</code>s 
+     *    in this <code>KeyInfo</code>. Never returns <code>null</code> or an
+     *    empty list.
+     */
+    List getContent();
+
+    /**
+     * Return the optional Id attribute of this <code>KeyInfo</code>, which
+     * may be useful for referencing this <code>KeyInfo</code> from other 
+     * XML structures.
+     *
+     * @return the Id attribute of this <code>KeyInfo</code> (may be 
+     *    <code>null</code> if not specified)
+     */
+    String getId();
+
+    /**
+     * Marshals the key info to XML.
+     *
+     * @param parent a mechanism-specific structure containing the parent node
+     *    that the marshalled key info will be appended to
+     * @param context the <code>XMLCryptoContext</code> containing additional
+     *    context (may be null if not applicable)
+     * @throws ClassCastException if the type of <code>parent</code> or
+     *    <code>context</code> is not compatible with this key info
+     * @throws MarshalException if the key info cannot be marshalled
+     * @throws NullPointerException if <code>parent</code> is <code>null</code>
+     */
+    void marshal(XMLStructure parent, XMLCryptoContext context)
+        throws MarshalException;
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java b/src/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java
new file mode 100644
index 0000000..cf6efae
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigInteger;
+import java.security.AccessController;
+import java.security.KeyException;
+import java.security.NoSuchProviderException;
+import java.security.PrivilegedAction;
+import java.security.Provider;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.cert.X509CRL;
+import java.util.List;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.NoSuchMechanismException;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dom.DOMStructure;
+import javax.xml.crypto.dsig.*;
+
+/**
+ * A factory for creating {@link KeyInfo} objects from scratch or for
+ * unmarshalling a <code>KeyInfo</code> object from a corresponding XML 
+ * representation.
+ *
+ * <p>Each instance of <code>KeyInfoFactory</code> supports a specific
+ * XML mechanism type. To create a <code>KeyInfoFactory</code>, call one of the
+ * static {@link #getInstance getInstance} methods, passing in the XML 
+ * mechanism type desired, for example:
+ *
+ * <blockquote><code>
+ *   KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ * </code></blockquote>
+ *
+ * <p>The objects that this factory produces will be based
+ * on DOM and abide by the DOM interoperability requirements as defined in the
+ * <a href="../../../../../overview-summary.html#DOM Mechanism Requirements">
+ * DOM Mechanism Requirements</a> section of the API overview. See the
+ * <a href="../../../../../overview-summary.html#Service Provider">Service 
+ * Providers</a> section of the API overview for a list of standard mechanism 
+ * types.
+ *
+ * <p><code>KeyInfoFactory</code> implementations are registered and loaded
+ * using the {@link java.security.Provider} mechanism.
+ * For example, a service provider that supports the
+ * DOM mechanism would be specified in the <code>Provider</code> subclass as:
+ * <pre>
+ *     put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory");
+ * </pre>
+ *
+ * <p>Also, the <code>XMLStructure</code>s that are created by this factory
+ * may contain state specific to the <code>KeyInfo</code> and are not
+ * intended to be reusable.
+ *
+ * <p>An implementation MUST minimally support the default mechanism type: DOM.
+ *
+ * <p>Note that a caller must use the same <code>KeyInfoFactory</code>
+ * instance to create the <code>XMLStructure</code>s of a particular
+ * <code>KeyInfo</code> object. The behavior is undefined if 
+ * <code>XMLStructure</code>s from different providers or different mechanism 
+ * types are used together.
+ *
+ * <p><b>Concurrent Access</b>
+ * <p>The static methods of this class are guaranteed to be thread-safe. 
+ * Multiple threads may concurrently invoke the static methods defined in this 
+ * class with no ill effects.
+ *
+ * <p>However, this is not true for the non-static methods defined by this 
+ * class. Unless otherwise documented by a specific provider, threads that 
+ * need to access a single <code>KeyInfoFactory</code> instance concurrently 
+ * should synchronize amongst themselves and provide the necessary locking. 
+ * Multiple threads each manipulating a different <code>KeyInfoFactory</code> 
+ * instance need not synchronize.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ */
+public abstract class KeyInfoFactory {
+
+    private String mechanismType;
+    private Provider provider;
+
+    private static Class cl; 
+    private static final Class[] getImplParams = 
+	{ String.class, String.class, Provider.class };
+    private static Method getImplMethod;
+    static {
+	try {
+	    cl = Class.forName("javax.xml.crypto.dsig.XMLDSigSecurity");
+	} catch (ClassNotFoundException cnfe) { }
+	getImplMethod = (Method)
+            AccessController.doPrivileged(new PrivilegedAction() {
+            public Object run() {
+		Method m = null;
+		try {
+                    m = cl.getDeclaredMethod("getImpl", getImplParams);
+                    if (m != null)
+			m.setAccessible(true);
+		} catch (NoSuchMethodException nsme) { }
+                return m;
+            }
+	});
+    }
+
+    /**
+     * Default constructor, for invocation by subclasses.
+     */
+    protected KeyInfoFactory() {}
+
+    /**
+     * Returns a <code>KeyInfoFactory</code> that supports the
+     * specified XML processing mechanism and representation type (ex: "DOM").
+     *
+     * <p>This method uses the standard JCA provider lookup mechanism to 
+     * locate and instantiate a <code>KeyInfoFactory</code> implementation of 
+     * the desired mechanism type. It traverses the list of registered security 
+     * <code>Provider</code>s, starting with the most preferred 
+     * <code>Provider</code>. A new <code>KeyInfoFactory</code> object 
+     * from the first <code>Provider</code> that supports the specified 
+     * mechanism is returned. 
+     * 
+     * <p> Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method. 
+     *
+     * @param mechanismType the type of the XML processing mechanism and
+     *    representation. See the <a 
+     *    href="../../../../../overview-summary.html#Service Provider">Service 
+     *    Providers</a> section of the API overview for a list of standard 
+     *    mechanism types.
+     * @return a new <code>KeyInfoFactory</code>
+     * @throws NullPointerException if <code>mechanismType</code> is
+     *    <code>null</code>
+     * @throws NoSuchMechanismException if no <code>Provider</code> supports a
+     *    <code>KeyInfoFactory</code> implementation for the specified mechanism
+     * @see Provider
+     */
+    public static KeyInfoFactory getInstance(String mechanismType) {
+	if (mechanismType == null) {
+            throw new NullPointerException("mechanismType cannot be null");
+	}
+
+	return findInstance(mechanismType, null);
+    }
+
+    private static KeyInfoFactory findInstance(String mechanismType, 
+	Provider provider) {
+
+	if (getImplMethod == null) {
+	    throw new NoSuchMechanismException
+		("Cannot find " + mechanismType + " mechanism type");
+	}
+
+        Object[] objs = null;
+	try {
+            objs = (Object[]) getImplMethod.invoke(null, new Object[] 
+	        {mechanismType, "KeyInfoFactory", provider});
+	} catch (IllegalAccessException iae) {
+            throw new NoSuchMechanismException
+		("Cannot find " + mechanismType + " mechanism type", iae);
+	} catch (InvocationTargetException ite) {
+            throw new NoSuchMechanismException
+		("Cannot find " + mechanismType + " mechanism type", ite);
+	}
+
+        KeyInfoFactory factory = (KeyInfoFactory) objs[0];
+        factory.mechanismType = mechanismType;
+        factory.provider = (Provider) objs[1];
+        return factory;
+    }
+
+    /**
+     * Returns a <code>KeyInfoFactory</code> that supports the
+     * requested XML processing mechanism and representation type (ex: "DOM"),
+     * as supplied by the specified provider. Note that the specified 
+     * <code>Provider</code> object does not have to be registered in the 
+     * provider list. 
+     *
+     * @param mechanismType the type of the XML processing mechanism and
+     *    representation. See the <a 
+     *    href="../../../../../overview-summary.html#Service Provider">Service 
+     *    Providers</a> section of the API overview for a list of standard 
+     *    mechanism types.
+     * @param provider the <code>Provider</code> object
+     * @return a new <code>KeyInfoFactory</code>
+     * @throws NullPointerException if <code>mechanismType</code> or
+     *    <code>provider</code> are <code>null</code>
+     * @throws NoSuchMechanismException if a <code>KeyInfoFactory</code> 
+     *    implementation for the specified mechanism is not available from the 
+     *    specified <code>Provider</code> object
+     * @see Provider
+     */
+    public static KeyInfoFactory getInstance(String mechanismType,
+	Provider provider) {
+	if (mechanismType == null) {
+            throw new NullPointerException("mechanismType cannot be null");
+	} else if (provider == null) {
+	    throw new NullPointerException("provider cannot be null");
+	}
+
+	return findInstance(mechanismType, provider);
+    }
+
+    /**
+     * Returns a <code>KeyInfoFactory</code> that supports the
+     * requested XML processing mechanism and representation type (ex: "DOM"),
+     * as supplied by the specified provider. The specified provider must be 
+     * registered in the security provider list. 
+     *
+     * <p>Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method. 
+     *
+     * @param mechanismType the type of the XML processing mechanism and
+     *    representation. See the <a 
+     *    href="../../../../../overview-summary.html#Service Provider">Service 
+     *    Providers</a> section of the API overview for a list of standard 
+     *    mechanism types.
+     * @param provider the string name of the provider
+     * @return a new <code>KeyInfoFactory</code>
+     * @throws NoSuchProviderException if the specified provider is not 
+     *    registered in the security provider list
+     * @throws NullPointerException if <code>mechanismType</code> or
+     *    <code>provider</code> are <code>null</code>
+     * @throws NoSuchMechanismException if a <code>KeyInfoFactory</code> 
+     *    implementation for the specified mechanism is not available from the 
+     *    specified provider
+     * @see Provider
+     */
+    public static KeyInfoFactory getInstance(String mechanismType,
+	String provider) throws NoSuchProviderException {
+	if (mechanismType == null) {
+            throw new NullPointerException("mechanismType cannot be null");
+	} else if (provider == null) {
+            throw new NullPointerException("provider cannot be null");
+	}
+
+	Provider prov = Security.getProvider(provider);
+	if (prov == null) {
+	    throw new NoSuchProviderException("cannot find provider named " 
+		+ provider);
+	}
+
+	return findInstance(mechanismType, prov);
+    }
+
+    /**
+     * Returns a <code>KeyInfoFactory</code> that supports the
+     * default XML processing mechanism and representation type ("DOM").
+     *
+     * <p>This method uses the standard JCA provider lookup mechanism to 
+     * locate and instantiate a <code>KeyInfoFactory</code> implementation of 
+     * the default mechanism type. It traverses the list of registered security 
+     * <code>Provider</code>s, starting with the most preferred
+     * <code>Provider</code>.  A new <code>KeyInfoFactory</code> object
+     * from the first <code>Provider</code> that supports the DOM mechanism is 
+     * returned. 
+     * 
+     * <p> Note that the list of registered providers may be retrieved via 
+     * the {@link Security#getProviders() Security.getProviders()} method. 
+     *
+     * @return a new <code>KeyInfoFactory</code>
+     * @throws NoSuchMechanismException if no <code>Provider</code> supports a 
+     *    <code>KeyInfoFactory</code> implementation for the DOM mechanism
+     * @see Provider
+     */
+    public static KeyInfoFactory getInstance() {
+        return getInstance("DOM");
+    }
+
+    /**
+     * Returns the type of the XML processing mechanism and representation
+     * supported by this <code>KeyInfoFactory</code> (ex: "DOM")
+     *
+     * @return the XML processing mechanism type supported by this
+     *    <code>KeyInfoFactory</code>
+     */
+    public final String getMechanismType() {
+        return mechanismType;
+    }
+
+    /**
+     * Returns the provider of this <code>KeyInfoFactory</code>.
+     *
+     * @return the provider of this <code>KeyInfoFactory</code>
+     */
+    public final Provider getProvider() {
+	return provider;
+    }
+
+    /**
+     * Creates a <code>KeyInfo</code> containing the specified list of
+     * key information types.
+     *
+     * @param content a list of one or more {@link XMLStructure}s representing 
+     *    key information types. The list is defensively copied to protect
+     *    against subsequent modification.
+     * @return a <code>KeyInfo</code>
+     * @throws NullPointerException if <code>content</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>content</code> is empty
+     * @throws ClassCastException if <code>content</code> contains any entries
+     *    that are not of type {@link XMLStructure}
+     */
+    public abstract KeyInfo newKeyInfo(List content);
+
+    /**
+     * Creates a <code>KeyInfo</code> containing the specified list of key
+     * information types and optional id. The
+     * <code>id</code> parameter represents the value of an XML
+     * <code>ID</code> attribute and is useful for referencing
+     * the <code>KeyInfo</code> from other XML structures. 
+     *
+     * @param content a list of one or more {@link XMLStructure}s representing 
+     *    key information types. The list is defensively copied to protect
+     *    against subsequent modification.
+     * @param id the value of an XML <code>ID</code> (may be <code>null</code>)
+     * @return a <code>KeyInfo</code>
+     * @throws NullPointerException if <code>content</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>content</code> is empty
+     * @throws ClassCastException if <code>content</code> contains any entries
+     *    that are not of type {@link XMLStructure}
+     */
+    public abstract KeyInfo newKeyInfo(List content, String id);
+
+    /**
+     * Creates a <code>KeyName</code> from the specified name.
+     *
+     * @param name the name that identifies the key
+     * @return a <code>KeyName</code>
+     * @throws NullPointerException if <code>name</code> is <code>null</code>
+     */
+    public abstract KeyName newKeyName(String name);
+
+    /**
+     * Creates a <code>KeyValue</code> from the specified public key.
+     *
+     * @param key the public key
+     * @return a <code>KeyValue</code>
+     * @throws KeyException if the <code>key</code>'s algorithm is not 
+     *    recognized or supported by this <code>KeyInfoFactory</code>
+     * @throws NullPointerException if <code>key</code> is <code>null</code>
+     */
+    public abstract KeyValue newKeyValue(PublicKey key) throws KeyException;
+
+    /**
+     * Creates a <code>PGPData</code> from the specified PGP public key
+     * identifier.
+     *
+     * @param keyId a PGP public key identifier as defined in <a href=
+     *    "http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>, section 11.2.
+     *    The array is cloned to protect against subsequent modification.
+     * @return a <code>PGPData</code>
+     * @throws NullPointerException if <code>keyId</code> is <code>null</code>
+     * @throws IllegalArgumentException if the key id is not in the correct
+     *    format
+     */
+    public abstract PGPData newPGPData(byte[] keyId);
+
+    /**
+     * Creates a <code>PGPData</code> from the specified PGP public key
+     * identifier, and optional key material packet and list of external 
+     * elements.
+     *
+     * @param keyId a PGP public key identifier as defined in <a href=
+     *    "http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>, section 11.2.
+     *    The array is cloned to protect against subsequent modification.
+     * @param keyPacket a PGP key material packet as defined in <a href=
+     *    "http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>, section 5.5.
+     *    The array is cloned to protect against subsequent modification. May 
+     *    be <code>null</code>.
+     * @param other a list of {@link XMLStructure}s representing elements from
+     *    an external namespace. The list is defensively copied to protect
+     *    against subsequent modification. May be <code>null</code> or empty.
+     * @return a <code>PGPData</code>
+     * @throws NullPointerException if <code>keyId</code> is <code>null</code>
+     * @throws IllegalArgumentException if the <code>keyId</code> or 
+     *    <code>keyPacket</code> is not in the correct format. For 
+     *    <code>keyPacket</code>, the format of the packet header is 
+     *    checked and the tag is verified that it is of type key material. The
+     *    contents and format of the packet body are not checked.
+     * @throws ClassCastException if <code>other</code> contains any
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public abstract PGPData newPGPData(byte[] keyId, byte[] keyPacket,
+	List other);
+
+    /**
+     * Creates a <code>PGPData</code> from the specified PGP key material
+     * packet and optional list of external elements.
+     *
+     * @param keyPacket a PGP key material packet as defined in <a href=
+     *    "http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>, section 5.5.
+     *    The array is cloned to protect against subsequent modification.
+     * @param other a list of {@link XMLStructure}s representing elements from
+     *    an external namespace. The list is defensively copied to protect 
+     *    against subsequent modification. May be <code>null</code> or empty.
+     * @return a <code>PGPData</code>
+     * @throws NullPointerException if <code>keyPacket</code> is 
+     *    <code>null</code>
+     * @throws IllegalArgumentException if <code>keyPacket</code> is not in the 
+     *    correct format. For <code>keyPacket</code>, the format of the packet 
+     *    header is checked and the tag is verified that it is of type key 
+     *    material. The contents and format of the packet body are not checked.
+     * @throws ClassCastException if <code>other</code> contains any
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public abstract PGPData newPGPData(byte[] keyPacket, List other);
+
+    /**
+     * Creates a <code>RetrievalMethod</code> from the specified URI.
+     *
+     * @param uri the URI that identifies the <code>KeyInfo</code> information 
+     *    to be retrieved
+     * @return a <code>RetrievalMethod</code>
+     * @throws NullPointerException if <code>uri</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>uri</code> is not RFC 2396
+     *    compliant
+     */
+    public abstract RetrievalMethod newRetrievalMethod(String uri);
+
+    /**
+     * Creates a <code>RetrievalMethod</code> from the specified parameters.
+     *
+     * @param uri the URI that identifies the <code>KeyInfo</code> information 
+     *    to be retrieved
+     * @param type a URI that identifies the type of <code>KeyInfo</code> 
+     *    information to be retrieved (may be <code>null</code>)
+     * @param transforms a list of {@link Transform}s. The list is defensively
+     *    copied to protect against subsequent modification. May be 
+     *    <code>null</code> or empty.
+     * @return a <code>RetrievalMethod</code>
+     * @throws NullPointerException if <code>uri</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>uri</code> is not RFC 2396
+     *    compliant
+     * @throws ClassCastException if <code>transforms</code> contains any
+     *    entries that are not of type {@link Transform}
+     */
+    public abstract RetrievalMethod newRetrievalMethod(String uri, String type,
+	List transforms);
+
+    /**
+     * Creates a <code>X509Data</code> containing the specified list of
+     * X.509 content.
+     *
+     * @param content a list of one or more X.509 content types. Valid types are
+     *    {@link String} (subject names), <code>byte[]</code> (subject key ids),
+     *    {@link java.security.cert.X509Certificate}, {@link X509CRL},
+     *    or {@link XMLStructure} ({@link X509IssuerSerial}
+     *    objects or elements from an external namespace). Subject names are 
+     *    distinguished names in RFC 2253 String format. Implementations MUST 
+     *    support the attribute type keywords defined in RFC 2253 (CN, L, ST, 
+     *    O, OU, C, STREET, DC and UID). Implementations MAY support additional 
+     *    keywords. The list is defensively copied to protect against 
+     *    subsequent modification.
+     * @return a <code>X509Data</code>
+     * @throws NullPointerException if <code>content</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>content</code> is empty, or
+     *    if a subject name is not RFC 2253 compliant or one of the attribute 
+     *    type keywords is not recognized.
+     * @throws ClassCastException if <code>content</code> contains any entries
+     *    that are not of one of the valid types mentioned above
+     */
+    public abstract X509Data newX509Data(List content);
+
+    /**
+     * Creates an <code>X509IssuerSerial</code> from the specified X.500 issuer
+     * distinguished name and serial number.
+     *
+     * @param issuerName the issuer's distinguished name in RFC 2253 String
+     *    format. Implementations MUST support the attribute type keywords 
+     *    defined in RFC 2253 (CN, L, ST, O, OU, C, STREET, DC and UID). 
+     *    Implementations MAY support additional keywords.
+     * @param serialNumber the serial number
+     * @return an <code>X509IssuerSerial</code>
+     * @throws NullPointerException if <code>issuerName</code> or 
+     *    <code>serialNumber</code> are <code>null</code>
+     * @throws IllegalArgumentException if the issuer name is not RFC 2253
+     *    compliant or one of the attribute type keywords is not recognized.
+     */
+    public abstract X509IssuerSerial newX509IssuerSerial
+        (String issuerName, BigInteger serialNumber);
+
+    /**
+     * Indicates whether a specified feature is supported.
+     *
+     * @param feature the feature name (as an absolute URI)
+     * @return <code>true</code> if the specified feature is supported,
+     *    <code>false</code> otherwise
+     * @throws NullPointerException if <code>feature</code> is <code>null</code>
+     */
+    public abstract boolean isFeatureSupported(String feature);
+
+    /**
+     * Returns a reference to the <code>URIDereferencer</code> that is used by 
+     * default to dereference URIs in {@link RetrievalMethod} objects.
+     *
+     * @return a reference to the default <code>URIDereferencer</code>
+     */
+    public abstract URIDereferencer getURIDereferencer();
+
+    /**
+     * Unmarshals a new <code>KeyInfo</code> instance from a 
+     * mechanism-specific <code>XMLStructure</code> (ex: {@link DOMStructure}) 
+     * instance.
+     *
+     * @param xmlStructure a mechanism-specific XML structure from which to 
+     *   unmarshal the keyinfo from
+     * @return the <code>KeyInfo</code>
+     * @throws NullPointerException if <code>xmlStructure</code> is 
+     *   <code>null</code>
+     * @throws ClassCastException if the type of <code>xmlStructure</code> is
+     *   inappropriate for this factory
+     * @throws MarshalException if an unrecoverable exception occurs during 
+     *   unmarshalling
+     */
+    public abstract KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure)
+	throws MarshalException;
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/KeyName.java b/src/javax/xml/crypto/dsig/keyinfo/KeyName.java
new file mode 100644
index 0000000..83a4170
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/KeyName.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * A representation of the XML <code>KeyName</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>.
+ * A <code>KeyName</code> object contains a string value which may be used
+ * by the signer to communicate a key identifier to the recipient. The
+ * XML Schema Definition is defined as:
+ *
+ * <pre>
+ * &lt;element name="KeyName" type="string"/&gt;
+ * </pre>
+ * 
+ * A <code>KeyName</code> instance may be created by invoking the
+ * {@link KeyInfoFactory#newKeyName newKeyName} method of the
+ * {@link KeyInfoFactory} class, and passing it a <code>String</code> 
+ * representing the name of the key; for example:
+ * <pre>
+ * KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ * KeyName keyName = factory.newKeyName("Alice");   
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeyInfoFactory#newKeyName(String)
+ */
+public interface KeyName extends XMLStructure {
+
+    /**
+     * Returns the name of this <code>KeyName</code>.
+     *
+     * @return the name of this <code>KeyName</code> (never 
+     *    <code>null</code>)
+     */
+    String getName();
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/KeyValue.java b/src/javax/xml/crypto/dsig/keyinfo/KeyValue.java
new file mode 100644
index 0000000..6d673ae
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/KeyValue.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import java.security.KeyException;
+import java.security.KeyStore;
+import java.security.PublicKey;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * A representation of the XML <code>KeyValue</code> element as defined
+ * in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. A 
+ * <code>KeyValue</code> object contains a single public key that may be
+ * useful in validating the signature. The XML schema definition is defined as:
+ *
+ * <pre>
+ *    &lt;element name="KeyValue" type="ds:KeyValueType"/&gt;
+ *    &lt;complexType name="KeyValueType" mixed="true"&gt;
+ *      &lt;choice&gt;
+ *        &lt;element ref="ds:DSAKeyValue"/&gt;
+ *        &lt;element ref="ds:RSAKeyValue"/&gt;
+ *        &lt;any namespace="##other" processContents="lax"/&gt;
+ *      &lt;/choice&gt;
+ *    &lt;/complexType&gt;
+ *
+ *    &lt;element name="DSAKeyValue" type="ds:DSAKeyValueType"/&gt;
+ *    &lt;complexType name="DSAKeyValueType"&gt;
+ *      &lt;sequence&gt;
+ *        &lt;sequence minOccurs="0"&gt;
+ *          &lt;element name="P" type="ds:CryptoBinary"/&gt;
+ *          &lt;element name="Q" type="ds:CryptoBinary"/&gt;
+ *        &lt;/sequence&gt;
+ *        &lt;element name="G" type="ds:CryptoBinary" minOccurs="0"/&gt; 
+ *        &lt;element name="Y" type="ds:CryptoBinary"/&gt; 
+ *        &lt;element name="J" type="ds:CryptoBinary" minOccurs="0"/&gt;
+ *        &lt;sequence minOccurs="0"&gt;
+ *          &lt;element name="Seed" type="ds:CryptoBinary"/&gt; 
+ *          &lt;element name="PgenCounter" type="ds:CryptoBinary"/&gt; 
+ *        &lt;/sequence&gt;
+ *      &lt;/sequence&gt;
+ *    &lt;/complexType&gt;
+ *
+ *    &lt;element name="RSAKeyValue" type="ds:RSAKeyValueType"/&gt;
+ *    &lt;complexType name="RSAKeyValueType"&gt;
+ *      &lt;sequence&gt;
+ *        &lt;element name="Modulus" type="ds:CryptoBinary"/&gt; 
+ *        &lt;element name="Exponent" type="ds:CryptoBinary"/&gt;
+ *      &lt;/sequence&gt;
+ *    &lt;/complexType&gt;
+ * </pre>
+ * A <code>KeyValue</code> instance may be created by invoking the
+ * {@link KeyInfoFactory#newKeyValue newKeyValue} method of the
+ * {@link KeyInfoFactory} class, and passing it a {@link 
+ * java.security.PublicKey} representing the value of the public key. Here is 
+ * an example of creating a <code>KeyValue</code> from a {@link DSAPublicKey} 
+ * of a {@link java.security.cert.Certificate} stored in a 
+ * {@link java.security.KeyStore}:
+ * <pre>
+ * KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ * PublicKey dsaPublicKey = keyStore.getCertificate("myDSASigningCert").getPublicKey();
+ * KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ * KeyValue keyValue = factory.newKeyValue(dsaPublicKey);
+ * </pre>
+ *
+ * This class returns the <code>DSAKeyValue</code> and 
+ * <code>RSAKeyValue</code> elements as objects of type 
+ * {@link DSAPublicKey} and {@link RSAPublicKey}, respectively. Note that not 
+ * all of the fields in the schema are accessible as parameters of these 
+ * types. 
+ * 
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeyInfoFactory#newKeyValue(PublicKey)
+ */
+public interface KeyValue extends XMLStructure {
+
+    /**
+     * URI identifying the DSA KeyValue KeyInfo type:
+     * http://www.w3.org/2000/09/xmldsig#DSAKeyValue. This can be specified as 
+     * the value of the <code>type</code> parameter of the 
+     * {@link RetrievalMethod} class to describe a remote 
+     * <code>DSAKeyValue</code> structure.
+     */
+    final static String DSA_TYPE =
+        "http://www.w3.org/2000/09/xmldsig#DSAKeyValue";
+
+    /**
+     * URI identifying the RSA KeyValue KeyInfo type:
+     * http://www.w3.org/2000/09/xmldsig#RSAKeyValue. This can be specified as
+     * the value of the <code>type</code> parameter of the 
+     * {@link RetrievalMethod} class to describe a remote 
+     * <code>RSAKeyValue</code> structure.
+     */
+    final static String RSA_TYPE =
+        "http://www.w3.org/2000/09/xmldsig#RSAKeyValue";
+
+    /**
+     * Returns the public key of this <code>KeyValue</code>. 
+     *
+     * @return the public key of this <code>KeyValue</code>
+     * @throws KeyException if this <code>KeyValue</code> cannot be converted
+     *    to a <code>PublicKey</code>
+     */
+    PublicKey getPublicKey() throws KeyException;
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/PGPData.java b/src/javax/xml/crypto/dsig/keyinfo/PGPData.java
new file mode 100644
index 0000000..8c3331e
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/PGPData.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import java.util.Collections;
+import java.util.List;
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * A representation of the XML <code>PGPData</code> element as defined in 
+ * the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. A
+ * <code>PGPData</code> object is used to convey information related to 
+ * PGP public key pairs and signatures on such keys. The XML Schema Definition 
+ * is defined as:
+ * 
+ * <pre>
+ *    &lt;element name="PGPData" type="ds:PGPDataType"/&gt; 
+ *    &lt;complexType name="PGPDataType"&gt; 
+ *      &lt;choice&gt;
+ *        &lt;sequence&gt;
+ *          &lt;element name="PGPKeyID" type="base64Binary"/&gt; 
+ *          &lt;element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/&gt; 
+ *          &lt;any namespace="##other" processContents="lax" minOccurs="0"
+ *           maxOccurs="unbounded"/&gt;
+ *        &lt;/sequence&gt;
+ *        &lt;sequence&gt;
+ *          &lt;element name="PGPKeyPacket" type="base64Binary"/&gt; 
+ *          &lt;any namespace="##other" processContents="lax" minOccurs="0"
+ *           maxOccurs="unbounded"/&gt;
+ *        &lt;/sequence&gt;
+ *      &lt;/choice&gt;
+ *    &lt;/complexType&gt;
+ * </pre>
+ *
+ * A <code>PGPData</code> instance may be created by invoking one of the
+ * {@link KeyInfoFactory#newPGPData newPGPData} methods of the {@link
+ * KeyInfoFactory} class, and passing it 
+ * <code>byte</code> arrays representing the contents of the PGP public key 
+ * identifier and/or PGP key material packet, and an optional list of
+ * elements from an external namespace.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeyInfoFactory#newPGPData(byte[])
+ * @see KeyInfoFactory#newPGPData(byte[], byte[], List)
+ * @see KeyInfoFactory#newPGPData(byte[], List)
+ */
+public interface PGPData extends XMLStructure {
+
+    /**
+     * URI identifying the PGPData KeyInfo type:
+     * http://www.w3.org/2000/09/xmldsig#PGPData. This can be specified as the 
+     * value of the <code>type</code> parameter of the {@link RetrievalMethod} 
+     * class to describe a remote <code>PGPData</code> structure.
+     */
+    final static String TYPE = "http://www.w3.org/2000/09/xmldsig#PGPData";
+
+    /**
+     * Returns the PGP public key identifier of this <code>PGPData</code> as 
+     * defined in <a href="http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>, 
+     * section 11.2.
+     *
+     * @return the PGP public key identifier (may be <code>null</code> if 
+     *    not specified). Each invocation of this method returns a new clone 
+     *    to protect against subsequent modification.
+     */
+    byte[] getKeyId();
+
+    /**
+     * Returns the PGP key material packet of this <code>PGPData</code> as
+     * defined in <a href="http://www.ietf.org/rfc/rfc2440.txt">RFC 2440</a>, 
+     * section 5.5.
+     *
+     * @return the PGP key material packet (may be <code>null</code> if not 
+     *    specified). Each invocation of this method returns a new clone to 
+     *    protect against subsequent modification.
+     */
+    byte[] getKeyPacket();
+
+    /**
+     * Returns an {@link Collections#unmodifiableList unmodifiable list}
+     * of {@link XMLStructure}s representing elements from an external 
+     * namespace. 
+     *
+     * @return an unmodifiable list of <code>XMLStructure</code>s (may be 
+     *    empty, but never <code>null</code>)
+     */
+    List getExternalElements();
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java b/src/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java
new file mode 100644
index 0000000..3ff4caf
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.URIReference;
+import javax.xml.crypto.URIReferenceException;
+import javax.xml.crypto.XMLCryptoContext;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.Transform;
+import java.util.List;
+
+/**
+ * A representation of the XML <code>RetrievalMethod</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+ * A <code>RetrievalMethod</code> object is used to convey a reference to
+ * <code>KeyInfo</code> information that is stored at another location.
+ * The XML schema definition is defined as: 
+ *
+ * <pre>
+ *   &lt;element name="RetrievalMethod" type="ds:RetrievalMethodType"/&gt;
+ *   &lt;complexType name="RetrievalMethodType"&gt;
+ *     &lt;sequence&gt;
+ *       &lt;element name="Transforms" type="ds:TransformsType" minOccurs="0"/&gt; 
+ *     &lt;/sequence&gt;  
+ *     &lt;attribute name="URI" type="anyURI"/&gt;
+ *     &lt;attribute name="Type" type="anyURI" use="optional"/&gt;
+ *   &lt;/complexType&gt;
+ * </pre>
+ *
+ * A <code>RetrievalMethod</code> instance may be created by invoking one of the
+ * {@link KeyInfoFactory#newRetrievalMethod newRetrievalMethod} methods 
+ * of the {@link KeyInfoFactory} class, and passing it the URI 
+ * identifying the location of the KeyInfo, an optional type URI identifying 
+ * the type of KeyInfo, and an optional list of {@link Transform}s; for example:
+ * <pre>
+ *   KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ *   RetrievalMethod rm = factory.newRetrievalMethod
+ *      ("#KeyValue-1", KeyValue.DSA_TYPE, Collections.singletonList(Transform.BASE64));
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeyInfoFactory#newRetrievalMethod(String)
+ * @see KeyInfoFactory#newRetrievalMethod(String, String, List)
+ */
+public interface RetrievalMethod extends URIReference, XMLStructure {
+
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of {@link Transform}s of this <code>RetrievalMethod</code>. 
+     *
+     * @return an unmodifiable list of <code>Transform</code> objects (may be 
+     *    empty but never <code>null</code>). 
+     */
+    List getTransforms();
+
+    /**
+     * Returns the URI of the referenced <code>KeyInfo</code> information.
+     *
+     * @return the URI of the referenced <code>KeyInfo</code> information in 
+     *    RFC 2396 format (never <code>null</code>)
+     */
+    String getURI();
+
+   /**
+    * Dereferences the <code>KeyInfo</code> information referenced by this 
+    * <code>RetrievalMethod</code> and applies the specified 
+    * <code>Transform</code>s.
+    *
+    * @param context an <code>XMLCryptoContext</code> that may contain 
+    *    additional useful information for dereferencing the URI. The 
+    *    context's <code>baseURI</code> and <code>dereferencer</code> 
+    *    parameters (if specified) are used to resolve and dereference this
+    *    <code>RetrievalMethod</code>
+    * @return a <code>Data</code> object representing the raw contents of the
+    *    <code>KeyInfo</code> information referenced by this 
+    *    <code>RetrievalMethod</code>. It is the caller's responsibility to
+    *    convert the returned data to an appropriate 
+    *    <code>KeyInfo</code> object.
+    * @throws NullPointerException if <code>context</code> is <code>null</code>
+    * @throws URIReferenceException if there is an error while dereferencing
+    */
+    Data dereference(XMLCryptoContext context) throws URIReferenceException;
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/X509Data.java b/src/javax/xml/crypto/dsig/keyinfo/X509Data.java
new file mode 100644
index 0000000..e022735
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/X509Data.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import javax.xml.crypto.XMLStructure;
+import java.security.cert.X509CRL;
+import java.util.List;
+
+/**
+ * A representation of the XML <code>X509Data</code> element as defined in 
+ * the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. An
+ * <code>X509Data</code> object contains one or more identifers of keys 
+ * or X.509 certificates (or certificates' identifiers or a revocation list). 
+ * The XML Schema Definition is defined as:
+ * 
+ * <pre>
+ *    &lt;element name="X509Data" type="ds:X509DataType"/&gt;
+ *    &lt;complexType name="X509DataType"&gt; 
+ *        &lt;sequence maxOccurs="unbounded"&gt; 
+ *          &lt;choice&gt; 
+ *            &lt;element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/&gt;
+ *            &lt;element name="X509SKI" type="base64Binary"/&gt;
+ *            &lt;element name="X509SubjectName" type="string"/&gt; 
+ *            &lt;element name="X509Certificate" type="base64Binary"/&gt;
+ *            &lt;element name="X509CRL" type="base64Binary"/&gt; 
+ *            &lt;any namespace="##other" processContents="lax"/&gt;
+ *          &lt;/choice&gt;  
+ *        &lt;/sequence&gt;
+ *    &lt;/complexType&gt;
+ *
+ *    &lt;complexType name="X509IssuerSerialType"&gt; 
+ *      &lt;sequence&gt; 
+ *        &lt;element name="X509IssuerName" type="string"/&gt; 
+ *        &lt;element name="X509SerialNumber" type="integer"/&gt; 
+ *      &lt;/sequence&gt;
+ *    &lt;/complexType&gt;
+ * </pre>
+ *
+ * An <code>X509Data</code> instance may be created by invoking the
+ * {@link KeyInfoFactory#newX509Data newX509Data} methods of the
+ * {@link KeyInfoFactory} class and passing it a list of one or more 
+ * {@link XMLStructure}s representing X.509 content; for example:
+ * <pre>
+ *   KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ *   X509Data x509Data = factory.newX509Data
+ *       (Collections.singletonList("cn=Alice"));
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see KeyInfoFactory#newX509Data(List)
+ */
+//@@@ check for illegal combinations of data violating MUSTs in W3c spec
+public interface X509Data extends XMLStructure {
+
+    /**
+     * URI identifying the X509Data KeyInfo type:
+     * http://www.w3.org/2000/09/xmldsig#X509Data. This can be specified as
+     * the value of the <code>type</code> parameter of the
+     * {@link RetrievalMethod} class to describe a remote
+     * <code>X509Data</code> structure.
+     */
+    final static String TYPE = "http://www.w3.org/2000/09/xmldsig#X509Data";
+
+    /**
+     * URI identifying the binary (ASN.1 DER) X.509 Certificate KeyInfo type:
+     * http://www.w3.org/2000/09/xmldsig#rawX509Certificate. This can be 
+     * specified as the value of the <code>type</code> parameter of the
+     * {@link RetrievalMethod} class to describe a remote X509 Certificate.
+     */
+    final static String RAW_X509_CERTIFICATE_TYPE =
+        "http://www.w3.org/2000/09/xmldsig#rawX509Certificate";
+
+    /**
+     * Returns an {@link java.util.Collections#unmodifiableList unmodifiable 
+     * list} of the content in this <code>X509Data</code>. Valid types are 
+     * {@link String} (subject names), <code>byte[]</code> (subject key ids), 
+     * {@link java.security.cert.X509Certificate}, {@link X509CRL}, 
+     * or {@link XMLStructure} ({@link X509IssuerSerial}
+     * objects or elements from an external namespace). 
+     *
+     * @return an unmodifiable list of the content in this <code>X509Data</code>
+     *    (never <code>null</code> or empty)
+     */
+    List getContent();
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/X509IssuerSerial.java b/src/javax/xml/crypto/dsig/keyinfo/X509IssuerSerial.java
new file mode 100644
index 0000000..33e38bd
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/X509IssuerSerial.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.keyinfo;
+
+import java.math.BigInteger;
+import java.security.cert.X509Certificate;
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * A representation of the XML <code>X509IssuerSerial</code> element as 
+ * defined in the <a href="http://www.w3.org/TR/xmldsig-core/">
+ * W3C Recommendation for XML-Signature Syntax and Processing</a>. 
+ * An <code>X509IssuerSerial</code> object contains an X.509 issuer 
+ * distinguished name (DN) and serial number pair. The XML schema definition is 
+ * defined as: 
+ *
+ * <pre>
+ *   &lt;element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/&gt;
+ *   &lt;complexType name="X509IssuerSerialType"&gt;
+ *     &lt;sequence&gt;
+ *       &lt;element name="X509IssuerName" type="string"/&gt; 
+ *       &lt;element name="X509SerialNumber" type="integer"/&gt; 
+ *     &lt;/sequence&gt;  
+ *   &lt;/complexType&gt;
+ * </pre>
+ *
+ * An <code>X509IssuerSerial</code> instance may be created by invoking the
+ * {@link KeyInfoFactory#newX509IssuerSerial newX509IssuerSerial} method 
+ * of the {@link KeyInfoFactory} class, and passing it a 
+ * <code>String</code> and <code>BigInteger</code> representing the X.500
+ * DN and serial number. Here is an example of creating an 
+ * <code>X509IssuerSerial</code> from the issuer DN and serial number of an 
+ * existing {@link X509Certificate}:
+ * <pre>
+ * KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
+ * X509IssuerSerial issuer = factory.newX509IssuerSerial
+ *     (cert.getIssuerX500Principal().getName(), cert.getSerialNumber());
+ * </pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see X509Data#getContent
+ * @see KeyInfoFactory#newX509IssuerSerial(String, BigInteger)
+ */
+public interface X509IssuerSerial extends XMLStructure {
+
+    /**
+     * Returns the X.500 distinguished name of this 
+     * <code>X509IssuerSerial</code> in 
+     * <a href="http://www.ietf.org/rfc/rfc2253.txt">RFC 2253</a> String format.
+     *
+     * @return the X.500 distinguished name in RFC 2253 String format (never 
+     *    <code>null</code>)
+     */
+    String getIssuerName();
+
+    /**
+     * Returns the serial number of this <code>X509IssuerSerial</code>.
+     *
+     * @return the serial number (never <code>null</code>)
+     */
+    BigInteger getSerialNumber();
+}
diff --git a/src/javax/xml/crypto/dsig/keyinfo/package.html b/src/javax/xml/crypto/dsig/keyinfo/package.html
new file mode 100644
index 0000000..cd016c4
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/keyinfo/package.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+<!--
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+-->
+<!--
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+-->
+</head>
+<body>
+Classes for parsing and processing {@link javax.xml.crypto.dsig.keyinfo.KeyInfo 
+KeyInfo} elements and structures. <code>KeyInfo</code> is an optional element
+that enables the recipient(s) to obtain the key needed to validate an 
+{@link javax.xml.crypto.dsig.XMLSignature XMLSignature}. <code>KeyInfo</code> 
+may contain keys, names, certificates and other public key management 
+information, such as in-band key distribution or key agreement data. This 
+package contains classes representing types defined in the W3C specification 
+for XML Signatures, such as 
+{@link javax.xml.crypto.dsig.keyinfo.KeyName KeyName},
+{@link javax.xml.crypto.dsig.keyinfo.KeyValue KeyValue},
+{@link javax.xml.crypto.dsig.keyinfo.RetrievalMethod RetrievalMethod},
+{@link javax.xml.crypto.dsig.keyinfo.X509Data X509Data},
+{@link javax.xml.crypto.dsig.keyinfo.X509IssuerSerial X509IssuerSerial}, and
+{@link javax.xml.crypto.dsig.keyinfo.PGPData PGPData}.
+{@link javax.xml.crypto.dsig.keyinfo.KeyInfoFactory KeyInfoFactory}
+is an abstract factory that creates <code>KeyInfo</code> objects from scratch.
+
+<h2>Package Specification</h2>
+
+<ul>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-core/">
+XML-Signature Syntax and Processing: W3C Recommendation</a>
+<li>
+<a href="http://www.ietf.org/rfc/rfc3275.txt">
+RFC 3275: XML-Signature Syntax and Processing</a>
+</ul>
+
+</body>
+</html>
diff --git a/src/javax/xml/crypto/dsig/package.html b/src/javax/xml/crypto/dsig/package.html
new file mode 100644
index 0000000..b05483a
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/package.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+<!--
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+-->
+<!--
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+-->
+</head>
+<body>
+Classes for generating and validating XML digital
+signatures. This package includes classes that represent the core elements 
+defined in the W3C XML digital signature specification:
+{@link javax.xml.crypto.dsig.XMLSignature XMLSignature},
+{@link javax.xml.crypto.dsig.SignedInfo SignedInfo},
+{@link javax.xml.crypto.dsig.CanonicalizationMethod CanonicalizationMethod},
+{@link javax.xml.crypto.dsig.SignatureMethod SignatureMethod},
+{@link javax.xml.crypto.dsig.Reference Reference}, 
+{@link javax.xml.crypto.dsig.DigestMethod DigestMethod},
+{@link javax.xml.crypto.dsig.XMLObject XMLObject}, 
+{@link javax.xml.crypto.dsig.Manifest Manifest},
+{@link javax.xml.crypto.dsig.SignatureProperties SignatureProperties}, and
+{@link javax.xml.crypto.dsig.SignatureProperty SignatureProperty}. 
+<code>KeyInfo</code> types
+are defined in the {@link javax.xml.crypto.dsig.keyinfo} subpackage.
+{@link javax.xml.crypto.dsig.XMLSignatureFactory XMLSignatureFactory}
+is an abstract factory that creates 
+{@link javax.xml.crypto.dsig.XMLSignature XMLSignature} objects from scratch
+or from a pre-existing XML representation, such as a DOM node.
+{@link javax.xml.crypto.dsig.TransformService} is a service provider
+interface for creating and plugging in implementations of
+transform and canonicalization algorithms.
+
+<p>Of primary significance in this package is the 
+{@link javax.xml.crypto.dsig.XMLSignature XMLSignature} class,
+which allows you to sign and validate an XML digital signature.
+
+<h2>Package Specification</h2>
+
+<ul>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-core/">
+XML-Signature Syntax and Processing: W3C Recommendation</a>
+<li>
+<a href="http://www.ietf.org/rfc/rfc3275.txt">
+RFC 3275: XML-Signature Syntax and Processing</a>
+</ul>
+
+</body>
+</html>
diff --git a/src/javax/xml/crypto/dsig/spec/C14NMethodParameterSpec.java b/src/javax/xml/crypto/dsig/spec/C14NMethodParameterSpec.java
new file mode 100644
index 0000000..ef366d9
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/C14NMethodParameterSpec.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+
+/**
+ * A specification of algorithm parameters for a {@link CanonicalizationMethod}
+ * Algorithm. The purpose of this interface is to group (and provide type 
+ * safety for) all canonicalization (C14N) parameter specifications. All 
+ * canonicalization parameter specifications must implement this interface.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see CanonicalizationMethod
+ */
+public interface C14NMethodParameterSpec extends TransformParameterSpec {}
diff --git a/src/javax/xml/crypto/dsig/spec/DigestMethodParameterSpec.java b/src/javax/xml/crypto/dsig/spec/DigestMethodParameterSpec.java
new file mode 100644
index 0000000..5a60a9a
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/DigestMethodParameterSpec.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.DigestMethod;
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * A specification of algorithm parameters for a {@link DigestMethod}
+ * algorithm. The purpose of this interface is to group (and provide type 
+ * safety for) all digest method parameter specifications. All digest method
+ * parameter specifications must implement this interface.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see DigestMethod
+ */
+public interface DigestMethodParameterSpec extends AlgorithmParameterSpec {}
diff --git a/src/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java b/src/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java
new file mode 100644
index 0000000..44a48c8
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Parameters for the W3C Recommendation:
+ * <a href="http://www.w3.org/TR/xml-exc-c14n/">
+ * Exclusive XML Canonicalization (C14N) algorithm</a>. The
+ * parameters include an optional inclusive namespace prefix list. The XML 
+ * Schema Definition of the Exclusive XML Canonicalization parameters is
+ * defined as:
+ * <pre><code>
+ * &lt;schema xmlns="http://www.w3.org/2001/XMLSchema"
+ *         xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
+ *         targetNamespace="http://www.w3.org/2001/10/xml-exc-c14n#"
+ *         version="0.1" elementFormDefault="qualified"&gt;
+ *
+ * &lt;element name="InclusiveNamespaces" type="ec:InclusiveNamespaces"/&gt;
+ * &lt;complexType name="InclusiveNamespaces"&gt;
+ *   &lt;attribute name="PrefixList" type="xsd:string"/&gt;
+ * &lt;/complexType&gt;
+ * &lt;/schema&gt;
+ * </code></pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see CanonicalizationMethod
+ */
+public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
+
+    private List preList;
+
+    /**
+     * Indicates the default namespace ("#default").
+     */
+    public static final String DEFAULT = "#default";
+
+    /**
+     * Creates a <code>ExcC14NParameterSpec</code> with an empty prefix 
+     * list.
+     */
+    public ExcC14NParameterSpec() {
+	preList = Collections.EMPTY_LIST;
+    }
+
+    /**
+     * Creates a <code>ExcC14NParameterSpec</code> with the specified list
+     * of prefixes. The list is copied to protect against subsequent 
+     * modification.
+     *
+     * @param prefixList the inclusive namespace prefix list. Each entry in
+     *    the list is a <code>String</code> that represents a namespace prefix.
+     * @throws NullPointerException if <code>prefixList</code> is 
+     *    <code>null</code>
+     * @throws ClassCastException if any of the entries in the list are not
+     *    of type <code>String</code>
+     */
+    public ExcC14NParameterSpec(List prefixList) {
+	if (prefixList == null) {
+	    throw new NullPointerException("prefixList cannot be null");
+	}
+	this.preList = new ArrayList(prefixList);
+        for (int i = 0, size = preList.size(); i < size; i++) {
+            if (!(preList.get(i) instanceof String)) {
+		throw new ClassCastException("not a String");
+	    }
+	}
+	preList = Collections.unmodifiableList(preList);
+    }
+
+    /**
+     * Returns the inclusive namespace prefix list. Each entry in the list
+     * is a <code>String</code> that represents a namespace prefix.
+     *
+     * <p>This implementation returns an {@link
+     * java.util.Collections#unmodifiableList unmodifiable list}.
+     *
+     * @return the inclusive namespace prefix list (may be empty but never
+     *    <code>null</code>)
+     */
+    public List getPrefixList() {
+	return preList;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/spec/HMACParameterSpec.java b/src/javax/xml/crypto/dsig/spec/HMACParameterSpec.java
new file mode 100644
index 0000000..b5baa07
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/HMACParameterSpec.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.SignatureMethod;
+
+/**
+ * Parameters for the <a href="http://www.w3.org/TR/xmldsig-core/#sec-MACs">
+ * XML Signature HMAC Algorithm</a>. The parameters include an optional output 
+ * length which specifies the MAC truncation length in bits. The resulting 
+ * HMAC will be truncated to the specified number of bits. If the parameter is 
+ * not specified, then this implies that all the bits of the hash are to be 
+ * output. The XML Schema Definition of the <code>HMACOutputLength</code> 
+ * element is defined as:
+ * <pre><code>
+ * &lt;element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/&gt;
+ * &lt;simpleType name="HMACOutputLengthType"&gt;
+ *   &lt;restriction base="integer"/&gt;
+ * &lt;/simpleType&gt;
+ * </code></pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see SignatureMethod
+ * @see <a href="http://www.ietf.org/rfc/rfc2104.txt">RFC 2104</a>
+ */
+public final class HMACParameterSpec implements SignatureMethodParameterSpec {
+
+    private int	outputLength;
+
+    /**
+     * Creates an <code>HMACParameterSpec</code> with the specified truncation
+     * length.
+     *
+     * @param outputLength the truncation length in number of bits
+     */
+    public HMACParameterSpec(int outputLength) {
+	this.outputLength = outputLength;
+    }
+
+    /**
+     * Returns the truncation length.
+     *
+     * @return the truncation length in number of bits
+     */
+    public int getOutputLength() {
+	return outputLength;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/spec/SignatureMethodParameterSpec.java b/src/javax/xml/crypto/dsig/spec/SignatureMethodParameterSpec.java
new file mode 100644
index 0000000..6b4f489
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/SignatureMethodParameterSpec.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.SignatureMethod;
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * A specification of algorithm parameters for an XML {@link SignatureMethod} 
+ * algorithm. The purpose of this interface is to group (and provide type 
+ * safety for) all signature method parameter specifications. All signature
+ * method parameter specifications must implement this interface.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see SignatureMethod
+ */
+public interface SignatureMethodParameterSpec extends AlgorithmParameterSpec {}
diff --git a/src/javax/xml/crypto/dsig/spec/TransformParameterSpec.java b/src/javax/xml/crypto/dsig/spec/TransformParameterSpec.java
new file mode 100644
index 0000000..4519b06
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/TransformParameterSpec.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.Transform;
+import java.security.spec.AlgorithmParameterSpec;
+
+/**
+ * A specification of algorithm parameters for a {@link Transform} 
+ * algorithm. The purpose of this interface is to group (and provide type 
+ * safety for) all transform parameter specifications. All transform parameter 
+ * specifications must implement this interface.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see Transform
+ */
+public interface TransformParameterSpec extends AlgorithmParameterSpec {}
diff --git a/src/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java b/src/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java
new file mode 100644
index 0000000..d2cfcfa
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.crypto.dsig.Transform;
+
+/**
+ * Parameters for the W3C Recommendation
+ * <a href="http://www.w3.org/TR/xmldsig-filter2/">
+ * XPath Filter 2.0 Transform Algorithm</a>.
+ * The parameters include a list of one or more {@link XPathType} objects.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see Transform
+ * @see XPathFilterParameterSpec
+ */
+public final class XPathFilter2ParameterSpec implements TransformParameterSpec {
+
+    private final List xPathList;
+
+    /**
+     * Creates an <code>XPathFilter2ParameterSpec</code>.
+     *
+     * @param xPathList a list of one or more {@link XPathType} objects. The 
+     *    list is defensively copied to protect against subsequent modification.
+     * @throws ClassCastException if <code>xPathList</code> contains any
+     *    entries that are not of type {@link XPathType}
+     * @throws IllegalArgumentException if <code>xPathList</code> is empty
+     * @throws NullPointerException if <code>xPathList</code> is 
+     *    <code>null</code>
+     */
+    public XPathFilter2ParameterSpec(List xPathList) {
+	if (xPathList == null) {
+	    throw new NullPointerException("xPathList cannot be null");
+	}
+        List xPathListCopy = new ArrayList(xPathList);
+	if (xPathListCopy.isEmpty()) {
+	    throw new IllegalArgumentException("xPathList cannot be empty");
+	}
+        int size = xPathListCopy.size();
+        for (int i = 0; i < size; i++) {
+            if (!(xPathListCopy.get(i) instanceof XPathType)) {
+                throw new ClassCastException
+                    ("xPathList["+i+"] is not a valid type");
+            }
+        }
+	this.xPathList = Collections.unmodifiableList(xPathListCopy);
+    }
+
+    /**
+     * Returns a list of one or more {@link XPathType} objects. 
+     * <p>
+     * This implementation returns an {@link Collections#unmodifiableList
+     * unmodifiable list}.
+     *
+     * @return a <code>List</code> of <code>XPathType</code> objects
+     *    (never <code>null</code> or empty)
+     */
+    public List getXPathList() {
+	return xPathList;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java b/src/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java
new file mode 100644
index 0000000..20eb1a0
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.Transform;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * Parameters for the <a href="http://www.w3.org/TR/xmldsig-core/#sec-XPath">
+ * XPath Filtering Transform Algorithm</a>.
+ * The parameters include the XPath expression and an optional <code>Map</code> 
+ * of additional namespace prefix mappings. The XML Schema Definition of
+ * the XPath Filtering transform parameters is defined as:
+ * <pre><code>
+ * &lt;element name="XPath" type="string"/&gt;
+ * </code></pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see Transform
+ */
+public final class XPathFilterParameterSpec implements TransformParameterSpec {
+
+    private String xPath;
+    private Map nsMap;
+
+    /**
+     * Creates an <code>XPathFilterParameterSpec</code> with the specified 
+     * XPath expression.
+     *
+     * @param xPath the XPath expression to be evaluated
+     * @throws NullPointerException if <code>xPath</code> is <code>null</code>
+     */
+    public XPathFilterParameterSpec(String xPath) {
+	if (xPath == null) {
+	    throw new NullPointerException();
+	}
+	this.xPath = xPath;
+	this.nsMap = Collections.EMPTY_MAP;
+    }
+
+    /**
+     * Creates an <code>XPathFilterParameterSpec</code> with the specified 
+     * XPath expression and namespace map. The map is copied to protect against
+     * subsequent modification.
+     *
+     * @param xPath the XPath expression to be evaluated
+     * @param namespaceMap the map of namespace prefixes. Each key is a
+     *    namespace prefix <code>String</code> that maps to a corresponding
+     *    namespace URI <code>String</code>.
+     * @throws NullPointerException if <code>xPath</code> or
+     *    <code>namespaceMap</code> are <code>null</code>
+     * @throws ClassCastException if any of the map's keys or entries are not
+     *    of type <code>String</code>
+     */
+    public XPathFilterParameterSpec(String xPath, Map namespaceMap) {
+        if (xPath == null || namespaceMap == null) {
+            throw new NullPointerException();
+        }
+        this.xPath = xPath;
+	nsMap = new HashMap(namespaceMap);
+	Iterator entries = nsMap.entrySet().iterator();
+	while (entries.hasNext()) {
+	    Map.Entry me = (Map.Entry) entries.next();
+	    if (!(me.getKey() instanceof String) || 
+		!(me.getValue() instanceof String)) {
+		throw new ClassCastException("not a String");
+	    }
+	}
+	nsMap = Collections.unmodifiableMap(nsMap);
+    }
+
+    /**
+     * Returns the XPath expression to be evaluated.
+     *
+     * @return the XPath expression to be evaluated
+     */
+    public String getXPath() {
+	return xPath;
+    }
+
+    /**
+     * Returns a map of namespace prefixes. Each key is a namespace prefix 
+     * <code>String</code> that maps to a corresponding namespace URI 
+     * <code>String</code>.
+     * <p>
+     * This implementation returns an {@link Collections#unmodifiableMap 
+     * unmodifiable map}.
+     *
+     * @return a <code>Map</code> of namespace prefixes to namespace URIs (may 
+     *    be empty, but never <code>null</code>)
+     */
+    public Map getNamespaceMap() {
+	return nsMap;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/spec/XPathType.java b/src/javax/xml/crypto/dsig/spec/XPathType.java
new file mode 100644
index 0000000..0e63b28
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/XPathType.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The XML Schema Definition of the <code>XPath</code> element as defined in the
+ * <a href="http://www.w3.org/TR/xmldsig-filter2">
+ * W3C Recommendation for XML-Signature XPath Filter 2.0</a>:
+ * <pre><code>
+ * &lt;schema xmlns="http://www.w3.org/2001/XMLSchema"
+ *         xmlns:xf="http://www.w3.org/2002/06/xmldsig-filter2"
+ *         targetNamespace="http://www.w3.org/2002/06/xmldsig-filter2"
+ *         version="0.1" elementFormDefault="qualified"&gt;
+ *
+ * &lt;element name="XPath"
+ *          type="xf:XPathType"/&gt;
+ *
+ * &lt;complexType name="XPathType"&gt;
+ *   &lt;simpleContent&gt;
+ *     &lt;extension base="string"&gt;
+ *       &lt;attribute name="Filter"&gt;
+ *         &lt;simpleType&gt;
+ *           &lt;restriction base="string"&gt;
+ *             &lt;enumeration value="intersect"/&gt;
+ *             &lt;enumeration value="subtract"/&gt;
+ *             &lt;enumeration value="union"/&gt;
+ *           &lt;/restriction&gt;
+ *         &lt;/simpleType&gt;
+ *       &lt;/attribute&gt;
+ *     &lt;/extension&gt;
+ *   &lt;/simpleContent&gt;
+ * &lt;/complexType&gt;
+ * </code></pre>
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see XPathFilter2ParameterSpec
+ */
+public class XPathType {
+
+    /**
+     * Represents the filter set operation.
+     */
+    public static class Filter {
+        private final String operation;
+
+        private Filter(String operation) {
+            this.operation = operation;
+        }
+
+        /**
+         * Returns the string form of the operation.
+         *
+         * @return the string form of the operation
+         */
+        public String toString() {
+            return operation;
+        }
+
+        /**
+         * The intersect filter operation.
+         */
+        public static final Filter INTERSECT = new Filter("intersect");
+
+        /**
+         * The subtract filter operation.
+         */
+        public static final Filter SUBTRACT = new Filter("subtract");
+
+        /**
+         * The union filter operation.
+         */
+        public static final Filter UNION = new Filter("union");
+    }
+
+    private final String expression;
+    private final Filter filter;
+    private Map nsMap;
+
+    /**
+     * Creates an <code>XPathType</code> instance with the specified XPath
+     * expression and filter.
+     *
+     * @param expression the XPath expression to be evaluated
+     * @param filter the filter operation ({@link Filter#INTERSECT},
+     *    {@link Filter#SUBTRACT}, or {@link Filter#UNION})
+     * @throws NullPointerException if <code>expression</code> or
+     *    <code>filter</code> is <code>null</code>
+     */
+    public XPathType(String expression, Filter filter) {
+        if (expression == null) {
+            throw new NullPointerException("expression cannot be null");
+        }
+        if (filter == null) {
+            throw new NullPointerException("filter cannot be null");
+        }
+        this.expression = expression;
+        this.filter = filter;
+        this.nsMap = Collections.EMPTY_MAP;
+    }
+
+    /**
+     * Creates an <code>XPathType</code> instance with the specified XPath
+     * expression, filter, and namespace map. The map is copied to protect
+     * against subsequent modification.
+     *
+     * @param expression the XPath expression to be evaluated
+     * @param filter the filter operation ({@link Filter#INTERSECT},
+     *    {@link Filter#SUBTRACT}, or {@link Filter#UNION})
+     * @param namespaceMap the map of namespace prefixes. Each key is a
+     *    namespace prefix <code>String</code> that maps to a corresponding
+     *    namespace URI <code>String</code>.
+     * @throws NullPointerException if <code>expression</code>,
+     *    <code>filter</code> or <code>namespaceMap</code> are
+     *    <code>null</code>
+     * @throws ClassCastException if any of the map's keys or entries are
+     *    not of type <code>String</code>
+     */
+    public XPathType(String expression, Filter filter, Map namespaceMap) {
+        this(expression, filter);
+        if (namespaceMap == null) {
+            throw new NullPointerException("namespaceMap cannot be null");
+        }
+        nsMap = new HashMap(namespaceMap);
+        Iterator entries = nsMap.entrySet().iterator();
+        while (entries.hasNext()) {
+            Map.Entry me = (Map.Entry) entries.next();
+            if (!(me.getKey() instanceof String) ||
+                !(me.getValue() instanceof String)) {
+                throw new ClassCastException("not a String");
+            }
+        }
+        nsMap = Collections.unmodifiableMap(nsMap);
+    }
+
+    /**
+     * Returns the XPath expression to be evaluated.
+     *
+     * @return the XPath expression to be evaluated
+     */
+    public String getExpression() {
+        return expression;
+    }
+
+    /**
+     * Returns the filter operation.
+     *
+     * @return the filter operation
+     */
+    public Filter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Returns a map of namespace prefixes. Each key is a namespace prefix
+     * <code>String</code> that maps to a corresponding namespace URI
+     * <code>String</code>.
+     * <p>
+     * This implementation returns an {@link Collections#unmodifiableMap
+     * unmodifiable map}.
+     *
+     * @return a <code>Map</code> of namespace prefixes to namespace URIs
+     *    (may be empty, but never <code>null</code>)
+     */
+    public Map getNamespaceMap() {
+        return nsMap;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/spec/XSLTTransformParameterSpec.java b/src/javax/xml/crypto/dsig/spec/XSLTTransformParameterSpec.java
new file mode 100644
index 0000000..f6759fa
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/XSLTTransformParameterSpec.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package javax.xml.crypto.dsig.spec;
+
+import javax.xml.crypto.dsig.Transform;
+import javax.xml.crypto.XMLStructure;
+
+/**
+ * Parameters for the <a href="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ * XSLT Transform Algorithm</a>.
+ * The parameters include a namespace-qualified stylesheet element.
+ *
+ * <p>An <code>XSLTTransformParameterSpec</code> is instantiated with a
+ * mechanism-dependent (ex: DOM) stylesheet element. For example:
+ * <pre>
+ *   DOMStructure stylesheet = new DOMStructure(element)
+ *   XSLTTransformParameterSpec spec = new XSLTransformParameterSpec(stylesheet);
+ * </pre>
+ * where <code>element</code> is an {@link org.w3c.dom.Element} containing
+ * the namespace-qualified stylesheet element.
+ *
+ * @author Sean Mullan
+ * @author JSR 105 Expert Group
+ * @see Transform
+ */
+public final class XSLTTransformParameterSpec implements TransformParameterSpec{
+    private XMLStructure stylesheet;
+
+    /**
+     * Creates an <code>XSLTTransformParameterSpec</code> with the specified 
+     * stylesheet.
+     *
+     * @param stylesheet the XSLT stylesheet to be used
+     * @throws NullPointerException if <code>stylesheet</code> is 
+     *    <code>null</code>
+     */
+    public XSLTTransformParameterSpec(XMLStructure stylesheet) {
+	if (stylesheet == null) {
+	    throw new NullPointerException();
+	}
+	this.stylesheet = stylesheet;
+    }
+
+    /**
+     * Returns the stylesheet.
+     *
+     * @return the stylesheet
+     */
+    public XMLStructure getStylesheet() {
+	return stylesheet;
+    }
+}
diff --git a/src/javax/xml/crypto/dsig/spec/package.html b/src/javax/xml/crypto/dsig/spec/package.html
new file mode 100644
index 0000000..b2e9ed4
--- /dev/null
+++ b/src/javax/xml/crypto/dsig/spec/package.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+<!--
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+-->
+<!--
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+-->
+</head>
+<body>
+Parameter classes for XML digital signatures. This package
+contains interfaces and classes representing input parameters for the
+digest, signature, transform, or canonicalization algorithms used in
+the processing of XML signatures. 
+
+<h2>Package Specification</h2>
+
+<ul>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-core/">
+XML-Signature Syntax and Processing: W3C Recommendation</a>
+<li>
+<a href="http://www.ietf.org/rfc/rfc3275.txt">
+RFC 3275: XML-Signature Syntax and Processing</a>
+<li>
+<a href="http://www.w3.org/TR/xml-exc-c14n/">
+Exclusive XML Canonicalization algorithm: W3C Recommendation</a>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-filter2/">
+XPath Filter 2.0 Transform Algorithm: W3C Recommendation</a>
+</ul>
+
+</body>
+</html>
diff --git a/src/javax/xml/crypto/package.html b/src/javax/xml/crypto/package.html
new file mode 100644
index 0000000..0a14f85
--- /dev/null
+++ b/src/javax/xml/crypto/package.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+<!--
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+-->
+<!--
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+-->
+</head>
+<body>
+Common classes for XML cryptography. This package includes common classes that 
+are used to perform XML cryptographic operations, such as generating
+an XML signature or encrypting XML data. 
+
+<h2>Package Specification</h2>
+
+<ul>
+<li>
+<a href="http://www.w3.org/TR/xmldsig-core/">
+XML-Signature Syntax and Processing: W3C Recommendation</a>
+<li>
+<a href="http://www.ietf.org/rfc/rfc3275.txt">
+RFC 3275: XML-Signature Syntax and Processing</a>
+</ul>
+
+</body>
+</html>
diff --git a/src/org/apache/xml/security/Init.java b/src/org/apache/xml/security/Init.java
new file mode 100644
index 0000000..0b79ad0
--- /dev/null
+++ b/src/org/apache/xml/security/Init.java
@@ -0,0 +1,404 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security;
+
+
+
+import java.io.InputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.algorithms.SignatureAlgorithm;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.keyresolver.KeyResolver;
+import org.apache.xml.security.transforms.Transform;
+import org.apache.xml.security.utils.I18n;
+//import org.apache.xml.security.utils.PRNG;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * This class does the configuration of the library. This includes creating
+ * the mapping of Canonicalization and Transform algorithms. Initialization is
+ * done by calling {@link Init#init} which should be done in any static block
+ * of the files of this library. We ensure that this call is only executed once.
+ *
+ * @author $Author$
+ */
+public class Init {
+
+  /** {@link org.apache.commons.logging} logging facility */
+  static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Init.class.getName());
+
+   /** Field _initialized */
+   private static boolean _alreadyInitialized = false;
+   
+   /** The namespace for CONF file **/
+   public static final String CONF_NS="http://www.xmlsecurity.org/NS/#configuration";
+
+   /**
+    * Method isInitialized
+    * @return true if the librairy is already initialized.     
+    *
+    */
+   public static final boolean isInitialized() {
+      return Init._alreadyInitialized;
+   }
+
+   /**
+    * Method init
+    *
+    */
+   public synchronized static void init() {
+
+      if (_alreadyInitialized) {
+        return;
+      }
+      long XX_configure_i18n_end=0;
+      long XX_configure_reg_c14n_start=0;
+      long XX_configure_reg_c14n_end=0;
+      long XX_configure_reg_jcemapper_end=0;
+      long XX_configure_reg_keyInfo_start=0;
+      long XX_configure_reg_keyResolver_end=0;
+      long XX_configure_reg_prefixes_start=0;
+      long XX_configure_reg_resourceresolver_start=0;
+      long XX_configure_reg_sigalgos_end=0;
+      long XX_configure_reg_transforms_end=0;
+      long XX_configure_reg_keyInfo_end=0;
+      long XX_configure_reg_keyResolver_start=0;
+         _alreadyInitialized = true;
+
+         try {
+            long XX_init_start = System.currentTimeMillis();
+            long XX_prng_start = System.currentTimeMillis();
+
+            //PRNG.init(new java.security.SecureRandom());
+
+            long XX_prng_end = System.currentTimeMillis();
+
+            /* read library configuration file */
+            long XX_parsing_start = System.currentTimeMillis();
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+            dbf.setNamespaceAware(true);
+            dbf.setValidating(false);
+
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            // InputStream is = Class.forName("org.apache.xml.security.Init").getResourceAsStream("resource/config.xml");
+            String cfile = System.getProperty("org.apache.xml.security.resource.config");
+            InputStream is =
+               Class.forName("org.apache.xml.security.Init")
+                  .getResourceAsStream(cfile != null ? cfile : "resource/config.xml");
+
+            Document doc = db.parse(is);
+            long XX_parsing_end = System.currentTimeMillis();                       
+            long XX_configure_i18n_start = 0;            
+            
+            {
+                XX_configure_reg_keyInfo_start = System.currentTimeMillis();
+               try {
+                  KeyInfo.init();
+               } catch (Exception e) {
+                  e.printStackTrace();
+
+                  throw e;
+               }
+               XX_configure_reg_keyInfo_end = System.currentTimeMillis();
+            }
+            
+			long XX_configure_reg_transforms_start=0;
+			long XX_configure_reg_jcemapper_start=0;
+			long XX_configure_reg_sigalgos_start=0;
+			long XX_configure_reg_resourceresolver_end=0;
+			long XX_configure_reg_prefixes_end=0;
+            Node config=doc.getFirstChild();
+            for (;config!=null;config=config.getNextSibling()) {
+            	if ("Configuration".equals(config.getLocalName())) {
+            		break;
+                }
+            }
+			for (Node el=config.getFirstChild();el!=null;el=el.getNextSibling()) {
+                if (!(el instanceof Element)) {
+                	continue;
+                }
+                String tag=el.getLocalName();
+            if (tag.equals("ResourceBundles")){
+                XX_configure_i18n_start = System.currentTimeMillis();
+            	Element resource=(Element)el;
+               /* configure internationalization */
+               Attr langAttr = resource.getAttributeNode("defaultLanguageCode");
+               Attr countryAttr = resource.getAttributeNode("defaultCountryCode");
+               String languageCode = (langAttr == null)
+                                     ? null
+                                     : langAttr.getNodeValue();
+               String countryCode = (countryAttr == null)
+                                    ? null
+                                    : countryAttr.getNodeValue();
+
+               I18n.init(languageCode, countryCode);
+               XX_configure_i18n_end = System.currentTimeMillis();
+            }
+           
+            if (tag.equals("CanonicalizationMethods")){
+                XX_configure_reg_c14n_start = System.currentTimeMillis();
+               Canonicalizer.init();
+               Element[] list=XMLUtils.selectNodes(el.getFirstChild(),CONF_NS,"CanonicalizationMethod");               
+
+               for (int i = 0; i < list.length; i++) {
+                  String URI = list[i].getAttributeNS(null,
+                                  "URI");
+                  String JAVACLASS =
+                     list[i].getAttributeNS(null,
+                        "JAVACLASS");
+                  try {
+                      Class.forName(JAVACLASS);
+/*                     Method methods[] = c.getMethods();
+
+                     for (int j = 0; j < methods.length; j++) {
+                        Method currMeth = methods[j];
+
+                        if (currMeth.getDeclaringClass().getName()
+                                .equals(JAVACLASS)) {
+                           log.debug(currMeth.getDeclaringClass());
+                        }
+                     }*/
+                      if (log.isDebugEnabled())
+                      	log.debug("Canonicalizer.register(" + URI + ", "
+                            + JAVACLASS + ")");
+                     Canonicalizer.register(URI, JAVACLASS);
+                  } catch (ClassNotFoundException e) {
+                     Object exArgs[] = { URI, JAVACLASS };
+
+                     log.fatal(I18n.translate("algorithm.classDoesNotExist",
+                                              exArgs));
+                  }
+               }
+               XX_configure_reg_c14n_end = System.currentTimeMillis();
+            }
+                        
+            if (tag.equals("TransformAlgorithms")){
+               XX_configure_reg_transforms_start = System.currentTimeMillis();
+               Transform.init();
+
+               Element[] tranElem = XMLUtils.selectNodes(el.getFirstChild(),CONF_NS,"TransformAlgorithm");
+
+               for (int i = 0; i < tranElem.length; i++) {
+                  String URI = tranElem[i].getAttributeNS(null,
+                                  "URI");
+                  String JAVACLASS =
+                     tranElem[i].getAttributeNS(null,
+                        "JAVACLASS");
+                  try {
+                     Class.forName(JAVACLASS);
+                     if (log.isDebugEnabled())
+                     	log.debug("Transform.register(" + URI + ", " + JAVACLASS
+                            + ")");
+                     Transform.register(URI, JAVACLASS);
+                  } catch (ClassNotFoundException e) {
+                     Object exArgs[] = { URI, JAVACLASS };
+
+                     log.fatal(I18n.translate("algorithm.classDoesNotExist",
+                                              exArgs));
+
+                  } catch (NoClassDefFoundError ex) {
+					  log.warn("Not able to found dependecies for algorithm, I'm keep working.");
+                  }
+               }
+               XX_configure_reg_transforms_end = System.currentTimeMillis();
+            }
+                        
+
+            if ("JCEAlgorithmMappings".equals(tag)){
+               XX_configure_reg_jcemapper_start = System.currentTimeMillis();
+               JCEMapper.init((Element)el);
+               XX_configure_reg_jcemapper_end = System.currentTimeMillis();
+            }
+
+                        
+
+            if (tag.equals("SignatureAlgorithms")){
+               XX_configure_reg_sigalgos_start = System.currentTimeMillis();
+               SignatureAlgorithm.providerInit();
+
+               Element[] sigElems = XMLUtils.selectNodes(el.getFirstChild(), CONF_NS,                  
+                  "SignatureAlgorithm");
+
+               for (int i = 0; i < sigElems.length; i++) {
+                  String URI = sigElems[i].getAttributeNS(null,
+                                  "URI");
+                  String JAVACLASS =
+                    sigElems[i].getAttributeNS(null,
+                        "JAVACLASS");
+
+                  /** $todo$ handle registering */
+
+                  try {
+                      Class.forName(JAVACLASS);
+ //                    Method methods[] = c.getMethods();
+
+//                     for (int j = 0; j < methods.length; j++) {
+//                        Method currMeth = methods[j];
+//
+//                        if (currMeth.getDeclaringClass().getName()
+//                                .equals(JAVACLASS)) {
+//                           log.debug(currMeth.getDeclaringClass());
+//                        }
+//                     }
+                      if (log.isDebugEnabled())
+                      	log.debug("SignatureAlgorithm.register(" + URI + ", "
+                            + JAVACLASS + ")");
+                     SignatureAlgorithm.register(URI, JAVACLASS);
+                  } catch (ClassNotFoundException e) {
+                     Object exArgs[] = { URI, JAVACLASS };
+
+                     log.fatal(I18n.translate("algorithm.classDoesNotExist",
+                                              exArgs));
+
+                  }
+               }
+               XX_configure_reg_sigalgos_end = System.currentTimeMillis();
+            }
+
+            
+            
+            if (tag.equals("ResourceResolvers")){
+               XX_configure_reg_resourceresolver_start = System.currentTimeMillis();
+               ResourceResolver.init();
+
+               Element[]resolverElem = XMLUtils.selectNodes(el.getFirstChild(),CONF_NS,
+                  "Resolver");
+
+               for (int i = 0; i < resolverElem.length; i++) {
+                  String JAVACLASS =
+                      resolverElem[i].getAttributeNS(null,
+                        "JAVACLASS");
+                  String Description =
+                     resolverElem[i].getAttributeNS(null,
+                        "DESCRIPTION");
+
+                  if ((Description != null) && (Description.length() > 0)) {
+                    if (log.isDebugEnabled())
+                    	log.debug("Register Resolver: " + JAVACLASS + ": "
+                               + Description);
+                  } else {
+                    if (log.isDebugEnabled())
+                    	log.debug("Register Resolver: " + JAVACLASS
+                               + ": For unknown purposes");
+                  }
+				  try {
+					  ResourceResolver.register(JAVACLASS);
+				  } catch (Throwable e) {
+					  log.warn("Cannot register:"+JAVACLASS+" perhaps some needed jars are not installed",e);
+				  }
+                  XX_configure_reg_resourceresolver_end =
+                    System.currentTimeMillis();
+               }               
+
+            }
+
+            
+
+            
+
+                        
+            if (tag.equals("KeyResolver")){
+               XX_configure_reg_keyResolver_start =System.currentTimeMillis();
+               KeyResolver.init();
+
+               Element[] resolverElem = XMLUtils.selectNodes(el.getFirstChild(), CONF_NS,"Resolver");
+
+               for (int i = 0; i < resolverElem.length; i++) {
+                  String JAVACLASS =
+                     resolverElem[i].getAttributeNS(null,
+                        "JAVACLASS");
+                  String Description =
+                     resolverElem[i].getAttributeNS(null,
+                        "DESCRIPTION");
+
+                  if ((Description != null) && (Description.length() > 0)) {
+                    if (log.isDebugEnabled())
+                    	log.debug("Register Resolver: " + JAVACLASS + ": "
+                               + Description);
+                  } else {
+                    if (log.isDebugEnabled())
+                    	log.debug("Register Resolver: " + JAVACLASS
+                               + ": For unknown purposes");
+                  }
+
+                  KeyResolver.register(JAVACLASS);
+               }
+               XX_configure_reg_keyResolver_end = System.currentTimeMillis();
+            }
+
+                        
+            if (tag.equals("PrefixMappings")){
+                XX_configure_reg_prefixes_start = System.currentTimeMillis();
+                if (log.isDebugEnabled())
+                	log.debug("Now I try to bind prefixes:");
+
+               Element[] nl = XMLUtils.selectNodes(el.getFirstChild(), CONF_NS,"PrefixMapping");
+
+               for (int i = 0; i < nl.length; i++) {
+                  String namespace = nl[i].getAttributeNS(null,
+                                        "namespace");
+                  String prefix = nl[i].getAttributeNS(null,
+                                     "prefix");
+                  if (log.isDebugEnabled())
+                  	log.debug("Now I try to bind " + prefix + " to " + namespace);
+                  org.apache.xml.security.utils.ElementProxy
+                     .setDefaultPrefix(namespace, prefix);
+               }
+               XX_configure_reg_prefixes_end = System.currentTimeMillis();
+            }
+            }
+            
+            long XX_init_end = System.currentTimeMillis();
+
+            //J-
+            if (log.isDebugEnabled()) {
+            	log.debug("XX_init                             " + ((int)(XX_init_end - XX_init_start)) + " ms");
+                log.debug("  XX_prng                           " + ((int)(XX_prng_end - XX_prng_start)) + " ms");
+                log.debug("  XX_parsing                        " + ((int)(XX_parsing_end - XX_parsing_start)) + " ms");            
+                log.debug("  XX_configure_i18n                 " + ((int)(XX_configure_i18n_end- XX_configure_i18n_start)) + " ms");
+                log.debug("  XX_configure_reg_c14n             " + ((int)(XX_configure_reg_c14n_end- XX_configure_reg_c14n_start)) + " ms");                       
+                log.debug("  XX_configure_reg_jcemapper        " + ((int)(XX_configure_reg_jcemapper_end- XX_configure_reg_jcemapper_start)) + " ms");
+                log.debug("  XX_configure_reg_keyInfo          " + ((int)(XX_configure_reg_keyInfo_end- XX_configure_reg_keyInfo_start)) + " ms");
+                log.debug("  XX_configure_reg_keyResolver      " + ((int)(XX_configure_reg_keyResolver_end- XX_configure_reg_keyResolver_start)) + " ms");
+                log.debug("  XX_configure_reg_prefixes         " + ((int)(XX_configure_reg_prefixes_end- XX_configure_reg_prefixes_start)) + " ms");            
+                log.debug("  XX_configure_reg_resourceresolver " + ((int)(XX_configure_reg_resourceresolver_end- XX_configure_reg_resourceresolver_start)) + " ms");
+                log.debug("  XX_configure_reg_sigalgos         " + ((int)(XX_configure_reg_sigalgos_end- XX_configure_reg_sigalgos_start)) + " ms");
+                log.debug("  XX_configure_reg_transforms       " + ((int)(XX_configure_reg_transforms_end- XX_configure_reg_transforms_start)) + " ms");
+            }
+         } catch (Exception e) {
+            log.fatal("Bad: ", e);
+            e.printStackTrace();
+         }
+      
+   }
+
+  
+}
+
diff --git a/src/org/apache/xml/security/algorithms/Algorithm.java b/src/org/apache/xml/security/algorithms/Algorithm.java
new file mode 100644
index 0000000..4608031
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/Algorithm.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.ElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * The Algorithm class which stores the Algorithm URI as a string.
+ *
+ */
+public abstract class Algorithm extends ElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Algorithm.class.getName());
+
+   /**
+    *
+    * @param doc
+    * @param algorithmURI is the URI of the algorithm as String
+    */
+   public Algorithm(Document doc, String algorithmURI) {
+
+      super(doc);
+
+      this.setAlgorithmURI(algorithmURI);
+   }
+
+   /**
+    * Constructor Algorithm
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public Algorithm(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Method getAlgorithmURI
+    *
+    * @return The URI of the alogrithm
+    */
+   public String getAlgorithmURI() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ALGORITHM);
+   }
+
+   /**
+    * Sets the algorithm's URI as used in the signature.
+    *
+    * @param algorithmURI is the URI of the algorithm as String
+    */
+   protected void setAlgorithmURI(String algorithmURI) {
+
+      if ((this._state == MODE_CREATE) && (algorithmURI != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ALGORITHM,
+                                                algorithmURI);
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/JCEMapper.java b/src/org/apache/xml/security/algorithms/JCEMapper.java
new file mode 100644
index 0000000..a8d6166
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/JCEMapper.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms;
+
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+import org.apache.xml.security.Init;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+
+/**
+ * This class maps algorithm identifier URIs to JAVA JCE class names.
+ *
+ * @author $Author$
+ */
+public class JCEMapper {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(JCEMapper.class.getName());
+
+
+   
+   private static Map uriToJCEName = new HashMap();
+   
+   private static Map algorithmsMap = new HashMap();
+
+   private static String providerName = null;
+   /**
+    * Method init
+    *
+    * @param mappingElement
+    * @throws Exception
+    */
+   public static void init(Element mappingElement) throws Exception {
+
+      loadAlgorithms((Element)mappingElement.getElementsByTagName("Algorithms").item(0));
+   }
+
+   static void loadAlgorithms( Element algorithmsEl) {
+       Element[] algorithms = XMLUtils.selectNodes(algorithmsEl.getFirstChild(),Init.CONF_NS,"Algorithm");
+       for (int i = 0 ;i < algorithms.length ;i ++) {
+           Element el = algorithms[i];
+           String id = el.getAttribute("URI");
+           String jceName = el.getAttribute("JCEName");
+           uriToJCEName.put(id, jceName);
+           algorithmsMap.put(id, new Algorithm(el));
+       }
+   }
+
+   static Algorithm getAlgorithmMapping(String algoURI) {
+   	   return ((Algorithm)algorithmsMap.get(algoURI));
+   }
+
+   /**
+    * Method translateURItoJCEID
+    *
+    * @param AlgorithmURI
+    * @return the JCE standard name corresponding to the given URI
+    *
+    */
+   public static String translateURItoJCEID(String AlgorithmURI) {
+      if (log.isDebugEnabled())
+          log.debug("Request for URI " + AlgorithmURI);
+
+      String jceName = (String) uriToJCEName.get(AlgorithmURI);
+      return jceName;
+   }
+
+   /**
+    * Method getAlgorithmClassFromURI
+    * NOTE(Raul Benito) It seems a buggy function the loop doesn't do
+    * anything??
+    * @param AlgorithmURI
+    * @return the class name that implements this algorithm
+    *
+    */
+   public static String getAlgorithmClassFromURI(String AlgorithmURI) {
+       if (log.isDebugEnabled())
+           log.debug("Request for URI " + AlgorithmURI);
+
+       return ((Algorithm) algorithmsMap.get(AlgorithmURI)).algorithmClass;
+   }
+
+   /**
+    * Returns the keylength in bit for a particular algorithm.
+    *
+    * @param AlgorithmURI
+    * @return The length of the key used in the alogrithm
+    */
+   public static int getKeyLengthFromURI(String AlgorithmURI) {
+       return Integer.parseInt(((Algorithm) algorithmsMap.get(AlgorithmURI)).keyLength);
+   }
+
+   /**
+    * Method getJCEKeyAlgorithmFromURI
+    *
+    * @param AlgorithmURI
+    * @return The KeyAlgorithm for the given URI.
+    *
+    */
+   public static String getJCEKeyAlgorithmFromURI(String AlgorithmURI) {
+
+        return  ((Algorithm) algorithmsMap.get(AlgorithmURI)).requiredKey;
+
+   }
+
+   /**
+    * Gets the default Provider for obtaining the security algorithms
+    * @return the default providerId.  
+    */
+   public static String getProviderId() {
+   		return providerName;
+   }
+   
+   /**
+    * Sets the default Provider for obtaining the security algorithms
+    * @param provider the default providerId.  
+    */
+   public static void setProviderId(String provider) {
+   		providerName=provider;
+   }
+   
+   /**
+    * Represents the Algorithm xml element
+    */   
+   public static class Algorithm {
+   	    String algorithmClass;
+   	    String keyLength;
+            String requiredKey;
+        /**
+         * Gets data from element
+         * @param el
+         */
+        public Algorithm(Element el) {
+        	algorithmClass=el.getAttribute("AlgorithmClass");
+            keyLength=el.getAttribute("KeyLength");
+            requiredKey=el.getAttribute("RequiredKey");
+        }
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java b/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
new file mode 100644
index 0000000..823f1bf
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
@@ -0,0 +1,252 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms;
+
+
+
+import java.security.MessageDigest;
+import java.security.NoSuchProviderException;
+
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.EncryptionConstants;
+import org.w3c.dom.Document;
+
+
+/**
+ * Digest Message wrapper & selector class.
+ *
+ * <pre>
+ * MessageDigestAlgorithm.getInstance()
+ * </pre>
+ *
+ */
+public class MessageDigestAlgorithm extends Algorithm {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    MessageDigestAlgorithm.class.getName());
+
+    /** Message Digest - NOT RECOMMENDED MD5*/
+   public static final String ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5 = Constants.MoreAlgorithmsSpecNS + "md5";
+   /** Digest - Required SHA1*/
+   public static final String ALGO_ID_DIGEST_SHA1 = Constants.SignatureSpecNS + "sha1";
+   /** Message Digest - RECOMMENDED SHA256*/
+   public static final String ALGO_ID_DIGEST_SHA256 = EncryptionConstants.EncryptionSpecNS + "sha256";
+   /** Message Digest - OPTIONAL SHA384*/
+   public static final String ALGO_ID_DIGEST_SHA384 = Constants.MoreAlgorithmsSpecNS + "sha384";
+   /** Message Digest - OPTIONAL SHA512*/
+   public static final String ALGO_ID_DIGEST_SHA512 = EncryptionConstants.EncryptionSpecNS + "sha512";
+   /** Message Digest - OPTIONAL RIPEMD-160*/
+   public static final String ALGO_ID_DIGEST_RIPEMD160 = EncryptionConstants.EncryptionSpecNS + "ripemd160";
+
+   /** Field algorithm stores the actual {@link java.security.MessageDigest} */
+   java.security.MessageDigest algorithm = null;
+
+   /**
+    * Constructor for the brave who pass their own message digest algorithms and the corresponding URI.
+    * @param doc
+    * @param messageDigest
+    * @param algorithmURI
+    */
+   private MessageDigestAlgorithm(Document doc, MessageDigest messageDigest,
+                                  String algorithmURI) {
+
+      super(doc, algorithmURI);
+
+      this.algorithm = messageDigest;
+   }
+
+   /**
+    * Factory method for constructing a message digest algorithm by name.
+    *
+    * @param doc
+    * @param algorithmURI
+    * @return The MessageDigestAlgorithm element to attach in document and to digest
+    * @throws XMLSignatureException
+    */
+   public static MessageDigestAlgorithm getInstance(
+           Document doc, String algorithmURI) throws XMLSignatureException {
+
+      String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI);
+
+	  if (algorithmID == null) {
+		  Object[] exArgs = { algorithmURI };
+		  throw new XMLSignatureException("algorithms.NoSuchMap", exArgs);
+	  }
+
+      MessageDigest md;
+      String provider=JCEMapper.getProviderId();
+      try {      	
+      	 if (provider==null) {
+      	 	md = MessageDigest.getInstance(algorithmID);
+      	 } else {
+      	 	md = MessageDigest.getInstance(algorithmID,provider);
+      	 }
+      } catch (java.security.NoSuchAlgorithmException ex) {
+         Object[] exArgs = { algorithmID,
+                             ex.getLocalizedMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+      } catch (NoSuchProviderException ex) {
+      	Object[] exArgs = { algorithmID,
+      						ex.getLocalizedMessage() };
+      	
+      	throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+	}
+      return new MessageDigestAlgorithm(doc, md, algorithmURI);
+   }
+
+   /**
+    * Returns the actual {@link java.security.MessageDigest} algorithm object
+    *
+    * @return the actual {@link java.security.MessageDigest} algorithm object
+    */
+   public java.security.MessageDigest getAlgorithm() {
+      return this.algorithm;
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#isEqual}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @param digesta
+    * @param digestb
+    * @return the result of the {@link java.security.MessageDigest#isEqual} method
+    */
+   public static boolean isEqual(byte[] digesta, byte[] digestb) {
+      return java.security.MessageDigest.isEqual(digesta, digestb);
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#digest()}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @return the result of the {@link java.security.MessageDigest#digest()} method
+    */
+   public byte[] digest() {
+      return this.algorithm.digest();
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#digest(byte[])}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @param input
+    * @return the result of the {@link java.security.MessageDigest#digest(byte[])} method
+    */
+   public byte[] digest(byte input[]) {
+      return this.algorithm.digest(input);
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#digest(byte[], int, int)}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @param buf
+    * @param offset
+    * @param len
+    * @return the result of the {@link java.security.MessageDigest#digest(byte[], int, int)} method
+    * @throws java.security.DigestException
+    */
+   public int digest(byte buf[], int offset, int len)
+           throws java.security.DigestException {
+      return this.algorithm.digest(buf, offset, len);
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#getAlgorithm}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @return the result of the {@link java.security.MessageDigest#getAlgorithm} method
+    */
+   public String getJCEAlgorithmString() {
+      return this.algorithm.getAlgorithm();
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#getProvider}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @return the result of the {@link java.security.MessageDigest#getProvider} method
+    */
+   public java.security.Provider getJCEProvider() {
+      return this.algorithm.getProvider();
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#getDigestLength}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @return the result of the {@link java.security.MessageDigest#getDigestLength} method
+    */
+   public int getDigestLength() {
+      return this.algorithm.getDigestLength();
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#reset}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    */
+   public void reset() {
+      this.algorithm.reset();
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#update(byte[])}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @param input
+    */
+   public void update(byte[] input) {
+      this.algorithm.update(input);
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#update(byte)}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @param input
+    */
+   public void update(byte input) {
+      this.algorithm.update(input);
+   }
+
+   /**
+    * Proxy method for {@link java.security.MessageDigest#update(byte[], int, int)}
+    * which is executed on the internal {@link java.security.MessageDigest} object.
+    *
+    * @param buf
+    * @param offset
+    * @param len
+    */
+   public void update(byte buf[], int offset, int len) {
+      this.algorithm.update(buf, offset, len);
+   }
+
+   /** @inheritDoc */
+   public String getBaseNamespace() {
+      return Constants.SignatureSpecNS;
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_DIGESTMETHOD;
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/SignatureAlgorithm.java b/src/org/apache/xml/security/algorithms/SignatureAlgorithm.java
new file mode 100644
index 0000000..5cfeb8a
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/SignatureAlgorithm.java
@@ -0,0 +1,404 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms;
+
+
+import java.security.Key;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.HashMap;
+
+import org.apache.xml.security.algorithms.implementations.IntegrityHmac;
+import org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * Allows selection of digital signature's algorithm, private keys, other security parameters, and algorithm's ID.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class SignatureAlgorithm extends Algorithm {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(SignatureAlgorithm.class.getName());
+
+   /** Field _alreadyInitialized */
+   static boolean _alreadyInitialized = false;
+
+   /** All available algorithm classes are registered here */
+   static HashMap _algorithmHash = null;
+
+   /** Field _signatureAlgorithm */
+   protected SignatureAlgorithmSpi _signatureAlgorithm = null;
+
+   /**
+    * Constructor SignatureAlgorithm
+    *
+    * @param doc
+    * @param algorithmURI
+    * @throws XMLSecurityException
+    */
+   public SignatureAlgorithm(Document doc, String algorithmURI)
+           throws XMLSecurityException {
+
+      super(doc, algorithmURI);
+
+      try {
+         Class implementingClass =
+            SignatureAlgorithm.getImplementingClass(algorithmURI);
+         if (log.isDebugEnabled())
+         	log.debug("Create URI \"" + algorithmURI + "\" class \""
+                   + implementingClass + "\"");
+
+         this._signatureAlgorithm =
+            (SignatureAlgorithmSpi) implementingClass.newInstance();
+      }  catch (IllegalAccessException ex) {
+         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                         ex);
+      } catch (InstantiationException ex) {
+         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                         ex);
+      } catch (NullPointerException ex) {
+         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                         ex);
+      }
+   }
+
+   /**
+    * Constructor SignatureAlgorithm
+    *
+    * @param doc
+    * @param algorithmURI
+    * @param HMACOutputLength
+    * @throws XMLSecurityException
+    */
+   public SignatureAlgorithm(
+           Document doc, String algorithmURI, int HMACOutputLength)
+              throws XMLSecurityException {
+
+      this(doc, algorithmURI);
+
+      this._signatureAlgorithm.engineSetHMACOutputLength(HMACOutputLength);
+      ((IntegrityHmac)this._signatureAlgorithm)
+         .engineAddContextToElement(this._constructionElement);
+   }
+
+   /**
+    * Constructor SignatureAlgorithm
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public SignatureAlgorithm(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+
+      String algorithmURI = this.getURI();
+
+      try {
+         Class implementingClass =
+            SignatureAlgorithm.getImplementingClass(algorithmURI);
+         if (log.isDebugEnabled())
+         	log.debug("Create URI \"" + algorithmURI + "\" class \""
+                   + implementingClass + "\"");
+
+         this._signatureAlgorithm =
+            (SignatureAlgorithmSpi) implementingClass.newInstance();
+
+         this._signatureAlgorithm
+            .engineGetContextFromElement(this._constructionElement);
+      }  catch (IllegalAccessException ex) {
+         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                         ex);
+      } catch (InstantiationException ex) {
+         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                         ex);
+      } catch (NullPointerException ex) {
+         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+                                         ex);
+      }
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#sign()}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @return the result of the {@link java.security.Signature#sign()} method
+    * @throws XMLSignatureException
+    */
+   public byte[] sign() throws XMLSignatureException {
+      return this._signatureAlgorithm.engineSign();
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#getAlgorithm}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @return the result of the {@link java.security.Signature#getAlgorithm} method
+    */
+   public String getJCEAlgorithmString() {
+      return this._signatureAlgorithm.engineGetJCEAlgorithmString();
+   }
+
+   /**
+    * Method getJCEProviderName
+    *
+    * @return The Provider of this Signature Alogrithm
+    */
+   public String getJCEProviderName() {
+      return this._signatureAlgorithm.engineGetJCEProviderName();
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param input
+    * @throws XMLSignatureException
+    */
+   public void update(byte[] input) throws XMLSignatureException {
+      this._signatureAlgorithm.engineUpdate(input);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param input
+    * @throws XMLSignatureException
+    */
+   public void update(byte input) throws XMLSignatureException {
+      this._signatureAlgorithm.engineUpdate(input);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[], int, int)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param buf
+    * @param offset
+    * @param len
+    * @throws XMLSignatureException
+    */
+   public void update(byte buf[], int offset, int len)
+           throws XMLSignatureException {
+      this._signatureAlgorithm.engineUpdate(buf, offset, len);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signingKey
+    * @throws XMLSignatureException
+    */
+   public void initSign(Key signingKey) throws XMLSignatureException {
+      this._signatureAlgorithm.engineInitSign(signingKey);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey, java.security.SecureRandom)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signingKey
+    * @param secureRandom
+    * @throws XMLSignatureException
+    */
+   public void initSign(Key signingKey, SecureRandom secureRandom)
+           throws XMLSignatureException {
+      this._signatureAlgorithm.engineInitSign(signingKey, secureRandom);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signingKey
+    * @param algorithmParameterSpec
+    * @throws XMLSignatureException
+    */
+   public void initSign(
+           Key signingKey, AlgorithmParameterSpec algorithmParameterSpec)
+              throws XMLSignatureException {
+      this._signatureAlgorithm.engineInitSign(signingKey,
+                                              algorithmParameterSpec);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#setParameter(java.security.spec.AlgorithmParameterSpec)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param params
+    * @throws XMLSignatureException
+    */
+   public void setParameter(AlgorithmParameterSpec params)
+           throws XMLSignatureException {
+      this._signatureAlgorithm.engineSetParameter(params);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#initVerify(java.security.PublicKey)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param verificationKey
+    * @throws XMLSignatureException
+    */
+   public void initVerify(Key verificationKey) throws XMLSignatureException {
+      this._signatureAlgorithm.engineInitVerify(verificationKey);
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#verify(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signature
+    * @return true if if the signature is valid.
+    * 
+    * @throws XMLSignatureException
+    */
+   public boolean verify(byte[] signature) throws XMLSignatureException {
+      return this._signatureAlgorithm.engineVerify(signature);
+   }
+
+   /**
+    * Returns the URI representation of Transformation algorithm
+    *
+    * @return the URI representation of Transformation algorithm
+    */
+   public final String getURI() {
+      return this._constructionElement.getAttributeNS(null,
+              Constants._ATT_ALGORITHM);
+   }
+
+   /**
+    * Initalizes for this {@link org.apache.xml.security.transforms.Transform}
+    *
+    */
+   public static void providerInit() {
+
+      if (SignatureAlgorithm.log == null) {
+         SignatureAlgorithm.log =
+            org.apache.commons.logging.LogFactory
+               .getLog(SignatureAlgorithm.class.getName());
+      }
+
+      log.debug("Init() called");
+
+      if (!SignatureAlgorithm._alreadyInitialized) {
+         SignatureAlgorithm._algorithmHash = new HashMap(10);
+         SignatureAlgorithm._alreadyInitialized = true;
+      }
+   }
+
+   /**
+    * Registers implementing class of the Transform algorithm with algorithmURI
+    *
+    * @param algorithmURI algorithmURI URI representation of <code>Transform algorithm</code>.
+    * @param implementingClass <code>implementingClass</code> the implementing class of {@link SignatureAlgorithmSpi}
+    * @throws AlgorithmAlreadyRegisteredException if specified algorithmURI is already registered
+    * @throws XMLSignatureException 
+    */
+   public static void register(String algorithmURI, String implementingClass)
+           throws AlgorithmAlreadyRegisteredException,XMLSignatureException {
+
+      {
+         if (log.isDebugEnabled())
+         	log.debug("Try to register " + algorithmURI + " " + implementingClass);
+
+         // are we already registered?
+         Class registeredClassClass =
+            SignatureAlgorithm.getImplementingClass(algorithmURI);
+		 if (registeredClassClass!=null) {
+			 String registeredClass = registeredClassClass.getName();
+
+			 if ((registeredClass != null) && (registeredClass.length() != 0)) {
+				 Object exArgs[] = { algorithmURI, registeredClass };
+
+				 throw new AlgorithmAlreadyRegisteredException(
+						 "algorithm.alreadyRegistered", exArgs);
+			 }
+		 }
+		 try {	         	   			 
+			 SignatureAlgorithm._algorithmHash.put(algorithmURI, Class.forName(implementingClass));
+	      } catch (ClassNotFoundException ex) {
+	         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+	         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+	                                         ex);
+	      } catch (NullPointerException ex) {
+	         Object exArgs[] = { algorithmURI, ex.getMessage() };
+
+	         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs,
+	                                         ex);
+	      }
+         
+      }
+   }
+
+   /**
+    * Method getImplementingClass
+    *
+    * @param URI
+    * @return the class that implements the URI
+    */
+   private static Class getImplementingClass(String URI) {
+
+      if (SignatureAlgorithm._algorithmHash == null) {
+         return null;
+      }
+
+      return (Class) SignatureAlgorithm._algorithmHash.get(URI);
+   }
+
+   /**
+    * Method getBaseNamespace
+    *
+    * @return URI of this element
+    */
+   public String getBaseNamespace() {
+      return Constants.SignatureSpecNS;
+   }
+
+   /**
+    * Method getBaseLocalName
+    *
+    * @return Local name
+    */
+   public String getBaseLocalName() {
+      return Constants._TAG_SIGNATUREMETHOD;
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java b/src/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java
new file mode 100644
index 0000000..9917ec7
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms;
+
+
+
+import java.security.Key;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public abstract class SignatureAlgorithmSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(SignatureAlgorithmSpi.class.getName());
+
+   /**
+    * Returns the URI representation of <code>Transformation algorithm</code>
+    *
+    * @return the URI representation of <code>Transformation algorithm</code>
+    */
+   protected abstract String engineGetURI();
+
+   /**
+    * Proxy method for {@link java.security.Signature#getAlgorithm}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @return the result of the {@link java.security.Signature#getAlgorithm} method
+    */
+   protected abstract String engineGetJCEAlgorithmString();
+
+   /**
+    * Method engineGetJCEProviderName
+    *
+    * @return the JCE ProviderName
+    */
+   protected abstract String engineGetJCEProviderName();
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param input
+    * @throws XMLSignatureException
+    */
+   protected abstract void engineUpdate(byte[] input)
+      throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param input
+    * @throws XMLSignatureException
+    */
+   protected abstract void engineUpdate(byte input)
+      throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[], int, int)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param buf
+    * @param offset
+    * @param len
+    * @throws XMLSignatureException
+    */
+   protected abstract void engineUpdate(byte buf[], int offset, int len)
+      throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signingKey
+    * @throws XMLSignatureException if this method is called on a MAC
+    */
+   protected abstract void engineInitSign(Key signingKey)
+      throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey, java.security.SecureRandom)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signingKey
+    * @param secureRandom
+    * @throws XMLSignatureException if this method is called on a MAC
+    */
+   protected abstract void engineInitSign(
+      Key signingKey, SecureRandom secureRandom) throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link javax.crypto.Mac}
+    * which is executed on the internal {@link javax.crypto.Mac#init(Key)} object.
+    *
+    * @param signingKey
+    * @param algorithmParameterSpec
+    * @throws XMLSignatureException if this method is called on a Signature
+    */
+   protected abstract void engineInitSign(
+      Key signingKey, AlgorithmParameterSpec algorithmParameterSpec)
+         throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#sign()}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @return the result of the {@link java.security.Signature#sign()} method
+    * @throws XMLSignatureException
+    */
+   protected abstract byte[] engineSign() throws XMLSignatureException;
+
+   /**
+    * Method engineInitVerify
+    *
+    * @param verificationKey
+    * @throws XMLSignatureException
+    */
+   protected abstract void engineInitVerify(Key verificationKey)
+      throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#verify(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signature
+    * @return true if the signature is correct
+    * @throws XMLSignatureException
+    */
+   protected abstract boolean engineVerify(byte[] signature)
+      throws XMLSignatureException;
+
+   /**
+    * Proxy method for {@link java.security.Signature#setParameter(java.security.spec.AlgorithmParameterSpec)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param params
+    * @throws XMLSignatureException
+    */
+   protected abstract void engineSetParameter(AlgorithmParameterSpec params)
+      throws XMLSignatureException;
+
+   /** Field _doc */
+   Document _doc = null;
+
+   /**
+    * Method engineSetDocument
+    *
+    * @param doc
+    */
+   protected void engineSetDocument(Document doc) {
+      this._doc = doc;
+   }
+
+   /** Field _constructionElement */
+   Element _constructionElement = null;
+
+   /**
+    * Method engineGetContextFromElement
+    *
+    * @param element
+    */
+   protected void engineGetContextFromElement(Element element) {
+      this._constructionElement = element;
+   }
+
+   /**
+    * Method engineSetHMACOutputLength
+    *
+    * @param HMACOutputLength
+    * @throws XMLSignatureException
+    */
+   protected abstract void engineSetHMACOutputLength(int HMACOutputLength)
+      throws XMLSignatureException;
+}
diff --git a/src/org/apache/xml/security/algorithms/implementations/IntegrityHmac.java b/src/org/apache/xml/security/algorithms/implementations/IntegrityHmac.java
new file mode 100644
index 0000000..8c1198c
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/implementations/IntegrityHmac.java
@@ -0,0 +1,554 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms.implementations;
+
+
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
+import org.apache.xml.security.algorithms.SignatureAlgorithmSpi;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public abstract class IntegrityHmac extends SignatureAlgorithmSpi {
+    
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(IntegrityHmacSHA1.class.getName());
+
+   /**
+    * Method engineGetURI
+    *
+    *@inheritDoc
+    */
+   public abstract String engineGetURI();
+
+   /** Field _macAlgorithm */
+   private Mac _macAlgorithm = null;
+
+   /** Field _HMACOutputLength */
+   int _HMACOutputLength = 0;
+
+   /**
+    * Method IntegrityHmacSHA1das
+    *
+    * @throws XMLSignatureException
+    */
+   public IntegrityHmac() throws XMLSignatureException {
+
+      String algorithmID = JCEMapper.translateURItoJCEID(this.engineGetURI());
+      if (log.isDebugEnabled())
+      	log.debug("Created IntegrityHmacSHA1 using " + algorithmID);
+
+      try {
+         this._macAlgorithm = Mac.getInstance(algorithmID);
+      } catch (java.security.NoSuchAlgorithmException ex) {
+         Object[] exArgs = { algorithmID,
+                             ex.getLocalizedMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+      }
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#setParameter(java.security.spec.AlgorithmParameterSpec)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param params
+    * @throws XMLSignatureException
+    */
+   protected void engineSetParameter(AlgorithmParameterSpec params)
+           throws XMLSignatureException {
+      throw new XMLSignatureException("empty");
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#verify(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param signature
+    * @return true if the signature is correct
+    * @throws XMLSignatureException
+    */
+   protected boolean engineVerify(byte[] signature)
+           throws XMLSignatureException {
+
+      try {
+         byte[] completeResult = this._macAlgorithm.doFinal();
+
+         if ((this._HMACOutputLength == 0) || (this._HMACOutputLength >= 160)) {
+            return MessageDigestAlgorithm.isEqual(completeResult, signature);
+         }
+         byte[] stripped = IntegrityHmac.reduceBitLength(completeResult,
+                                 this._HMACOutputLength);
+         return MessageDigestAlgorithm.isEqual(stripped, signature);         
+      } catch (IllegalStateException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#initVerify(java.security.PublicKey)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param secretKey
+    * @throws XMLSignatureException
+    */
+   protected void engineInitVerify(Key secretKey) throws XMLSignatureException {
+
+      if (!(secretKey instanceof SecretKey)) {
+         String supplied = secretKey.getClass().getName();
+         String needed = SecretKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._macAlgorithm.init(secretKey);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#sign()}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @return the result of the {@link java.security.Signature#sign()} method
+    * @throws XMLSignatureException
+    */
+   protected byte[] engineSign() throws XMLSignatureException {
+
+      try {
+         byte[] completeResult = this._macAlgorithm.doFinal();
+
+         if ((this._HMACOutputLength == 0) || (this._HMACOutputLength >= 160)) {
+            return completeResult;
+         } 
+          return IntegrityHmac.reduceBitLength(completeResult,
+                                                 this._HMACOutputLength);
+         
+      } catch (IllegalStateException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method reduceBitLength
+    *
+    * @param completeResult
+    * @return the reduced bits.
+    * @param length
+    *
+    */
+   private static byte[] reduceBitLength(byte completeResult[], int length) {
+
+      int bytes = length / 8;
+      int abits = length % 8;
+      byte[] strippedResult = new byte[bytes + ((abits == 0)
+                                                ? 0
+                                                : 1)];
+
+      System.arraycopy(completeResult, 0, strippedResult, 0, bytes);
+
+      if (abits > 0) {
+         byte[] MASK = { (byte) 0x00, (byte) 0x80, (byte) 0xC0, (byte) 0xE0,
+                         (byte) 0xF0, (byte) 0xF8, (byte) 0xFC, (byte) 0xFE };
+
+         strippedResult[bytes] = (byte) (completeResult[bytes] & MASK[abits]);
+      }
+
+      return strippedResult;
+   }
+
+   /**
+    * Method engineInitSign
+    *
+    * @param secretKey
+    * @throws XMLSignatureException
+    */
+   protected void engineInitSign(Key secretKey) throws XMLSignatureException {
+
+      if (!(secretKey instanceof SecretKey)) {
+         String supplied = secretKey.getClass().getName();
+         String needed = SecretKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._macAlgorithm.init(secretKey);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method engineInitSign
+    *
+    * @param secretKey
+    * @param algorithmParameterSpec
+    * @throws XMLSignatureException
+    */
+   protected void engineInitSign(
+           Key secretKey, AlgorithmParameterSpec algorithmParameterSpec)
+              throws XMLSignatureException {
+
+      if (!(secretKey instanceof SecretKey)) {
+         String supplied = secretKey.getClass().getName();
+         String needed = SecretKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._macAlgorithm.init(secretKey, algorithmParameterSpec);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (InvalidAlgorithmParameterException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method engineInitSign
+    *
+    * @param secretKey
+    * @param secureRandom
+    * @throws XMLSignatureException
+    */
+   protected void engineInitSign(Key secretKey, SecureRandom secureRandom)
+           throws XMLSignatureException {
+      throw new XMLSignatureException("algorithms.CannotUseSecureRandomOnMAC");
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[])}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param input
+    * @throws XMLSignatureException
+    */
+   protected void engineUpdate(byte[] input) throws XMLSignatureException {
+
+      try {
+         this._macAlgorithm.update(input);
+      } catch (IllegalStateException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param input
+    * @throws XMLSignatureException
+    */
+   protected void engineUpdate(byte input) throws XMLSignatureException {
+
+      try {
+         this._macAlgorithm.update(input);
+      } catch (IllegalStateException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Proxy method for {@link java.security.Signature#update(byte[], int, int)}
+    * which is executed on the internal {@link java.security.Signature} object.
+    *
+    * @param buf
+    * @param offset
+    * @param len
+    * @throws XMLSignatureException
+    */
+   protected void engineUpdate(byte buf[], int offset, int len)
+           throws XMLSignatureException {
+
+      try {
+         this._macAlgorithm.update(buf, offset, len);
+      } catch (IllegalStateException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method engineGetJCEAlgorithmString
+    * @inheritDoc
+    *
+    */
+   protected String engineGetJCEAlgorithmString() {
+
+      log.debug("engineGetJCEAlgorithmString()");
+
+      return this._macAlgorithm.getAlgorithm();
+   }
+
+   /**
+    * Method engineGetJCEAlgorithmString
+    *
+    * @inheritDoc
+    */
+   protected String engineGetJCEProviderName() {
+      return this._macAlgorithm.getProvider().getName();
+   }
+
+   /**
+    * Method engineSetHMACOutputLength
+    *
+    * @param HMACOutputLength
+    */
+   protected void engineSetHMACOutputLength(int HMACOutputLength) {
+      this._HMACOutputLength = HMACOutputLength;
+   }
+
+   /**
+    * Method engineGetContextFromElement
+    *
+    * @param element
+    */
+   protected void engineGetContextFromElement(Element element) {
+
+      super.engineGetContextFromElement(element);
+
+      if (element == null) {
+         throw new IllegalArgumentException("element null");
+      }
+
+             Text hmaclength =XMLUtils.selectDsNodeText(element.getFirstChild(),
+                    Constants._TAG_HMACOUTPUTLENGTH,0);               
+
+            if (hmaclength != null) {
+               this._HMACOutputLength = Integer.parseInt(hmaclength.getData());
+            }
+      
+   }
+
+   /**
+    * Method engineAddContextToElement
+    *
+    * @param element
+    */
+   public void engineAddContextToElement(Element element)
+           {
+
+      if (element == null) {
+         throw new IllegalArgumentException("null element");
+      }
+
+      if (this._HMACOutputLength != 0) {
+         Document doc = element.getOwnerDocument();
+         Element HMElem = XMLUtils.createElementInSignatureSpace(doc,
+                             Constants._TAG_HMACOUTPUTLENGTH);
+         Text HMText =
+            doc.createTextNode(new Integer(this._HMACOutputLength).toString());
+
+         HMElem.appendChild(HMText);
+         XMLUtils.addReturnToElement(element);
+         element.appendChild(HMElem);
+         XMLUtils.addReturnToElement(element);
+      }
+   }
+
+   /**
+    * Class IntegrityHmacSHA1
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class IntegrityHmacSHA1 extends IntegrityHmac {
+
+      /**
+       * Constructor IntegrityHmacSHA1
+       *
+       * @throws XMLSignatureException
+       */
+      public IntegrityHmacSHA1() throws XMLSignatureException {
+         super();
+      }
+
+      /**
+       * Method engineGetURI
+       * @inheritDoc
+       *
+       */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_MAC_HMAC_SHA1;
+      }
+   }
+
+   /**
+    * Class IntegrityHmacSHA256
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class IntegrityHmacSHA256 extends IntegrityHmac {
+
+      /**
+       * Constructor IntegrityHmacSHA256
+       *
+       * @throws XMLSignatureException
+       */
+      public IntegrityHmacSHA256() throws XMLSignatureException {
+         super();
+      }
+
+      /**
+       * Method engineGetURI
+       *
+       * @inheritDoc
+       */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_MAC_HMAC_SHA256;
+      }
+   }
+
+   /**
+    * Class IntegrityHmacSHA384
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class IntegrityHmacSHA384 extends IntegrityHmac {
+
+      /**
+       * Constructor IntegrityHmacSHA384
+       *
+       * @throws XMLSignatureException
+       */
+      public IntegrityHmacSHA384() throws XMLSignatureException {
+         super();
+      }
+
+      /**
+       * Method engineGetURI
+       * @inheritDoc
+       *
+       */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_MAC_HMAC_SHA384;
+      }
+   }
+
+   /**
+    * Class IntegrityHmacSHA512
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class IntegrityHmacSHA512 extends IntegrityHmac {
+
+      /**
+       * Constructor IntegrityHmacSHA512
+       *
+       * @throws XMLSignatureException
+       */
+      public IntegrityHmacSHA512() throws XMLSignatureException {
+         super();
+      }
+
+      /**
+       * Method engineGetURI
+       * @inheritDoc
+       *
+       */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_MAC_HMAC_SHA512;
+      }
+   }
+
+   /**
+    * Class IntegrityHmacRIPEMD160
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class IntegrityHmacRIPEMD160 extends IntegrityHmac {
+
+      /**
+       * Constructor IntegrityHmacRIPEMD160
+       *
+       * @throws XMLSignatureException
+       */
+      public IntegrityHmacRIPEMD160() throws XMLSignatureException {
+         super();
+      }
+
+      /**
+       * Method engineGetURI
+       *
+       * @inheritDoc
+       */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160;
+      }
+   }
+
+   /**
+    * Class IntegrityHmacMD5
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class IntegrityHmacMD5 extends IntegrityHmac {
+
+      /**
+       * Constructor IntegrityHmacMD5
+       *
+       * @throws XMLSignatureException
+       */
+      public IntegrityHmacMD5() throws XMLSignatureException {
+         super();
+      }
+
+      /**
+       * Method engineGetURI
+       *
+       * @inheritDoc
+       */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5;
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java b/src/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java
new file mode 100644
index 0000000..fd38aea
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java
@@ -0,0 +1,368 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms.implementations;
+
+
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchProviderException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.spec.AlgorithmParameterSpec;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.algorithms.SignatureAlgorithmSpi;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.signature.XMLSignatureException;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public abstract class SignatureBaseRSA extends SignatureAlgorithmSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(SignatureBaseRSA.class.getName());
+
+    /** @inheritDoc */
+   public abstract String engineGetURI();
+
+   /** Field algorithm */
+   private java.security.Signature _signatureAlgorithm = null;
+
+   /**
+    * Constructor SignatureRSA
+    *
+    * @throws XMLSignatureException
+    */
+   public SignatureBaseRSA() throws XMLSignatureException {
+
+      String algorithmID = JCEMapper.translateURItoJCEID(this.engineGetURI());
+
+      if (log.isDebugEnabled())
+      	log.debug("Created SignatureDSA using " + algorithmID);
+      String provider=JCEMapper.getProviderId();
+      try {
+      	 if (provider==null) {
+      	 	this._signatureAlgorithm = Signature.getInstance(algorithmID);
+      	 } else {
+      	 	this._signatureAlgorithm = Signature.getInstance(algorithmID,provider);
+      	 }
+      } catch (java.security.NoSuchAlgorithmException ex) {
+         Object[] exArgs = { algorithmID,
+                             ex.getLocalizedMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+      } catch (NoSuchProviderException ex) {
+      	 Object[] exArgs = { algorithmID,
+      	 					 ex.getLocalizedMessage() };
+
+      	 throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+	}
+   }
+
+   /** @inheritDoc */
+   protected void engineSetParameter(AlgorithmParameterSpec params)
+           throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.setParameter(params);
+      } catch (InvalidAlgorithmParameterException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected boolean engineVerify(byte[] signature)
+           throws XMLSignatureException {
+
+      try {
+         return this._signatureAlgorithm.verify(signature);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected void engineInitVerify(Key publicKey) throws XMLSignatureException {
+
+      if (!(publicKey instanceof PublicKey)) {
+         String supplied = publicKey.getClass().getName();
+         String needed = PublicKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._signatureAlgorithm.initVerify((PublicKey) publicKey);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected byte[] engineSign() throws XMLSignatureException {
+
+      try {
+         return this._signatureAlgorithm.sign();
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected void engineInitSign(Key privateKey, SecureRandom secureRandom)
+           throws XMLSignatureException {
+
+      if (!(privateKey instanceof PrivateKey)) {
+         String supplied = privateKey.getClass().getName();
+         String needed = PrivateKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._signatureAlgorithm.initSign((PrivateKey) privateKey,
+                                           secureRandom);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected void engineInitSign(Key privateKey) throws XMLSignatureException {
+
+      if (!(privateKey instanceof PrivateKey)) {
+         String supplied = privateKey.getClass().getName();
+         String needed = PrivateKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._signatureAlgorithm.initSign((PrivateKey) privateKey);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected void engineUpdate(byte[] input) throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.update(input);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected void engineUpdate(byte input) throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.update(input);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected void engineUpdate(byte buf[], int offset, int len)
+           throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.update(buf, offset, len);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   protected String engineGetJCEAlgorithmString() {
+      return this._signatureAlgorithm.getAlgorithm();
+   }
+
+   /** @inheritDoc */
+   protected String engineGetJCEProviderName() {
+      return this._signatureAlgorithm.getProvider().getName();
+   }
+
+   /** @inheritDoc */
+   protected void engineSetHMACOutputLength(int HMACOutputLength)
+           throws XMLSignatureException {
+      throw new XMLSignatureException("algorithms.HMACOutputLengthOnlyForHMAC");
+   }
+
+   /** @inheritDoc */
+   protected void engineInitSign(
+           Key signingKey, AlgorithmParameterSpec algorithmParameterSpec)
+              throws XMLSignatureException {
+      throw new XMLSignatureException(
+         "algorithms.CannotUseAlgorithmParameterSpecOnRSA");
+   }
+
+   /**
+    * Class SignatureRSASHA1
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class SignatureRSASHA1 extends SignatureBaseRSA {
+
+      /**
+       * Constructor SignatureRSASHA1
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureRSASHA1() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1;
+      }
+   }
+
+   /**
+    * Class SignatureRSASHA256
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class SignatureRSASHA256 extends SignatureBaseRSA {
+
+      /**
+       * Constructor SignatureRSASHA256
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureRSASHA256() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;
+      }
+   }
+
+   /**
+    * Class SignatureRSASHA384
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class SignatureRSASHA384 extends SignatureBaseRSA {
+
+      /**
+       * Constructor SignatureRSASHA384
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureRSASHA384() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384;
+      }
+   }
+
+   /**
+    * Class SignatureRSASHA512
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class SignatureRSASHA512 extends SignatureBaseRSA {
+
+      /**
+       * Constructor SignatureRSASHA512
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureRSASHA512() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512;
+      }
+   }
+
+   /**
+    * Class SignatureRSARIPEMD160
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class SignatureRSARIPEMD160 extends SignatureBaseRSA {
+
+      /**
+       * Constructor SignatureRSARIPEMD160
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureRSARIPEMD160() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160;
+      }
+   }
+
+   /**
+    * Class SignatureRSAMD5
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   public static class SignatureRSAMD5 extends SignatureBaseRSA {
+
+      /**
+       * Constructor SignatureRSAMD5
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureRSAMD5() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5;
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/implementations/SignatureDSA.java b/src/org/apache/xml/security/algorithms/implementations/SignatureDSA.java
new file mode 100644
index 0000000..6a78f2b
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/implementations/SignatureDSA.java
@@ -0,0 +1,376 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.algorithms.implementations;
+
+
+
+import java.io.IOException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.spec.AlgorithmParameterSpec;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.algorithms.SignatureAlgorithmSpi;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.Constants;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class SignatureDSA extends SignatureAlgorithmSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(SignatureDSA.class.getName());
+
+   /** Field _URI */
+   public static final String _URI = Constants.SignatureSpecNS + "dsa-sha1";
+
+   /** Field algorithm */
+   private java.security.Signature _signatureAlgorithm = null;
+
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc
+    */
+   protected String engineGetURI() {
+      return SignatureDSA._URI;
+   }
+
+   /**
+    * Constructor SignatureDSA
+    *
+    * @throws XMLSignatureException
+    */
+   public SignatureDSA() throws XMLSignatureException {
+
+      String algorithmID = JCEMapper.translateURItoJCEID(SignatureDSA._URI);
+      if (log.isDebugEnabled())
+      	log.debug("Created SignatureDSA using " + algorithmID);
+
+      try {
+         this._signatureAlgorithm = Signature.getInstance(algorithmID);
+      } catch (java.security.NoSuchAlgorithmException ex) {
+         Object[] exArgs = { algorithmID,
+                             ex.getLocalizedMessage() };
+
+         throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineSetParameter(AlgorithmParameterSpec params)
+           throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.setParameter(params);
+      } catch (InvalidAlgorithmParameterException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected boolean engineVerify(byte[] signature)
+           throws XMLSignatureException {
+
+      try {
+         if (log.isDebugEnabled())
+         	log.debug("Called DSA.verify() on " + Base64.encode(signature));
+
+         byte[] jcebytes = SignatureDSA.convertXMLDSIGtoASN1(signature);
+
+         return this._signatureAlgorithm.verify(jcebytes);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (IOException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineInitVerify(Key publicKey) throws XMLSignatureException {
+
+      if (!(publicKey instanceof PublicKey)) {
+         String supplied = publicKey.getClass().getName();
+         String needed = PublicKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._signatureAlgorithm.initVerify((PublicKey) publicKey);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected byte[] engineSign() throws XMLSignatureException {
+
+      try {
+         byte jcebytes[] = this._signatureAlgorithm.sign();
+
+         return SignatureDSA.convertASN1toXMLDSIG(jcebytes);
+      } catch (IOException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineInitSign(Key privateKey, SecureRandom secureRandom)
+           throws XMLSignatureException {
+
+      if (!(privateKey instanceof PrivateKey)) {
+         String supplied = privateKey.getClass().getName();
+         String needed = PrivateKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._signatureAlgorithm.initSign((PrivateKey) privateKey,
+                                           secureRandom);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineInitSign(Key privateKey) throws XMLSignatureException {
+
+      if (!(privateKey instanceof PrivateKey)) {
+         String supplied = privateKey.getClass().getName();
+         String needed = PrivateKey.class.getName();
+         Object exArgs[] = { supplied, needed };
+
+         throw new XMLSignatureException("algorithms.WrongKeyForThisOperation",
+                                         exArgs);
+      }
+
+      try {
+         this._signatureAlgorithm.initSign((PrivateKey) privateKey);
+      } catch (InvalidKeyException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineUpdate(byte[] input) throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.update(input);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineUpdate(byte input) throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.update(input);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected void engineUpdate(byte buf[], int offset, int len)
+           throws XMLSignatureException {
+
+      try {
+         this._signatureAlgorithm.update(buf, offset, len);
+      } catch (SignatureException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method engineGetJCEAlgorithmString
+    *
+    * @inheritDoc
+    */
+   protected String engineGetJCEAlgorithmString() {
+      return this._signatureAlgorithm.getAlgorithm();
+   }
+
+   /**
+    * Method engineGetJCEProviderName
+    *
+    * @inheritDoc
+    */
+   protected String engineGetJCEProviderName() {
+      return this._signatureAlgorithm.getProvider().getName();
+   }
+
+
+   /**
+    * Converts an ASN.1 DSA value to a XML Signature DSA Value.
+    *
+    * The JAVA JCE DSA Signature algorithm creates ASN.1 encoded (r,s) value
+    * pairs; the XML Signature requires the core BigInteger values.
+    *
+    * @param asn1Bytes
+    * @return the decode bytes
+    *
+    * @throws IOException
+    * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#dsa-sha1">6.4.1 DSA</A>
+    */
+   private static byte[] convertASN1toXMLDSIG(byte asn1Bytes[])
+           throws IOException {
+
+      byte rLength = asn1Bytes[3];
+      int i;
+
+      for (i = rLength; (i > 0) && (asn1Bytes[(4 + rLength) - i] == 0); i--);
+
+      byte sLength = asn1Bytes[5 + rLength];
+      int j;
+
+      for (j = sLength;
+              (j > 0) && (asn1Bytes[(6 + rLength + sLength) - j] == 0); j--);
+
+      if ((asn1Bytes[0] != 48) || (asn1Bytes[1] != asn1Bytes.length - 2)
+              || (asn1Bytes[2] != 2) || (i > 20)
+              || (asn1Bytes[4 + rLength] != 2) || (j > 20)) {
+         throw new IOException("Invalid ASN.1 format of DSA signature");
+      } 
+      byte xmldsigBytes[] = new byte[40];
+
+      System.arraycopy(asn1Bytes, (4 + rLength) - i, xmldsigBytes, 20 - i,
+                          i);
+      System.arraycopy(asn1Bytes, (6 + rLength + sLength) - j, xmldsigBytes,
+                          40 - j, j);
+
+       return xmldsigBytes;      
+   }
+
+   /**
+    * Converts a XML Signature DSA Value to an ASN.1 DSA value.
+    *
+    * The JAVA JCE DSA Signature algorithm creates ASN.1 encoded (r,s) value
+    * pairs; the XML Signature requires the core BigInteger values.
+    *
+    * @param xmldsigBytes
+    * @return the encoded ASN.1 bytes
+    *
+    * @throws IOException
+    * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#dsa-sha1">6.4.1 DSA</A>
+    */
+   private static byte[] convertXMLDSIGtoASN1(byte xmldsigBytes[])
+           throws IOException {
+
+      if (xmldsigBytes.length != 40) {
+         throw new IOException("Invalid XMLDSIG format of DSA signature");
+      }
+
+      int i;
+
+      for (i = 20; (i > 0) && (xmldsigBytes[20 - i] == 0); i--);
+
+      int j = i;
+
+      if (xmldsigBytes[20 - i] < 0) {
+         j += 1;
+      }
+
+      int k;
+
+      for (k = 20; (k > 0) && (xmldsigBytes[40 - k] == 0); k--);
+
+      int l = k;
+
+      if (xmldsigBytes[40 - k] < 0) {
+         l += 1;
+      }
+
+      byte asn1Bytes[] = new byte[6 + j + l];
+
+      asn1Bytes[0] = 48;
+      asn1Bytes[1] = (byte) (4 + j + l);
+      asn1Bytes[2] = 2;
+      asn1Bytes[3] = (byte) j;
+
+      System.arraycopy(xmldsigBytes, 20 - i, asn1Bytes, (4 + j) - i, i);
+
+      asn1Bytes[4 + j] = 2;
+      asn1Bytes[5 + j] = (byte) l;
+
+      System.arraycopy(xmldsigBytes, 40 - k, asn1Bytes, (6 + j + l) - k, k);
+
+      return asn1Bytes;
+   }
+
+   /**
+    * Method engineSetHMACOutputLength
+    *
+    * @param HMACOutputLength
+    * @throws XMLSignatureException
+    */
+   protected void engineSetHMACOutputLength(int HMACOutputLength)
+           throws XMLSignatureException {
+      throw new XMLSignatureException("algorithms.HMACOutputLengthOnlyForHMAC");
+   }
+
+   /**
+    * Method engineInitSign
+    *
+    * @param signingKey
+    * @param algorithmParameterSpec
+    * @throws XMLSignatureException
+    */
+   protected void engineInitSign(
+           Key signingKey, AlgorithmParameterSpec algorithmParameterSpec)
+              throws XMLSignatureException {
+      throw new XMLSignatureException(
+         "algorithms.CannotUseAlgorithmParameterSpecOnDSA");
+   }
+}
diff --git a/src/org/apache/xml/security/algorithms/implementations/package.html b/src/org/apache/xml/security/algorithms/implementations/package.html
new file mode 100644
index 0000000..5828970
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/implementations/package.html
@@ -0,0 +1,3 @@
+<HTML> <HEAD> </HEAD> <BODY> <P>
+implementations of {@link org.apache.xml.security.algorithms.SignatureAlgorithmSpi}.
+</P></BODY> </HTML>
diff --git a/src/org/apache/xml/security/algorithms/package.html b/src/org/apache/xml/security/algorithms/package.html
new file mode 100644
index 0000000..cd5c128
--- /dev/null
+++ b/src/org/apache/xml/security/algorithms/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+algorithm factories.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/c14n/CanonicalizationException.java b/src/org/apache/xml/security/c14n/CanonicalizationException.java
new file mode 100644
index 0000000..c279f30
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/CanonicalizationException.java
@@ -0,0 +1,85 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ * Class CanonicalizationException
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class CanonicalizationException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor CanonicalizationException
+    *
+    */
+   public CanonicalizationException() {
+      super();
+   }
+
+   /**
+    * Constructor CanonicalizationException
+    *
+    * @param _msgID
+    */
+   public CanonicalizationException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor CanonicalizationException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public CanonicalizationException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor CanonicalizationException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public CanonicalizationException(String _msgID, Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor CanonicalizationException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public CanonicalizationException(String _msgID, Object exArgs[],
+                                    Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/Canonicalizer.java b/src/org/apache/xml/security/c14n/Canonicalizer.java
new file mode 100644
index 0000000..af74ae0
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/Canonicalizer.java
@@ -0,0 +1,350 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+
+/**
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Canonicalizer {
+
+   //J-
+   /** The output encoding of canonicalized data */
+   public static final String ENCODING = "UTF8";
+
+   
+   /**
+     * XPath Expresion for selecting every node and continuos comments joined in only one node 
+     */
+    public static final String XPATH_C14N_WITH_COMMENTS_SINGLE_NODE = "(.//. | .//@* | .//namespace::*)";
+   
+
+   /**
+     * The URL defined in XML-SEC Rec for inclusive c14n <b>without</b> comments.
+     */
+   public static final String ALGO_ID_C14N_OMIT_COMMENTS = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
+   /**
+    * The URL defined in XML-SEC Rec for inclusive c14n <b>with</b> comments.
+    */
+   public static final String ALGO_ID_C14N_WITH_COMMENTS = ALGO_ID_C14N_OMIT_COMMENTS + "#WithComments";
+   /**
+    * The URL defined in XML-SEC Rec for exclusive c14n <b>without</b> comments.
+    */
+   public static final String ALGO_ID_C14N_EXCL_OMIT_COMMENTS = "http://www.w3.org/2001/10/xml-exc-c14n#";
+   /**
+    * The URL defined in XML-SEC Rec for exclusive c14n <b>with</b> comments.
+    */
+   public static final String ALGO_ID_C14N_EXCL_WITH_COMMENTS = ALGO_ID_C14N_EXCL_OMIT_COMMENTS + "WithComments";
+
+   static boolean _alreadyInitialized = false;
+   static Map _canonicalizerHash = null;
+
+   protected CanonicalizerSpi canonicalizerSpi = null;
+   //J+
+
+   /**
+    * Method init
+    *
+    */
+   public static void init() {
+
+      if (!Canonicalizer._alreadyInitialized) {
+         Canonicalizer._canonicalizerHash = new HashMap(10);
+         Canonicalizer._alreadyInitialized = true;
+      }
+   }
+
+   /**
+    * Constructor Canonicalizer
+    *
+    * @param algorithmURI
+    * @throws InvalidCanonicalizerException
+    */
+   private Canonicalizer(String algorithmURI)
+           throws InvalidCanonicalizerException {
+
+      try {
+         Class implementingClass = getImplementingClass(algorithmURI);
+
+         this.canonicalizerSpi =
+            (CanonicalizerSpi) implementingClass.newInstance();
+         this.canonicalizerSpi.reset=true;
+      } catch (Exception e) {
+         Object exArgs[] = { algorithmURI };
+
+         throw new InvalidCanonicalizerException(
+            "signature.Canonicalizer.UnknownCanonicalizer", exArgs);
+      }
+   }
+
+   /**
+    * Method getInstance
+    *
+    * @param algorithmURI
+    * @return a Conicicalizer instance ready for the job
+    * @throws InvalidCanonicalizerException
+    */
+   public static final Canonicalizer getInstance(String algorithmURI)
+           throws InvalidCanonicalizerException {
+
+      Canonicalizer c14nizer = new Canonicalizer(algorithmURI);
+
+      return c14nizer;
+   }
+
+   /**
+    * Method register
+    *
+    * @param algorithmURI
+    * @param implementingClass
+    * @throws AlgorithmAlreadyRegisteredException
+    */
+   public static void register(String algorithmURI, String implementingClass)
+           throws AlgorithmAlreadyRegisteredException {
+
+      // check whether URI is already registered
+      Class registeredClass = getImplementingClass(algorithmURI);
+
+      if (registeredClass != null)  {
+         Object exArgs[] = { algorithmURI, registeredClass };
+
+         throw new AlgorithmAlreadyRegisteredException(
+            "algorithm.alreadyRegistered", exArgs);
+      }
+
+      try {
+		_canonicalizerHash.put(algorithmURI, Class.forName(implementingClass));
+	} catch (ClassNotFoundException e) {
+		throw new RuntimeException("c14n class not found");
+	}
+   }
+
+   /**
+    * Method getURI
+    *
+    * @return the URI defined for this c14n instance.
+    */
+   public final String getURI() {
+      return this.canonicalizerSpi.engineGetURI();
+   }
+
+   /**
+    * Method getIncludeComments
+    *
+    * @return true if the c14n respect the comments.
+    */
+   public boolean getIncludeComments() {
+      return this.canonicalizerSpi.engineGetIncludeComments();
+   }
+
+   /**
+    * This method tries to canonicalize the given bytes. It's possible to even
+    * canonicalize non-wellformed sequences if they are well-formed after being
+    * wrapped with a <CODE>&gt;a&lt;...&gt;/a&lt;</CODE>.
+    *
+    * @param inputBytes
+    * @return the result of the conicalization.
+    * @throws CanonicalizationException
+    * @throws java.io.IOException
+    * @throws javax.xml.parsers.ParserConfigurationException
+    * @throws org.xml.sax.SAXException
+    */
+   public byte[] canonicalize(byte[] inputBytes)
+           throws javax.xml.parsers.ParserConfigurationException,
+                  java.io.IOException, org.xml.sax.SAXException,
+                  CanonicalizationException {
+
+      ByteArrayInputStream bais = new ByteArrayInputStream(inputBytes);
+      InputSource in = new InputSource(bais);
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+
+      // needs to validate for ID attribute nomalization
+      dfactory.setValidating(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+
+      /*
+       * for some of the test vectors from the specification,
+       * there has to be a validatin parser for ID attributes, default
+       * attribute values, NMTOKENS, etc.
+       * Unfortunaltely, the test vectors do use different DTDs or
+       * even no DTD. So Xerces 1.3.1 fires many warnings about using
+       * ErrorHandlers.
+       *
+       * Text from the spec:
+       *
+       * The input octet stream MUST contain a well-formed XML document,
+       * but the input need not be validated. However, the attribute
+       * value normalization and entity reference resolution MUST be
+       * performed in accordance with the behaviors of a validating
+       * XML processor. As well, nodes for default attributes (declared
+       * in the ATTLIST with an AttValue but not specified) are created
+       * in each element. Thus, the declarations in the document type
+       * declaration are used to help create the canonical form, even
+       * though the document type declaration is not retained in the
+       * canonical form.
+       *
+       */
+      db.setErrorHandler(new org.apache.xml.security.utils
+         .IgnoreAllErrorHandler());
+
+      Document document = db.parse(in);
+      byte result[] = this.canonicalizeSubtree(document);
+
+      return result;
+   }
+
+   /**
+    * Canonicalizes the subtree rooted by <CODE>node</CODE>.
+    *
+    * @param node The node to canicalize
+    * @return the result of the c14n.
+    *
+    * @throws CanonicalizationException
+    */
+   public byte[] canonicalizeSubtree(Node node)
+           throws CanonicalizationException {
+      return this.canonicalizerSpi.engineCanonicalizeSubTree(node);
+   }
+
+   /**
+    * Canonicalizes the subtree rooted by <CODE>node</CODE>.
+    *
+    * @param node
+    * @param inclusiveNamespaces
+    * @return the result of the c14n.
+    * @throws CanonicalizationException
+    */
+   public byte[] canonicalizeSubtree(Node node, String inclusiveNamespaces)
+           throws CanonicalizationException {
+      return this.canonicalizerSpi.engineCanonicalizeSubTree(node,
+              inclusiveNamespaces);
+   }
+
+   /**
+    * Canonicalizes an XPath node set. The <CODE>xpathNodeSet</CODE> is treated
+    * as a list of XPath nodes, not as a list of subtrees.
+    *
+    * @param xpathNodeSet
+    * @return the result of the c14n.
+    * @throws CanonicalizationException
+    */
+   public byte[] canonicalizeXPathNodeSet(NodeList xpathNodeSet)
+           throws CanonicalizationException {
+      return this.canonicalizerSpi.engineCanonicalizeXPathNodeSet(xpathNodeSet);
+   }
+
+   /**
+    * Canonicalizes an XPath node set. The <CODE>xpathNodeSet</CODE> is treated
+    * as a list of XPath nodes, not as a list of subtrees.
+    *
+    * @param xpathNodeSet
+    * @param inclusiveNamespaces
+    * @return the result of the c14n.
+    * @throws CanonicalizationException
+    */
+   public byte[] canonicalizeXPathNodeSet(
+           NodeList xpathNodeSet, String inclusiveNamespaces)
+              throws CanonicalizationException {
+      return this.canonicalizerSpi.engineCanonicalizeXPathNodeSet(xpathNodeSet,
+              inclusiveNamespaces);
+   } 
+
+   /**
+    * Canonicalizes an XPath node set.
+    *
+    * @param xpathNodeSet
+    * @return the result of the c14n.
+    * @throws CanonicalizationException
+    */
+   public byte[] canonicalizeXPathNodeSet(Set xpathNodeSet)
+           throws CanonicalizationException {
+       return this.canonicalizerSpi.engineCanonicalizeXPathNodeSet(xpathNodeSet);
+   }
+
+   /**
+    * Canonicalizes an XPath node set.
+    *
+    * @param xpathNodeSet
+    * @param inclusiveNamespaces
+    * @return the result of the c14n.
+    * @throws CanonicalizationException
+    */
+   public byte[] canonicalizeXPathNodeSet(
+           Set xpathNodeSet, String inclusiveNamespaces)
+              throws CanonicalizationException {
+       return this.canonicalizerSpi.engineCanonicalizeXPathNodeSet(xpathNodeSet,
+              inclusiveNamespaces);
+   }
+
+   /**
+    * Sets the writter where the cannocalization ends. ByteArrayOutputStream if 
+    * none is setted.
+    * @param os
+    */
+   public void setWriter(OutputStream os) {
+   	    this.canonicalizerSpi.setWriter(os);
+   }
+
+   /**
+    * Returns the name of the implementing {@link CanonicalizerSpi} class
+    *
+    * @return the name of the implementing {@link CanonicalizerSpi} class
+    */
+   public String getImplementingCanonicalizerClass() {
+      return this.canonicalizerSpi.getClass().getName();
+   }
+
+   /**
+    * Method getImplementingClass
+    * 
+    * @param URI
+    * @return the name of the class that implements the give URI
+    */
+   private static Class getImplementingClass(String URI) {
+      return (Class) _canonicalizerHash.get(URI);         
+   }
+   
+   /**
+    * Set the canonicalizator behaviour to not reset.
+    *
+    */
+   public void notReset() {
+   	    this.canonicalizerSpi.reset=false;
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/CanonicalizerSpi.java b/src/org/apache/xml/security/c14n/CanonicalizerSpi.java
new file mode 100644
index 0000000..aab1f50
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/CanonicalizerSpi.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.OutputStream;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+
+/**
+ * Base class which all Caninicalization algorithms extend.
+ *
+ * $todo$ cange JavaDoc
+ * @author Christian Geuer-Pollmann
+ */
+public abstract class CanonicalizerSpi {
+
+   /**
+    * Method canonicalize
+    *
+    *
+    * @param inputBytes
+    * @return the c14n bytes. 
+    *
+    *
+    * @throws CanonicalizationException
+    * @throws java.io.IOException
+    * @throws javax.xml.parsers.ParserConfigurationException
+    * @throws org.xml.sax.SAXException
+    *
+    */
+   public byte[] engineCanonicalize(byte[] inputBytes)
+           throws javax.xml.parsers.ParserConfigurationException,
+                  java.io.IOException, org.xml.sax.SAXException,
+                  CanonicalizationException {
+
+      java.io.ByteArrayInputStream bais = new ByteArrayInputStream(inputBytes);
+      InputSource in = new InputSource(bais);
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      // needs to validate for ID attribute nomalization
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+
+      /*
+       * for some of the test vectors from the specification,
+       * there has to be a validatin parser for ID attributes, default
+       * attribute values, NMTOKENS, etc.
+       * Unfortunaltely, the test vectors do use different DTDs or
+       * even no DTD. So Xerces 1.3.1 fires many warnings about using
+       * ErrorHandlers.
+       *
+       * Text from the spec:
+       *
+       * The input octet stream MUST contain a well-formed XML document,
+       * but the input need not be validated. However, the attribute
+       * value normalization and entity reference resolution MUST be
+       * performed in accordance with the behaviors of a validating
+       * XML processor. As well, nodes for default attributes (declared
+       * in the ATTLIST with an AttValue but not specified) are created
+       * in each element. Thus, the declarations in the document type
+       * declaration are used to help create the canonical form, even
+       * though the document type declaration is not retained in the
+       * canonical form.
+       *
+       */
+
+      // ErrorHandler eh = new C14NErrorHandler();
+      // db.setErrorHandler(eh);
+      Document document = db.parse(in);
+      byte result[] = this.engineCanonicalizeSubTree(document);
+      return result;
+   }
+
+   /**
+    * Method engineCanonicalizeXPathNodeSet
+    *
+    * @param xpathNodeSet
+    * @return the c14n bytes
+    * @throws CanonicalizationException
+    */
+   public byte[] engineCanonicalizeXPathNodeSet(NodeList xpathNodeSet)
+           throws CanonicalizationException {
+
+      return this
+         .engineCanonicalizeXPathNodeSet(XMLUtils
+            .convertNodelistToSet(xpathNodeSet));
+   }
+   
+   /**
+    * Method engineCanonicalizeXPathNodeSet
+    *
+    * @param xpathNodeSet
+    * @param inclusiveNamespaces
+    * @return the c14n bytes
+    * @throws CanonicalizationException
+    */
+   public byte[] engineCanonicalizeXPathNodeSet(NodeList xpathNodeSet, String inclusiveNamespaces)
+           throws CanonicalizationException {
+
+      return this
+         .engineCanonicalizeXPathNodeSet(XMLUtils
+            .convertNodelistToSet(xpathNodeSet), inclusiveNamespaces);
+   }
+
+   //J-
+   /** Returns the URI of this engine.
+    * @return the URI
+    */
+   public abstract String engineGetURI();
+   
+   /** Returns the URI if include comments
+    * @return true if include.
+    */
+   public abstract boolean engineGetIncludeComments();
+   
+   /**
+    * C14n a nodeset
+    *
+    * @param xpathNodeSet
+    * @return the c14n bytes
+    * @throws CanonicalizationException
+    */
+   public abstract byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet)
+      throws CanonicalizationException;
+
+   /**
+    * C14n a nodeset
+    *
+    * @param xpathNodeSet
+    * @param inclusiveNamespaces
+    * @return the c14n bytes
+    * @throws CanonicalizationException
+    */
+   public abstract byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet, String inclusiveNamespaces)
+      throws CanonicalizationException;
+
+   /**
+    * C14n a node tree.
+    *
+    * @param rootNode
+    * @return the c14n bytes
+    * @throws CanonicalizationException
+    */
+   public abstract byte[] engineCanonicalizeSubTree(Node rootNode)
+      throws CanonicalizationException;
+
+   /**
+    * C14n a node tree.
+    *
+    * @param rootNode
+    * @param inclusiveNamespaces
+    * @return the c14n bytes
+    * @throws CanonicalizationException
+    */
+   public abstract byte[] engineCanonicalizeSubTree(Node rootNode, String inclusiveNamespaces)
+      throws CanonicalizationException;
+   
+   /**
+    * Sets the writter where the cannocalization ends. ByteArrayOutputStream if 
+    * none is setted.
+    * @param os
+    */
+   public abstract void setWriter(OutputStream os);
+   
+   /** Reset the writter after a c14n */
+   protected boolean reset=false;
+   //J+
+}
diff --git a/src/org/apache/xml/security/c14n/InvalidCanonicalizerException.java b/src/org/apache/xml/security/c14n/InvalidCanonicalizerException.java
new file mode 100644
index 0000000..85b7af0
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/InvalidCanonicalizerException.java
@@ -0,0 +1,85 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class InvalidCanonicalizerException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor InvalidCanonicalizerException
+    *
+    */
+   public InvalidCanonicalizerException() {
+      super();
+   }
+
+   /**
+    * Constructor InvalidCanonicalizerException
+    *
+    * @param _msgID
+    */
+   public InvalidCanonicalizerException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor InvalidCanonicalizerException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public InvalidCanonicalizerException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor InvalidCanonicalizerException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public InvalidCanonicalizerException(String _msgID,
+                                        Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor InvalidCanonicalizerException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public InvalidCanonicalizerException(String _msgID, Object exArgs[],
+                                        Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/helper/AttrCompare.java b/src/org/apache/xml/security/c14n/helper/AttrCompare.java
new file mode 100644
index 0000000..bc90979
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/helper/AttrCompare.java
@@ -0,0 +1,139 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.helper;
+
+
+
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Attr;
+
+
+/**
+ * Compares two attributes based on the C14n specification.
+ *
+ * <UL>
+ * <LI>Namespace nodes have a lesser document order position than attribute nodes.
+ * <LI> An element's namespace nodes are sorted lexicographically by
+ *   local name (the default namespace node, if one exists, has no
+ *   local name and is therefore lexicographically least).
+ * <LI> An element's attribute nodes are sorted lexicographically with
+ *   namespace URI as the primary key and local name as the secondary
+ *   key (an empty namespace URI is lexicographically least).
+ * </UL>
+ *
+ * $todo$ Should we implement java.util.Comparator and import java.util.Arrays to use Arrays.sort(intarray);
+ * @author Christian Geuer-Pollmann
+ */
+public class AttrCompare implements java.util.Comparator {
+
+   private final int ATTR0_BEFORE_ATTR1 = -1;
+   private final int ATTR1_BEFORE_ATTR0 = 1;
+
+   private final static String XMLNS=Constants.NamespaceSpecNS;
+   /**
+    * Compares two attributes based on the C14n specification.
+    *
+    * <UL>
+    * <LI>Namespace nodes have a lesser document order position than attribute nodes.
+    * <LI> An element's namespace nodes are sorted lexicographically by
+    *   local name (the default namespace node, if one exists, has no
+    *   local name and is therefore lexicographically least).
+    * <LI> An element's attribute nodes are sorted lexicographically with
+    *   namespace URI as the primary key and local name as the secondary
+    *   key (an empty namespace URI is lexicographically least).
+    * </UL>
+    *
+    * @param obj0 casted Attr
+    * @param obj1 casted Attr
+    * @return returns a negative integer, zero, or a positive integer as obj0 is less than, equal to, or greater than obj1
+    *
+    */
+   public int compare(Object obj0, Object obj1) {
+
+      Attr attr0 = (Attr) obj0;
+      Attr attr1 = (Attr) obj1;
+      String namespaceURI0 = attr0.getNamespaceURI();      
+      String namespaceURI1 = attr1.getNamespaceURI();
+      
+      boolean isNamespaceAttr0 =
+      	XMLNS==namespaceURI0;
+      boolean isNamespaceAttr1 =
+      	XMLNS==namespaceURI1;
+
+      if (isNamespaceAttr0) {
+         if (isNamespaceAttr1) {
+
+            // both are namespaces
+            String localname0 = attr0.getLocalName();
+            String localname1 = attr1.getLocalName();
+
+            if (localname0.equals("xmlns")) {
+               localname0 = "";
+            }
+
+            if (localname1.equals("xmlns")) {
+               localname1 = "";
+            }
+
+            return localname0.compareTo(localname1);
+         }
+         // attr0 is a namespace, attr1 is not
+         return ATTR0_BEFORE_ATTR1;
+         
+      } 
+      if (isNamespaceAttr1) {
+
+            // attr1 is a namespace, attr0 is not
+            return ATTR1_BEFORE_ATTR0;
+      } 
+
+      // none is a namespae
+      
+      if (namespaceURI0 == null) {
+      	if (namespaceURI1 == null) {
+      		/*
+      		 String localName0 = attr0.getLocalName();
+      		 String localName1 = attr1.getLocalName();
+      		 return localName0.compareTo(localName1);
+      		 */
+      		
+      		String name0 = attr0.getName();
+      		String name1 = attr1.getName();
+      		return name0.compareTo(name1);
+      	}
+      	return ATTR0_BEFORE_ATTR1;
+      	
+      } 
+      if (namespaceURI1 == null) {
+      		return ATTR1_BEFORE_ATTR0;
+      } 
+      int a = namespaceURI0.compareTo(namespaceURI1);
+      		
+      if (a != 0) {
+      	return a;
+      }
+      /*
+      String localName0 = ;
+      String localName1 =;*/
+      
+      return (attr0.getLocalName())
+      				.compareTo( attr1.getLocalName());
+         
+   }
+         
+}
diff --git a/src/org/apache/xml/security/c14n/helper/C14nHelper.java b/src/org/apache/xml/security/c14n/helper/C14nHelper.java
new file mode 100644
index 0000000..a06b681
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/helper/C14nHelper.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.helper;
+
+
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+
+/**
+ * Temporary swapped static functions from the normalizer Section
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class C14nHelper {
+
+   /**
+    * Constructor C14nHelper
+    *
+    */
+   private C14nHelper() {
+
+      // don't allow instantiation
+   }
+
+   /**
+    * Method namespaceIsRelative
+    *
+    * @param namespace
+    * @return true if the given namespace is relative. 
+    */
+   public static boolean namespaceIsRelative(Attr namespace) {
+      return !namespaceIsAbsolute(namespace);
+   }
+
+   /**
+    * Method namespaceIsRelative
+    *
+    * @param namespaceValue
+    * @return true if the given namespace is relative.
+    */
+   public static boolean namespaceIsRelative(String namespaceValue) {
+      return !namespaceIsAbsolute(namespaceValue);
+   }
+
+   /**
+    * Method namespaceIsAbsolute
+    *
+    * @param namespace
+    * @return true if the given namespace is absolute.
+    */
+   public static boolean namespaceIsAbsolute(Attr namespace) {
+      return namespaceIsAbsolute(namespace.getValue());
+   }
+
+   /**
+    * Method namespaceIsAbsolute
+    *
+    * @param namespaceValue
+    * @return true if the given namespace is absolute.
+    */
+   public static boolean namespaceIsAbsolute(String namespaceValue) {
+
+      // assume empty namespaces are absolute
+      if (namespaceValue.length() == 0) {
+         return true;
+      }
+      return namespaceValue.indexOf(':')>0;
+   }
+
+   /**
+    * This method throws an exception if the Attribute value contains
+    * a relative URI.
+    *
+    * @param attr
+    * @throws CanonicalizationException
+    */
+   public static void assertNotRelativeNS(Attr attr)
+           throws CanonicalizationException {
+
+      if (attr == null) {
+         return;
+      }
+
+      String nodeAttrName = attr.getNodeName();
+      boolean definesDefaultNS = nodeAttrName.equals("xmlns");
+      boolean definesNonDefaultNS = nodeAttrName.startsWith("xmlns:");
+
+      if (definesDefaultNS || definesNonDefaultNS) {
+         if (namespaceIsRelative(attr)) {
+            String parentName = attr.getOwnerElement().getTagName();
+            String attrValue = attr.getValue();
+            Object exArgs[] = { parentName, nodeAttrName, attrValue };
+
+            throw new CanonicalizationException(
+               "c14n.Canonicalizer.RelativeNamespace", exArgs);
+         }
+      }
+   }
+
+   /**
+    * This method throws a CanonicalizationException if the supplied Document
+    * is not able to be traversed using a TreeWalker.
+    *
+    * @param document
+    * @throws CanonicalizationException
+    */
+   public static void checkTraversability(Document document)
+           throws CanonicalizationException {
+
+      if (!document.isSupported("Traversal", "2.0")) {
+         Object exArgs[] = {
+            document.getImplementation().getClass().getName() };
+
+         throw new CanonicalizationException(
+            "c14n.Canonicalizer.TraversalNotSupported", exArgs);
+      }
+   }
+
+   /**
+    * This method throws a CanonicalizationException if the supplied Element
+    * contains any relative namespaces.
+    *
+    * @param ctxNode
+    * @throws CanonicalizationException
+    * @see C14nHelper#assertNotRelativeNS(Attr)
+    */
+   public static void checkForRelativeNamespace(Element ctxNode)
+           throws CanonicalizationException {
+
+      if (ctxNode != null) {
+         NamedNodeMap attributes = ctxNode.getAttributes();
+
+         for (int i = 0; i < attributes.getLength(); i++) {
+            C14nHelper.assertNotRelativeNS((Attr) attributes.item(i));
+         }
+      } else {
+         throw new CanonicalizationException(
+            "Called checkForRelativeNamespace() on null");
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/helper/package.html b/src/org/apache/xml/security/c14n/helper/package.html
new file mode 100644
index 0000000..6cd1eef
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/helper/package.html
@@ -0,0 +1,3 @@
+<HTML> <HEAD> </HEAD> <BODY> <P>
+helper classes for canonicalization.
+</P></BODY> </HTML>
diff --git a/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315.java b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315.java
new file mode 100644
index 0000000..aaccef6
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315.java
@@ -0,0 +1,340 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.implementations;
+
+
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.helper.C14nHelper;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+
+/**
+ * Implements <A HREF="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">Canonical
+ * XML Version 1.0</A>, a W3C Recommendation from 15 March 2001.
+ *
+ * @author Christian Geuer-Pollmann <geuerp@apache.org>
+ * @version $Revision$
+ */
+public abstract class Canonicalizer20010315 extends CanonicalizerBase {
+	boolean firstCall=true;
+	final SortedSet result= new TreeSet(COMPARE);
+    static final String XMLNS_URI=Constants.NamespaceSpecNS;
+    static final String XML_LANG_URI=Constants.XML_LANG_SPACE_SpecNS;
+   /**
+    * Constructor Canonicalizer20010315
+    *
+    * @param includeComments
+    */
+   public Canonicalizer20010315(boolean includeComments) {
+      super(includeComments);
+   }
+
+   /**
+    * Returns the Attr[]s to be outputted for the given element.
+    * <br>
+    * The code of this method is a copy of {@link #handleAttributes(Element,
+    * NameSpaceSymbTable)},
+    * whereas it takes into account that subtree-c14n is -- well -- subtree-based.
+    * So if the element in question isRoot of c14n, it's parent is not in the
+    * node set, as well as all other ancestors.
+    *
+    * @param E
+    * @param ns
+    * @return the Attr[]s to be outputted
+    * @throws CanonicalizationException
+    */
+   Iterator handleAttributesSubtree(Element E,  NameSpaceSymbTable ns )
+           throws CanonicalizationException {
+   	  if (!E.hasAttributes() && !firstCall) {
+         return null; 
+      }
+      // result will contain the attrs which have to be outputted   	  
+      final SortedSet result = this.result;       
+      result.clear();
+      NamedNodeMap attrs = E.getAttributes();
+      int attrsLength = attrs.getLength();      
+            
+      for (int i = 0; i < attrsLength; i++) {
+         Attr N = (Attr) attrs.item(i);
+         String NUri =N.getNamespaceURI();
+
+         if (XMLNS_URI!=NUri) {
+         	//It's not a namespace attr node. Add to the result and continue.
+            result.add(N);
+            continue;
+         }
+
+         String NName=N.getLocalName();
+         String NValue=N.getValue();        
+         if (XML.equals(NName)
+                 && XML_LANG_URI.equals(NValue)) {
+         	//The default mapping for xml must not be output.
+         	continue;
+         }
+         
+         Node n=ns.addMappingAndRender(NName,NValue,N);          		 
+		 	 
+      	  if (n!=null) {
+      	  	 //Render the ns definition
+             result.add(n);
+             if (C14nHelper.namespaceIsRelative(N)) {
+                Object exArgs[] = { E.getTagName(), NName, N.getNodeValue() };
+                throw new CanonicalizationException(
+                   "c14n.Canonicalizer.RelativeNamespace", exArgs);
+             }
+          }        
+      }
+            	   
+      if (firstCall) {
+      	//It is the first node of the subtree
+      	//Obtain all the namespaces defined in the parents, and added to the output.
+      	ns.getUnrenderedNodes(result);          	      		            
+      	//output the attributes in the xml namespace.
+		addXmlAttributesSubtree(E, result);
+        firstCall=false;
+      } 
+      
+      return result.iterator();
+   }
+
+   /**
+    * Float the xml:* attributes of the parent nodes to the root node of c14n
+    * @param E the root node.
+    * @param result the xml:* attributes  to output.
+    */
+   private void addXmlAttributesSubtree(Element E, SortedSet result) {
+         // E is in the node-set
+         Node parent = E.getParentNode();
+         Map loa = new HashMap();
+
+         if ((parent != null) && (parent.getNodeType() == Node.ELEMENT_NODE)) {
+            // parent element is not in node set
+            for (Node ancestor = parent;
+                    (ancestor != null)
+                    && (ancestor.getNodeType() == Node.ELEMENT_NODE);
+                    ancestor = ancestor.getParentNode()) {
+               Element el=((Element) ancestor);
+               if (!el.hasAttributes()) {
+                    continue;
+               }
+               // for all ancestor elements
+               NamedNodeMap ancestorAttrs = el.getAttributes();
+               int length=ancestorAttrs.getLength();
+               for (int i = 0; i <  length; i++) {
+                  // for all attributes in the ancestor element
+                  Attr currentAncestorAttr = (Attr) ancestorAttrs.item(i);				  
+                  if (XML_LANG_URI==currentAncestorAttr.getNamespaceURI()) {
+                	  String name=currentAncestorAttr.getName();                  
+                      if (!loa.containsKey(name) ) {
+                           loa.put(name, currentAncestorAttr);                                             
+                      }
+                  }
+               }
+            }
+         }
+
+         result.addAll( loa.values());
+         
+      }
+
+   /**
+    * Returns the Attr[]s to be outputted for the given element.
+    * <br>
+    * IMPORTANT: This method expects to work on a modified DOM tree, i.e. a DOM which has
+    * been prepared using {@link org.apache.xml.security.utils.XMLUtils#circumventBug2650(
+    * org.w3c.dom.Document)}.
+    * 
+    * @param E
+    * @param ns
+    * @return the Attr[]s to be outputted
+    * @throws CanonicalizationException
+    */
+   Iterator handleAttributes(Element E,  NameSpaceSymbTable ns ) throws CanonicalizationException {    
+    // result will contain the attrs which have to be outputted
+    boolean isRealVisible=isVisible(E);    
+    NamedNodeMap attrs = null;
+    int attrsLength = 0;
+    if (E.hasAttributes()) {
+        attrs=E.getAttributes();
+       attrsLength= attrs.getLength();
+    }
+    
+    
+    SortedSet result = this.result;       
+    result.clear();
+    
+            
+    for (int i = 0; i < attrsLength; i++) {
+       Attr N = (Attr) attrs.item(i);
+       String NUri =N.getNamespaceURI();
+       
+       if (XMLNS_URI!=NUri) {
+       	  //A non namespace definition node.
+       	  if (isRealVisible){
+       		//The node is visible add the attribute to the list of output attributes.
+           	result.add(N);
+          }
+       	  //keep working
+          continue;
+       }
+
+       String NName=N.getLocalName();
+       String NValue=N.getValue();              
+       if ("xml".equals(NName)
+               && XML_LANG_URI.equals(NValue)) {
+          /* except omit namespace node with local name xml, which defines
+           * the xml prefix, if its string value is http://www.w3.org/XML/1998/namespace.
+           */
+          continue;
+       }
+       //add the prefix binding to the ns symb table.
+       //ns.addInclusiveMapping(NName,NValue,N,isRealVisible);          
+	    if  (isVisible(N))  {
+			    //The xpath select this node output it if needed.
+	    		Node n=ns.addMappingAndRenderXNodeSet(NName,NValue,N,isRealVisible); 	    		
+		 	 	if (n!=null) {
+		 	 		result.add(n);
+                    if (C14nHelper.namespaceIsRelative(N)) {
+                       Object exArgs[] = { E.getTagName(), NName, N.getNodeValue() };
+                       throw new CanonicalizationException(
+                          "c14n.Canonicalizer.RelativeNamespace", exArgs);
+                    }
+		 	 	}
+    	}
+    }
+    if (isRealVisible) {    	           
+    	//The element is visible, handle the xmlns definition        
+        Attr xmlns = E.getAttributeNodeNS(XMLNS_URI, XMLNS);
+        Node n=null;
+        if (xmlns == null) {
+        	//No xmlns def just get the already defined.
+        	n=ns.getMapping(XMLNS);        		
+        } else if ( !isVisible(xmlns)) {
+        	//There is a definition but the xmlns is not selected by the xpath.
+        	//then xmlns=""
+        	n=ns.addMappingAndRenderXNodeSet(XMLNS,"",nullNode,true);        	    		      	
+        }
+        //output the xmlns def if needed.
+        if (n!=null) {
+    			result.add(n);
+    	}
+        //Float all xml:* attributes of the unselected parent elements to this one. 
+    	addXmlAttributes(E,result);
+    }
+    
+    return result.iterator();
+   }
+   /**
+    *  Float the xml:* attributes of the unselected parent nodes to the ciurrent node.
+    * @param E
+    * @param result
+    */
+   private void addXmlAttributes(Element E, SortedSet result) {
+	/* The processing of an element node E MUST be modified slightly when an
+       * XPath node-set is given as input and the element's parent is omitted
+       * from the node-set. The method for processing the attribute axis of an
+       * element E in the node-set is enhanced. All element nodes along E's
+       * ancestor axis are examined for nearest occurrences of attributes in
+       * the xml namespace, such as xml:lang and xml:space (whether or not they
+       * are in the node-set). From this list of attributes, remove any that are
+       * in E's attribute axis (whether or not they are in the node-set). Then,
+       * lexicographically merge this attribute list with the nodes of E's
+       * attribute axis that are in the node-set. The result of visiting the
+       * attribute axis is computed by processing the attribute nodes in this
+       * merged attribute list.
+       */
+      
+         // E is in the node-set
+         Node parent = E.getParentNode();
+         Map loa = new HashMap();
+
+         if ((parent != null) && (parent.getNodeType() == Node.ELEMENT_NODE)
+                 &&!isVisible(parent)) {
+
+            // parent element is not in node set
+            for (Node ancestor = parent;
+                    (ancestor != null)
+                    && (ancestor.getNodeType() == Node.ELEMENT_NODE);
+                    ancestor = ancestor.getParentNode()) {
+            	Element el=((Element) ancestor);
+                if (!el.hasAttributes()) {
+                	continue;
+                }
+               // for all ancestor elements
+               NamedNodeMap ancestorAttrs =el.getAttributes();
+               int length=ancestorAttrs.getLength();
+               for (int i = 0; i < length; i++) {
+                  // for all attributes in the ancestor element
+                  Attr currentAncestorAttr = (Attr) ancestorAttrs.item(i);
+                  if (XML_LANG_URI==currentAncestorAttr.getNamespaceURI()) {
+                	  String name=currentAncestorAttr.getName();                  
+                      if (!loa.containsKey(name) ) {
+                           loa.put(name, currentAncestorAttr);                                             
+                      }
+                  }                  
+               }
+            }
+         }
+         result.addAll(loa.values());
+               
+}
+
+   /**
+    * Always throws a CanonicalizationException because this is inclusive c14n.
+    *
+    * @param xpathNodeSet
+    * @param inclusiveNamespaces
+    * @return none it always fails
+    * @throws CanonicalizationException always
+    */
+   public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet, String inclusiveNamespaces)
+           throws CanonicalizationException {
+
+      /** $todo$ well, should we throw UnsupportedOperationException ? */
+      throw new CanonicalizationException(
+         "c14n.Canonicalizer.UnsupportedOperation");
+   }
+
+   /**
+    * Always throws a CanonicalizationException because this is inclusive c14n.
+    *
+    * @param rootNode
+    * @param inclusiveNamespaces
+    * @return none it always fails
+    * @throws CanonicalizationException
+    */
+   public byte[] engineCanonicalizeSubTree(Node rootNode, String inclusiveNamespaces)
+           throws CanonicalizationException {
+
+      /** $todo$ well, should we throw UnsupportedOperationException ? */
+      throw new CanonicalizationException(
+         "c14n.Canonicalizer.UnsupportedOperation");
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315Excl.java b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315Excl.java
new file mode 100644
index 0000000..8bf0646
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315Excl.java
@@ -0,0 +1,315 @@
+
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *  
+ */
+package org.apache.xml.security.c14n.implementations;
+
+import java.util.Iterator;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.helper.C14nHelper;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.params.InclusiveNamespaces;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+/**
+ * Implements &quot; <A
+ * HREF="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">Exclusive XML
+ * Canonicalization, Version 1.0 </A>&quot; <BR />
+ * Credits: During restructuring of the Canonicalizer framework, Ren??
+ * Kollmorgen from Software AG submitted an implementation of ExclC14n which
+ * fitted into the old architecture and which based heavily on my old (and slow)
+ * implementation of "Canonical XML". A big "thank you" to Ren?? for this.
+ * <BR />
+ * <i>THIS </i> implementation is a complete rewrite of the algorithm.
+ * 
+ * @author Christian Geuer-Pollmann <geuerp@apache.org>
+ * @version $Revision$ 
+ * @see <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/ Exclusive#">
+ *          XML Canonicalization, Version 1.0</a>
+ */
+public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
+    /**
+      * This Set contains the names (Strings like "xmlns" or "xmlns:foo") of
+      * the inclusive namespaces.
+      */
+    TreeSet _inclusiveNSSet = new TreeSet();
+    static final String XMLNS_URI=Constants.NamespaceSpecNS;
+    final SortedSet result = new TreeSet(COMPARE);
+	/**
+	 * Constructor Canonicalizer20010315Excl
+	 * 
+	 * @param includeComments
+	 */
+	public Canonicalizer20010315Excl(boolean includeComments) {
+		super(includeComments);
+	}
+
+	/**
+	 * Method engineCanonicalizeSubTree
+	 * @inheritDoc
+	 * @param rootNode
+	 * 
+	 * @throws CanonicalizationException
+	 */
+	public byte[] engineCanonicalizeSubTree(Node rootNode)
+			throws CanonicalizationException {
+		return this.engineCanonicalizeSubTree(rootNode, "",null);
+	}
+	/**
+	 * Method engineCanonicalizeSubTree
+	 *  @inheritDoc
+	 * @param rootNode
+	 * @param inclusiveNamespaces
+	 * 
+	 * @throws CanonicalizationException
+	 */
+	public byte[] engineCanonicalizeSubTree(Node rootNode,
+			String inclusiveNamespaces) throws CanonicalizationException {
+		return this.engineCanonicalizeSubTree(rootNode, inclusiveNamespaces,null);
+	}
+	/**
+	 * Method engineCanonicalizeSubTree  
+	 * @param rootNode
+     * @param inclusiveNamespaces   
+     * @param excl A element to exclude from the c14n process. 
+	 * @return the rootNode c14n.
+	 * @throws CanonicalizationException
+	 */
+	public byte[] engineCanonicalizeSubTree(Node rootNode,
+			String inclusiveNamespaces,Node excl) throws CanonicalizationException {
+			this._inclusiveNSSet = (TreeSet)InclusiveNamespaces
+					.prefixStr2Set(inclusiveNamespaces);			
+			return super.engineCanonicalizeSubTree(rootNode,excl);
+	}
+	/**
+	 * 
+	 * @param rootNode
+	 * @param inclusiveNamespaces
+	 * @return the rootNode c14n.
+	 * @throws CanonicalizationException
+	 */
+	public byte[] engineCanonicalize(XMLSignatureInput rootNode,
+			String inclusiveNamespaces) throws CanonicalizationException {
+			this._inclusiveNSSet = (TreeSet)InclusiveNamespaces
+					.prefixStr2Set(inclusiveNamespaces);			
+			return super.engineCanonicalize(rootNode);
+	}
+ 
+	/**
+	 * Method handleAttributesSubtree
+	 * @inheritDoc
+	 * @param E
+	 * @throws CanonicalizationException
+	 */
+	Iterator handleAttributesSubtree(Element E,NameSpaceSymbTable ns)
+			throws CanonicalizationException {
+		// System.out.println("During the traversal, I encountered " +
+		// XMLUtils.getXPath(E));
+		// result will contain the attrs which have to be outputted
+		SortedSet result = this.result;       
+	    result.clear();
+		NamedNodeMap attrs=null;
+        
+		int attrsLength = 0;
+        if (E.hasAttributes()) {
+            attrs = E.getAttributes();
+        	attrsLength = attrs.getLength();
+        }
+		//The prefix visibly utilized(in the attribute or in the name) in the element
+		SortedSet visiblyUtilized =(SortedSet) _inclusiveNSSet.clone();
+					
+		for (int i = 0; i < attrsLength; i++) {
+			Attr N = (Attr) attrs.item(i);
+					
+			if (XMLNS_URI!=N.getNamespaceURI()) {
+				//Not a namespace definition.
+				//The Element is output element, add his prefix(if used) to visibyUtilized
+				String prefix = N.getPrefix();
+				if ( (prefix != null) && (!prefix.equals(XML) && !prefix.equals(XMLNS)) ) {
+						visiblyUtilized.add(prefix);
+				}					
+				//Add to the result.
+				 result.add(N);				
+				continue;
+			}
+			String NName=N.getLocalName();
+			String NNodeValue=N.getNodeValue();
+		
+			if (ns.addMapping(NName, NNodeValue,N)) {
+				//New definition check if it is relative.
+                if (C14nHelper.namespaceIsRelative(NNodeValue)) {
+                    Object exArgs[] = {E.getTagName(), NName,
+                            N.getNodeValue()};
+                    throw new CanonicalizationException(
+                            "c14n.Canonicalizer.RelativeNamespace", exArgs);
+                }
+            }
+		}		
+							
+		if (E.getNamespaceURI() != null) {
+			String prefix = E.getPrefix();
+			if ((prefix == null) || (prefix.length() == 0)) {
+				visiblyUtilized.add(XMLNS);
+			} else {
+				visiblyUtilized.add(prefix);
+			}
+		} else {
+			visiblyUtilized.add(XMLNS);
+		}
+									
+		//This can be optimezed by I don't have time
+		Iterator it=visiblyUtilized.iterator();
+		while (it.hasNext()) {
+			String s=(String)it.next();									
+			Attr key=ns.getMapping(s);
+			if (key==null) {
+				continue;
+			}
+			result.add(key);
+		}
+		
+		return result.iterator(); 		
+	}
+
+	/**
+	 * Method engineCanonicalizeXPathNodeSet
+	 * @inheritDoc
+	 * @param xpathNodeSet
+	 * @param inclusiveNamespaces
+	 * @throws CanonicalizationException
+	 */
+	public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet,
+			String inclusiveNamespaces) throws CanonicalizationException {
+		
+		
+			this._inclusiveNSSet = (TreeSet)InclusiveNamespaces
+					.prefixStr2Set(inclusiveNamespaces);
+			return super.engineCanonicalizeXPathNodeSet(xpathNodeSet);
+		
+	}
+	
+	/**
+     * @inheritDoc
+	 * @param E
+	 * @throws CanonicalizationException
+	 */
+	final Iterator handleAttributes(Element E, NameSpaceSymbTable ns)
+			throws CanonicalizationException {
+		// result will contain the attrs which have to be outputted
+		SortedSet result = this.result;       
+	    result.clear();
+		NamedNodeMap attrs = null;
+		int attrsLength = 0;
+        if (E.hasAttributes()) {
+            attrs = E.getAttributes();           
+        	attrsLength = attrs.getLength();
+        }
+		//The prefix visibly utilized(in the attribute or in the name) in the element
+		Set visiblyUtilized =null;
+		//It's the output selected.
+		boolean isOutputElement = isVisible(E);			
+		if (isOutputElement) {
+			visiblyUtilized =  (Set) this._inclusiveNSSet.clone();
+		}
+		
+		for (int i = 0; i < attrsLength; i++) {
+			Attr N = (Attr) attrs.item(i);
+			if ( !isVisible(N) )  {
+				//The node is not in the nodeset(if there is a nodeset)
+				continue;
+			}			
+						
+			if (XMLNS_URI!=N.getNamespaceURI()) {
+				//Not a namespace definition.
+				if (isOutputElement) {
+					//The Element is output element, add his prefix(if used) to visibyUtilized
+					String prefix = N.getPrefix();
+					if ((prefix != null) && (!prefix.equals(XML) && !prefix.equals(XMLNS)) ){ 
+							visiblyUtilized.add(prefix);
+					}					
+					//Add to the result.
+				    result.add(N);
+				}
+				continue;
+			}
+
+			String NName=N.getLocalName();
+			String NNodeValue=N.getNodeValue();
+
+			
+			if (ns.addMapping(NName, NNodeValue,N)) {
+                //New definiton check if it is relative
+                if (C14nHelper.namespaceIsRelative(NNodeValue)) {
+                    Object exArgs[] = {E.getTagName(), NName,
+                            N.getNodeValue()};
+                    throw new CanonicalizationException(
+                            "c14n.Canonicalizer.RelativeNamespace", exArgs);
+                }    
+            }
+		}
+
+		if (isOutputElement) {	               
+           //The element is visible, handle the xmlns definition    
+           Attr xmlns = E.getAttributeNodeNS(XMLNS_URI, XMLNS);
+           if ((xmlns!=null) &&  (!isVisible(xmlns))) {
+              //There is a definition but the xmlns is not selected by the xpath.
+              //then xmlns=""
+              ns.addMapping(XMLNS,"",nullNode);                               
+            }
+
+			if (E.getNamespaceURI() != null) {
+				String prefix = E.getPrefix();
+				if ((prefix == null) || (prefix.length() == 0)) {
+					visiblyUtilized.add(XMLNS);
+				} else {
+					visiblyUtilized.add( prefix);
+				}
+			} else {
+				visiblyUtilized.add(XMLNS);
+			}									
+			//This can be optimezed by I don't have time
+			//visiblyUtilized.addAll(this._inclusiveNSSet);
+			Iterator it=visiblyUtilized.iterator();
+			while (it.hasNext()) {
+				String s=(String)it.next();										
+				Attr key=ns.getMapping(s);
+				if (key==null) {
+					continue;
+				}
+				result.add(key);
+			}
+		} else /*if (_circunvented)*/ {			
+			Iterator it=this._inclusiveNSSet.iterator();
+			while (it.hasNext()) {
+				String s=(String)it.next();				
+				Attr key=ns.getMappingWithoutRendered(s);
+				if (key==null) {
+					continue;
+				}
+				result.add(key);								
+			}
+		}
+
+		return result.iterator(); 
+	}
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315ExclOmitComments.java b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315ExclOmitComments.java
new file mode 100644
index 0000000..0bed160
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315ExclOmitComments.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.c14n.implementations;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+
+/**
+ *  
+ *
+ */
+public class Canonicalizer20010315ExclOmitComments
+        extends Canonicalizer20010315Excl {
+
+   /**
+    * 
+    */
+	public Canonicalizer20010315ExclOmitComments() {
+      super(false);
+   }
+ 
+   /** @inheritDoc */
+   public final String engineGetURI() {
+      return Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
+   }
+
+   /** @inheritDoc */
+   public final boolean engineGetIncludeComments() {
+      return false;
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315ExclWithComments.java b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315ExclWithComments.java
new file mode 100644
index 0000000..b6800f3
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315ExclWithComments.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.implementations;
+
+
+
+import org.apache.xml.security.c14n.Canonicalizer;
+
+
+/**
+ * Class Canonicalizer20010315ExclWithComments
+ *
+ * @version $Revision$
+ */
+public class Canonicalizer20010315ExclWithComments
+        extends Canonicalizer20010315Excl {
+
+   /**
+    * Constructor Canonicalizer20010315ExclWithComments
+    *
+    */
+   public Canonicalizer20010315ExclWithComments() {
+      super(true);
+   }
+
+   /** @inheritDoc */
+   public final String engineGetURI() {
+      return Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS;
+   }
+
+   /** @inheritDoc */
+   public final boolean engineGetIncludeComments() {
+      return true;
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315OmitComments.java b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315OmitComments.java
new file mode 100644
index 0000000..6a2771a
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315OmitComments.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.implementations;
+
+
+
+import org.apache.xml.security.c14n.Canonicalizer;
+
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Canonicalizer20010315OmitComments extends Canonicalizer20010315 {
+
+   /**
+    * Constructor Canonicalizer20010315WithXPathOmitComments
+    *
+    */
+   public Canonicalizer20010315OmitComments() {
+      super(false);
+   }
+
+   /** @inheritDoc */
+   public final String engineGetURI() {
+      return Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+   }
+
+   /** @inheritDoc */
+   public final boolean engineGetIncludeComments() {
+      return false;
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315WithComments.java b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315WithComments.java
new file mode 100644
index 0000000..1073016
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315WithComments.java
@@ -0,0 +1,45 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.implementations;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Canonicalizer20010315WithComments extends Canonicalizer20010315 {
+
+   /**
+    * Constructor Canonicalizer20010315WithXPathWithComments
+    *
+    */
+   public Canonicalizer20010315WithComments() {
+      super(true);
+   }
+
+   /** @inheritDoc */
+   public final String engineGetURI() {
+      return Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+   }
+
+   /** @inheritDoc */
+   public final boolean engineGetIncludeComments() {
+      return true;
+   }
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java b/src/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java
new file mode 100644
index 0000000..dc857a4
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java
@@ -0,0 +1,942 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.implementations;
+
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.CanonicalizerSpi;
+import org.apache.xml.security.c14n.helper.AttrCompare;
+import org.apache.xml.security.signature.NodeFilter;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.UnsyncByteArrayOutputStream;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.ProcessingInstruction;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Abstract base class for canonicalization algorithms.
+ *
+ * @author Christian Geuer-Pollmann <geuerp@apache.org>
+ * @version $Revision$
+ */
+public abstract class CanonicalizerBase extends CanonicalizerSpi {
+   //Constants to be outputed, In char array form, so
+   //less garbage is generate when outputed.
+   private static final byte[] _END_PI = {'?','>'};
+   private static final byte[] _BEGIN_PI = {'<','?'};
+   private static final byte[] _END_COMM = {'-','-','>'};
+   private static final byte[] _BEGIN_COMM = {'<','!','-','-'};
+   private static final byte[] __XA_ = {'&','#','x','A',';'};
+   private static final byte[] __X9_ = {'&','#','x','9',';'};
+   private static final byte[] _QUOT_ = {'&','q','u','o','t',';'};
+   private static final byte[] __XD_ = {'&','#','x','D',';'};
+   private static final byte[] _GT_ = {'&','g','t',';'};
+   private static final byte[] _LT_ = {'&','l','t',';'};
+   private static final byte[] _END_TAG = {'<','/'};
+   private static final byte[] _AMP_ = {'&','a','m','p',';'};
+   final static AttrCompare COMPARE=new AttrCompare();
+   final static String XML="xml";
+   final static String XMLNS="xmlns";
+   final static byte[] equalsStr= {'=','\"'};
+   static final int NODE_BEFORE_DOCUMENT_ELEMENT = -1;
+   static final int NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT = 0;
+   static final int NODE_AFTER_DOCUMENT_ELEMENT = 1;
+   //The null xmlns definiton.
+   protected static final Attr nullNode;
+   static {
+    try {
+        nullNode=DocumentBuilderFactory.newInstance().
+            newDocumentBuilder().newDocument().createAttributeNS(Constants.NamespaceSpecNS,XMLNS);
+        nullNode.setValue("");
+    } catch (Exception e) {
+        throw new RuntimeException("Unable to create nullNode"/*,*/+e);
+    }
+   }
+   
+   List nodeFilter;
+   
+   boolean _includeComments;
+   Set _xpathNodeSet = null;
+   /**
+    * The node to be skiped/excluded from the DOM tree 
+    * in subtree canonicalizations.
+    */
+   Node _excludeNode =null;
+   OutputStream _writer = new UnsyncByteArrayOutputStream();//null;
+
+   /**
+    * Constructor CanonicalizerBase
+    *
+    * @param includeComments
+    */
+   public CanonicalizerBase(boolean includeComments) {
+      this._includeComments = includeComments;
+   }
+
+   /**
+    * Method engineCanonicalizeSubTree
+    * @inheritDoc
+    * @param rootNode
+    * @throws CanonicalizationException
+    */
+   public byte[] engineCanonicalizeSubTree(Node rootNode)
+           throws CanonicalizationException {
+   		return engineCanonicalizeSubTree(rootNode,(Node)null);
+   }
+   /**
+    * Canonicalizes a Subtree node.
+    * @param input the root of the subtree to canicalize
+    * @return The canonicalize stream.
+    * @throws CanonicalizationException
+    */
+    public byte[] engineCanonicalize(XMLSignatureInput input)
+    throws CanonicalizationException {
+    	try {
+    		if (input.isExcludeComments())
+    			_includeComments = false;
+			byte[] bytes;
+			if (input.isOctetStream()) {
+				return engineCanonicalize(input.getBytes());
+			}
+			if (input.isElement()) {
+				bytes = engineCanonicalizeSubTree(input.getSubNode(), input
+						.getExcludeNode());
+				return bytes;
+			} else if (input.isNodeSet()) {
+				nodeFilter=input.getNodeFilters();
+                                Document doc = null;
+                                if (input.getSubNode() != null) {
+                                    doc=XMLUtils.getOwnerDocument(input.getSubNode());
+                                } else {
+                                    doc=XMLUtils.getOwnerDocument(input.getNodeSet());
+                                }
+				if (input.isNeedsToBeExpanded()) {
+					XMLUtils.circumventBug2650(doc);
+				}
+
+				if (input.getSubNode() != null) {
+				    bytes = engineCanonicalizeXPathNodeSetInternal(input.getSubNode());
+				} else {
+				    bytes = engineCanonicalizeXPathNodeSet(input.getNodeSet());
+				}
+				return bytes;
+
+			}
+			return null;
+		} catch (CanonicalizationException ex) {
+			throw new CanonicalizationException("empty", ex);
+		} catch (ParserConfigurationException ex) {
+			throw new CanonicalizationException("empty", ex);
+		} catch (IOException ex) {
+			throw new CanonicalizationException("empty", ex);
+		} catch (SAXException ex) {
+			throw new CanonicalizationException("empty", ex);
+		}
+   }
+   /**
+	 * Canonicalizes a Subtree node.
+	 * 
+	 * @param rootNode
+	 *            the root of the subtree to canicalize
+	 * @param excludeNode
+	 *            a node to be excluded from the canicalize operation
+	 * @return The canonicalize stream.
+	 * @throws CanonicalizationException
+	 */
+    byte[] engineCanonicalizeSubTree(Node rootNode,Node excludeNode)
+    throws CanonicalizationException {
+    	this._excludeNode = excludeNode;
+        try {
+         NameSpaceSymbTable ns=new NameSpaceSymbTable();
+         if (rootNode instanceof Element) {
+         	//Fills the nssymbtable with the definitions of the parent of the root subnode
+         	getParentNameSpaces((Element)rootNode,ns);
+         }         
+         this.canonicalizeSubTree(rootNode,ns,rootNode);
+         this._writer.close();
+         if (this._writer instanceof ByteArrayOutputStream) {
+            byte []result=((ByteArrayOutputStream)this._writer).toByteArray();
+            if (reset) {
+                ((ByteArrayOutputStream)this._writer).reset();        
+            }
+         	return result;
+         }  else if (this._writer instanceof UnsyncByteArrayOutputStream) {
+        	 byte []result=((UnsyncByteArrayOutputStream)this._writer).toByteArray();
+             if (reset) {
+                 ((UnsyncByteArrayOutputStream)this._writer).reset();        
+             }
+          	 return result;
+         }
+         return null;
+         
+      } catch (UnsupportedEncodingException ex) {
+         throw new CanonicalizationException("empty", ex);
+      } catch (IOException ex) {
+         throw new CanonicalizationException("empty", ex);
+      } 
+   }
+ 
+   
+   /**
+    * Method canonicalizeSubTree, this function is a recursive one.
+    *    
+    * @param currentNode
+    * @param ns 
+    * @param endnode 
+    * @throws CanonicalizationException
+    * @throws IOException
+    */
+    final void canonicalizeSubTree(Node currentNode, NameSpaceSymbTable ns,Node endnode)
+    throws CanonicalizationException, IOException {
+    	Node sibling=null;
+    	Node parentNode=null;
+    	final OutputStream writer=this._writer;
+    	final Node excludeNode=this._excludeNode;
+    	final boolean includeComments=this._includeComments;
+    	Map cache=new HashMap();
+    	do {
+    		switch (currentNode.getNodeType()) {
+    		
+    		case Node.DOCUMENT_TYPE_NODE :
+    		default :
+    			break;
+    		
+    		case Node.ENTITY_NODE :
+    		case Node.NOTATION_NODE :
+    		case Node.ATTRIBUTE_NODE :
+    			// illegal node type during traversal
+    			throw new CanonicalizationException("empty");
+
+            case Node.DOCUMENT_FRAGMENT_NODE :
+    		case Node.DOCUMENT_NODE :
+    			ns.outputNodePush();
+    			//currentNode = currentNode.getFirstChild();  
+    			sibling= currentNode.getFirstChild();
+    			break;
+    			
+    		case Node.COMMENT_NODE :
+    			if (includeComments) {
+    				outputCommentToWriter((Comment) currentNode, writer);
+    			}
+    			break;
+    			
+    		case Node.PROCESSING_INSTRUCTION_NODE :
+    			outputPItoWriter((ProcessingInstruction) currentNode, writer);
+    			break;
+    			
+    		case Node.TEXT_NODE :
+    		case Node.CDATA_SECTION_NODE :
+    			outputTextToWriter(currentNode.getNodeValue(), writer);
+    			break;
+    			
+    		case Node.ELEMENT_NODE :        
+    			if (currentNode==excludeNode) {
+    				break;
+    			}      
+    			Element currentElement = (Element) currentNode;
+    			//Add a level to the nssymbtable. So latter can be pop-back.
+    			ns.outputNodePush();
+    			writer.write('<');
+    			String name=currentElement.getTagName();
+    			writeByte(name,writer,cache);
+    			
+    			Iterator attrs = this.handleAttributesSubtree(currentElement,ns);
+    			if (attrs!=null) {
+    				//we output all Attrs which are available
+    				while (attrs.hasNext()) {
+    					Attr attr = (Attr) attrs.next();
+    					outputAttrToWriter(attr.getNodeName(),attr.getNodeValue(), writer,cache);
+    				}
+    			}
+    			writer.write('>');        
+    			sibling= currentNode.getFirstChild(); 
+    			if (sibling==null) {
+    				writer.write(_END_TAG);
+        			writeStringToUtf8(name,writer);        
+        			writer.write('>');
+        			//We fineshed with this level, pop to the previous definitions.
+        			ns.outputNodePop();
+				if (parentNode != null) {
+       			    		sibling= currentNode.getNextSibling();
+				}
+    			} else {
+    				parentNode=currentElement;
+    			}
+    			break;
+    		}
+    		while (sibling==null  && parentNode!=null) {    		      		      			
+    			writer.write(_END_TAG);
+    			writeByte(((Element)parentNode).getTagName(),writer,cache);        
+    			writer.write('>');
+    			//We fineshed with this level, pop to the previous definitions.
+    			ns.outputNodePop();
+    			if (parentNode==endnode)
+    				return;
+    			sibling=parentNode.getNextSibling();
+    			parentNode=parentNode.getParentNode();   
+    			if (!(parentNode instanceof Element)) {
+    				parentNode=null;
+    			}    			
+    		}      
+    		if (sibling==null)
+    			return;
+    		currentNode=sibling;      
+    		sibling=currentNode.getNextSibling();  
+    	} while(true);
+    }
+
+   /**
+    * Checks whether a Comment or ProcessingInstruction is before or after the
+    * document element. This is needed for prepending or appending "\n"s.
+    *
+    * @param currentNode comment or pi to check
+    * @return NODE_BEFORE_DOCUMENT_ELEMENT, NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT or NODE_AFTER_DOCUMENT_ELEMENT
+    * @see #NODE_BEFORE_DOCUMENT_ELEMENT
+    * @see #NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT
+    * @see #NODE_AFTER_DOCUMENT_ELEMENT
+    */
+   final static int getPositionRelativeToDocumentElement(Node currentNode) {
+            
+      if ((currentNode == null) || 
+            (currentNode.getParentNode().getNodeType() != Node.DOCUMENT_NODE) ) {
+         return CanonicalizerBase.NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT;
+      }
+      Element documentElement = currentNode.getOwnerDocument().getDocumentElement();
+      if ( (documentElement == null)  || (documentElement == currentNode) ){
+         return CanonicalizerBase.NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT;
+      }
+      
+      for (Node x = currentNode; x != null; x = x.getNextSibling()) {
+         if (x == documentElement) {
+            return CanonicalizerBase.NODE_BEFORE_DOCUMENT_ELEMENT;
+         }
+      }
+
+      return CanonicalizerBase.NODE_AFTER_DOCUMENT_ELEMENT;
+   }
+     
+   /**
+    * Method engineCanonicalizeXPathNodeSet
+    * @inheritDoc
+    * @param xpathNodeSet
+    * @throws CanonicalizationException
+    */
+   public byte[] engineCanonicalizeXPathNodeSet(Set xpathNodeSet)
+           throws CanonicalizationException {
+	   this._xpathNodeSet = xpathNodeSet;
+	   return engineCanonicalizeXPathNodeSetInternal(XMLUtils.getOwnerDocument(this._xpathNodeSet));
+   }
+   private  byte[] engineCanonicalizeXPathNodeSetInternal(Node doc)
+           throws CanonicalizationException {   
+      
+      try { 
+         this.canonicalizeXPathNodeSet(doc,doc);
+         this._writer.close();
+         if (this._writer instanceof ByteArrayOutputStream) {
+            byte [] sol=((ByteArrayOutputStream)this._writer).toByteArray();
+            if (reset) {
+            	((ByteArrayOutputStream)this._writer).reset();
+            }
+         	return sol;
+         }  else if (this._writer instanceof UnsyncByteArrayOutputStream) {
+        	 byte []result=((UnsyncByteArrayOutputStream)this._writer).toByteArray();
+             if (reset) {
+                 ((UnsyncByteArrayOutputStream)this._writer).reset();        
+             }
+          	 return result;
+         }
+         return null;
+      } catch (UnsupportedEncodingException ex) {
+         throw new CanonicalizationException("empty", ex);
+      } catch (IOException ex) {
+         throw new CanonicalizationException("empty", ex);
+      } 
+   }
+
+   /**
+    * Canoicalizes all the nodes included in the currentNode and contained in the 
+	* _xpathNodeSet field.
+    *
+    * @param currentNode
+	* @param endnode
+    * @throws CanonicalizationException
+    * @throws IOException
+    */
+   final void canonicalizeXPathNodeSet(Node currentNode,Node endnode )
+           throws CanonicalizationException, IOException {
+	   boolean currentNodeIsVisible = false;	  
+	   NameSpaceSymbTable ns=new  NameSpaceSymbTable();
+  	Node sibling=null;
+	Node parentNode=null;	
+	OutputStream writer=this._writer;
+	Map cache=new HashMap();
+	do {
+		switch (currentNode.getNodeType()) {
+		
+		case Node.DOCUMENT_TYPE_NODE :
+		default :
+			break;
+		
+		case Node.ENTITY_NODE :
+		case Node.NOTATION_NODE :
+		case Node.ATTRIBUTE_NODE :
+			// illegal node type during traversal
+			throw new CanonicalizationException("empty");
+
+        case Node.DOCUMENT_FRAGMENT_NODE :
+		case Node.DOCUMENT_NODE :
+			ns.outputNodePush();
+			//currentNode = currentNode.getFirstChild();  
+			sibling= currentNode.getFirstChild();
+			break;
+			
+		case Node.COMMENT_NODE :			
+			if (this._includeComments && isVisible(currentNode)) {
+				outputCommentToWriter((Comment) currentNode, writer);
+			}
+			break;
+			
+		case Node.PROCESSING_INSTRUCTION_NODE :
+			if (isVisible(currentNode))
+				outputPItoWriter((ProcessingInstruction) currentNode, writer);
+			break;
+			
+		case Node.TEXT_NODE :
+		case Node.CDATA_SECTION_NODE :
+			if (isVisible(currentNode)) {
+			outputTextToWriter(currentNode.getNodeValue(), writer);
+			for (Node nextSibling = currentNode.getNextSibling();
+                    (nextSibling != null)
+                    && ((nextSibling.getNodeType() == Node.TEXT_NODE)
+                        || (nextSibling.getNodeType()
+                            == Node.CDATA_SECTION_NODE));
+                    nextSibling = nextSibling.getNextSibling()) {
+               outputTextToWriter(nextSibling.getNodeValue(), writer);
+               currentNode=nextSibling;
+               sibling=currentNode.getNextSibling();
+            }
+			
+			}
+			break;
+			
+		case Node.ELEMENT_NODE :             
+			Element currentElement = (Element) currentNode;
+			//Add a level to the nssymbtable. So latter can be pop-back.
+			String name=null;
+			currentNodeIsVisible=isVisible(currentNode);
+			if (currentNodeIsVisible) {
+				ns.outputNodePush();
+				writer.write('<');
+				name=currentElement.getTagName();
+				writeByte(name,writer,cache);
+			} else {
+				ns.push();
+			}
+			
+			Iterator attrs = handleAttributes(currentElement,ns);
+			if (attrs!=null) {
+				//we output all Attrs which are available
+				while (attrs.hasNext()) {
+					Attr attr = (Attr) attrs.next();
+					outputAttrToWriter(attr.getNodeName(),attr.getNodeValue(), writer,cache);
+				}
+			}
+			if (currentNodeIsVisible) {
+				writer.write('>');
+			}
+			sibling= currentNode.getFirstChild(); 
+		
+			if (sibling==null) {
+				if (currentNodeIsVisible) {
+					writer.write(_END_TAG);
+					writeByte(name,writer,cache);        
+					writer.write('>');
+					//We fineshed with this level, pop to the previous definitions.
+					ns.outputNodePop();
+				} else {
+					ns.pop();
+				}				
+				if (parentNode != null) {
+    					sibling= currentNode.getNextSibling();
+				}
+			} else {
+				parentNode=currentElement;
+			}
+			break;
+		}
+		while (sibling==null  && parentNode!=null) {    
+			if (isVisible(parentNode)) {
+				writer.write(_END_TAG);
+				writeByte(((Element)parentNode).getTagName(),writer,cache);        
+				writer.write('>');
+				//We fineshed with this level, pop to the previous definitions.
+				ns.outputNodePop();
+			} else {
+				ns.pop();
+			}
+			if (parentNode==endnode)
+				return;
+			sibling=parentNode.getNextSibling();
+			parentNode=parentNode.getParentNode();   
+			if (!(parentNode instanceof Element)) {
+				parentNode=null;
+			}    			
+		}      
+		if (sibling==null)
+			return;
+		currentNode=sibling;      
+		sibling=currentNode.getNextSibling();  
+	} while(true);
+   }
+
+   boolean isVisible(Node currentNode) {
+	   if (nodeFilter!=null) {
+   		Iterator it=nodeFilter.iterator();
+   		while (it.hasNext()) {
+   			if (!((NodeFilter)it.next()).isNodeInclude(currentNode))
+   				return false;
+   		}
+	   }
+   		if ((this._xpathNodeSet!=null) && !this._xpathNodeSet.contains(currentNode))
+   			return false;
+   		return true;
+   	}
+
+	/**
+	 * Adds to ns the definitons from the parent elements of el
+   	 * @param el
+   	 * @param ns
+   	 */
+   	final static void getParentNameSpaces(Element el,NameSpaceSymbTable ns)  {
+   		List parents=new ArrayList();
+   		Node n1=el.getParentNode();
+   		if (!(n1 instanceof Element)) {
+   			return;
+   		}
+   		//Obtain all the parents of the elemnt
+   		Element parent=(Element) el.getParentNode();
+   		while (parent!=null) {
+   			parents.add(parent);
+   			Node n=parent.getParentNode();
+   			if (!(n instanceof Element )) {
+   				break;
+   			}
+   			parent=(Element)n;
+   		}
+   		//Visit them in reverse order.
+   		ListIterator it=parents.listIterator(parents.size());
+   		while (it.hasPrevious()) {
+   		Element ele=(Element)it.previous();
+        if (!ele.hasAttributes()) {
+        	continue;
+        }
+		NamedNodeMap attrs = ele.getAttributes();
+   		int attrsLength = attrs.getLength();
+   		 for (int i = 0; i < attrsLength; i++) {
+            Attr N = (Attr) attrs.item(i);
+            if (Constants.NamespaceSpecNS!=N.getNamespaceURI()) {
+               //Not a namespace definition, ignore.
+               continue;
+            }
+
+            String NName=N.getLocalName();
+            String NValue=N.getNodeValue();
+            if (XML.equals(NName)
+                    && Constants.XML_LANG_SPACE_SpecNS.equals(NValue)) {
+               continue;
+            }            
+            ns.addMapping(NName,NValue,N);             
+   		 }   			
+   		}
+        Attr nsprefix;
+        if (((nsprefix=ns.getMappingWithoutRendered("xmlns"))!=null) 
+                && "".equals(nsprefix.getValue())) {
+             ns.addMappingAndRender("xmlns","",nullNode);
+        }
+   	}
+   /**
+    * Outputs an Attribute to the internal Writer.
+    *
+    * The string value of the node is modified by replacing
+    * <UL>
+    * <LI>all ampersands (&) with <CODE>&amp;amp;</CODE></LI>
+    * <LI>all open angle brackets (<) with <CODE>&amp;lt;</CODE></LI>
+    * <LI>all quotation mark characters with <CODE>&amp;quot;</CODE></LI>
+    * <LI>and the whitespace characters <CODE>#x9</CODE>, #xA, and #xD, with character
+    * references. The character references are written in uppercase
+    * hexadecimal with no leading zeroes (for example, <CODE>#xD</CODE> is represented
+    * by the character reference <CODE>&amp;#xD;</CODE>)</LI>
+    * </UL>
+    *
+    * @param name
+    * @param value
+    * @param writer 
+    * @throws IOException
+    */
+   static final void outputAttrToWriter(final String name, final String value, final OutputStream writer,
+		   	final Map cache) throws IOException {
+      writer.write(' ');
+      writeByte(name,writer,cache);
+      writer.write(equalsStr);
+      byte  []toWrite;
+      final int length = value.length();
+      int i=0;
+      while (i < length) {        
+         char c = value.charAt(i++);
+
+         switch (c) {
+
+         case '&' :
+         	toWrite=_AMP_;
+            break;
+
+         case '<' :
+         	toWrite=_LT_;
+            break;
+
+         case '"' :
+         	toWrite=_QUOT_;
+            break;
+
+         case 0x09 :    // '\t'
+         	toWrite=__X9_;
+            break;
+
+         case 0x0A :    // '\n'
+         	toWrite=__XA_;
+            break;
+
+         case 0x0D :    // '\r'
+         	toWrite=__XD_;
+            break;
+
+         default :
+        	if( (c & 0x80) ==0) {
+        		writer.write(c);
+        	} else {
+        		writeCharToUtf8(c,writer);
+        	};
+            continue;
+         }
+         writer.write(toWrite);
+      }
+
+      writer.write('\"');
+   }
+
+   final static void writeCharToUtf8(final char c,final OutputStream out) throws IOException{   	
+   	if ( (c & 0x80) ==0) {
+        out.write(c);
+        return;
+    }
+    int bias;
+    int write;
+    char ch;
+    if (c > 0x07FF) {
+        ch=(char)(c>>>12);      
+        write=0xE0;
+        if (ch>0) {
+            write |= ( ch & 0x0F);
+        } 
+        out.write(write);
+        write=0x80;
+        bias=0x3F;        
+    } else {
+    	write=0xC0;
+    	bias=0x1F;
+    }
+    ch=(char)(c>>>6);
+    if (ch>0) {
+         write|= (ch & bias);
+    } 
+    out.write(write);
+    out.write(0x80 | ((c) & 0x3F));    
+   	
+   }   
+   final static void writeByte(final String str,final OutputStream out,Map cache) throws IOException {
+	   byte []result=(byte[]) cache.get(str);	 
+	   if (result==null) {
+		   result=getStringInUtf8(str);
+		   cache.put(str,result);
+	   }
+	   
+	   out.write(result);
+	   
+   }
+   final static byte[] getStringInUtf8(final String str) {
+	   final int length=str.length();
+	   byte []result=new byte[length];
+	   	int i=0;
+	   	int out=0;
+	    char c;    
+	   	while (i<length) {
+	   		c=str.charAt(i++);        
+	        if ((c & 0x80) == 0) {
+	            result[out++]=(byte)c;
+	            continue;
+	        }
+	        char ch;
+	        int bias;
+	        byte write;
+	        if (c > 0x07FF) {
+	            ch=(char)(c>>>12);      
+	            write=(byte)0xE0;
+	            if (ch>0) {
+	                write |= ( ch & 0x0F);
+	            } 
+	            result[out++]=write;
+	            write=(byte)0x80;
+	            bias=0x3F;        
+	        } else {
+	        	write=(byte)0xC0;
+	        	bias=0x1F;
+	        }
+	        ch=(char)(c>>>6);
+	        if (ch>0) {
+	             write|= (ch & bias);
+	        } 
+	        result[out++]=write;
+	        result[out++]=(byte)(0x80 | ((c) & 0x3F));       
+	           		
+	   	} 
+	   	return result;
+   }
+   final static void writeStringToUtf8(final String str,final OutputStream out) throws IOException{	   
+   	final int length=str.length();
+   	int i=0;
+    char c;    
+   	while (i<length) {
+   		c=str.charAt(i++);        
+        if ((c & 0x80) == 0) {
+            out.write(c);
+            continue;
+        }
+        char ch;
+        int bias;
+        int write;
+        if (c > 0x07FF) {
+            ch=(char)(c>>>12);      
+            write=0xE0;
+            if (ch>0) {
+                write |= ( ch & 0x0F);
+            } 
+            out.write(write);
+            write=0x80;
+            bias=0x3F;        
+        } else {
+        	write=0xC0;
+        	bias=0x1F;
+        }
+        ch=(char)(c>>>6);
+        if (ch>0) {
+             write|= (ch & bias);
+        } 
+        out.write(write);
+        out.write(0x80 | ((c) & 0x3F));       
+           		
+   	}
+    
+   }
+   /**
+    * Outputs a PI to the internal Writer.
+    *
+    * @param currentPI
+    * @param writer where to write the things
+    * @throws IOException
+    */
+   static final void outputPItoWriter(ProcessingInstruction currentPI, OutputStream writer) throws IOException {
+   	  final int position = getPositionRelativeToDocumentElement(currentPI);
+
+      if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
+        writer.write('\n');
+      }
+      writer.write(_BEGIN_PI);
+
+      final String target = currentPI.getTarget();
+      int length = target.length();
+
+      for (int i = 0; i < length; i++) {         
+      	 char c=target.charAt(i);
+         if (c==0x0D) {
+            writer.write(__XD_);
+         } else {
+        	 if( (c & 0x80) ==0) {
+         		writer.write(c);
+         	} else {
+         		writeCharToUtf8(c,writer);
+         	};           
+         }
+      }
+
+      final String data = currentPI.getData();
+     
+      length = data.length();
+
+      if (length > 0) {
+         writer.write(' ');
+
+         for (int i = 0; i < length; i++) {            
+         	char c=data.charAt(i);
+            if (c==0x0D) {
+               writer.write(__XD_);
+            } else {
+               writeCharToUtf8(c,writer);               
+            }
+         }
+      }
+
+      writer.write(_END_PI);
+      if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
+        writer.write('\n');
+     }
+   }
+
+   /**
+    * Method outputCommentToWriter
+    *
+    * @param currentComment
+    * @param writer writer where to write the things
+    * @throws IOException
+    */
+   static final void outputCommentToWriter(Comment currentComment, OutputStream writer) throws IOException {
+   	  final int position = getPositionRelativeToDocumentElement(currentComment);
+   	  if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
+   		writer.write('\n');
+   	  }
+      writer.write(_BEGIN_COMM);
+
+      final String data = currentComment.getData();
+      final int length = data.length();      
+
+      for (int i = 0; i < length; i++) {         
+         char c=data.charAt(i);
+         if (c==0x0D) {
+            writer.write(__XD_);
+         } else {
+        	 if( (c & 0x80) ==0) {
+         		writer.write(c);
+         	} else {
+         		writeCharToUtf8(c,writer);
+         	};               
+         }      
+      }
+
+      writer.write(_END_COMM);
+      if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
+		writer.write('\n');
+	 }
+   }
+
+   /**
+    * Outputs a Text of CDATA section to the internal Writer.
+    *
+    * @param text
+    * @param writer writer where to write the things
+    * @throws IOException
+    */
+   static final void outputTextToWriter(final String text, final OutputStream writer) throws IOException {
+      final int length = text.length();
+      byte []toWrite;
+      for (int i = 0; i < length; i++) {
+         char c = text.charAt(i);
+
+         switch (c) {
+
+         case '&' :
+         	toWrite=_AMP_;
+            break;
+
+         case '<' :
+         	toWrite=_LT_;
+            break;
+
+         case '>' :
+         	toWrite=_GT_;
+            break;
+
+         case 0xD :
+         	toWrite=__XD_;
+            break;
+
+         default :
+        	 if ((c & 0x80) ==0) {
+        		 writer.write(c);
+        	 } else {
+        		 writeCharToUtf8(c,writer);
+        	 };
+            continue;
+         }
+         writer.write(toWrite);
+      }
+   }
+
+   /**
+    * Obtain the attributes to output for this node in XPathNodeSet c14n. 
+    *
+    * @param E
+	* @param ns
+	* @return the attributes nodes to output.
+    * @throws CanonicalizationException
+    */
+   abstract Iterator handleAttributes(Element E, NameSpaceSymbTable ns )
+   throws CanonicalizationException;
+
+   /**
+    * Obtain the attributes to output for this node in a Subtree c14n.
+    *
+    * @param E
+	* @param ns
+	* @return the attributes nodes to output.
+    * @throws CanonicalizationException
+    */
+   abstract Iterator handleAttributesSubtree(Element E, NameSpaceSymbTable ns)
+   throws CanonicalizationException;
+
+
+    
+    /**
+     * @param _writer The _writer to set.
+     */
+    public void setWriter(OutputStream _writer) {
+    	this._writer = _writer;
+    }
+     
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/NameSpaceSymbTable.java b/src/org/apache/xml/security/c14n/implementations/NameSpaceSymbTable.java
new file mode 100644
index 0000000..e6694a3
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/NameSpaceSymbTable.java
@@ -0,0 +1,416 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.c14n.implementations;
+
+import java.lang.reflect.Array;
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Node;
+
+
+
+/**
+ * A stack based Symble Table.
+ *<br>For speed reasons all the symbols are introduced in the same map,
+ * and at the same time in a list so it can be removed when the frame is pop back.
+ * @author Raul Benito
+ **/
+public class NameSpaceSymbTable {
+	
+	/**The map betwen prefix-> entry table. */
+	SymbMap symb = new SymbMap();
+	/**The level of nameSpaces (for Inclusive visibility).*/
+	int nameSpaces=0;
+	/**The stacks for removing the definitions when doing pop.*/
+	List level = new ArrayList();
+    boolean cloned=true;	
+	static final String XMLNS="xmlns";
+    /**
+     * Default constractor
+     **/		
+    public NameSpaceSymbTable() {
+    	//Insert the default binding for xmlns.
+    	NameSpaceSymbEntry ne=new NameSpaceSymbEntry("",null,true);
+		ne.lastrendered="";
+    	symb.put(XMLNS,ne);    
+    }
+    
+    /**
+	 * Get all the unrendered nodes in the name space.
+	 * For Inclusive rendering
+     * @param result the list where to fill the unrendered xmlns definitions.
+	 **/       
+	public  void getUnrenderedNodes(Collection result) {		
+	   //List result=new ArrayList();
+	   Iterator it=symb.entrySet().iterator();
+	   while (it.hasNext()) {	   	   
+	   		NameSpaceSymbEntry n=(NameSpaceSymbEntry)(it.next());
+	   		//put them rendered?
+	   		if ((!n.rendered) && (n.n!=null)) {
+	   			result.add(n.n);
+	   			n.rendered=true;
+	   		}
+	   }	   
+	}
+	
+	/**
+     * Push a frame for visible namespace. 
+     * For Inclusive rendering.
+     **/
+	public void outputNodePush() {
+		nameSpaces++;
+		push();
+	}
+	
+	/**
+     * Pop a frame for visible namespace.
+     **/
+	public void outputNodePop() {
+		nameSpaces--;
+		pop();
+	}
+	
+	/**
+     * Push a frame for a node.
+     * Inclusive or Exclusive.
+     **/
+	public void push() {		
+		//Put the number of namespace definitions in the stack.
+        /**if (cloned) {
+        	Object ob[]= {symb,cloned ? symb : null};
+        	level.add(ob);
+        } **/
+        level.add(null);
+        cloned=false;
+	}
+	
+	/**
+     * Pop a frame.
+     * Inclusive or Exclusive.
+     **/
+	public void pop() {
+        int size=level.size()-1;
+        Object ob= level.remove(size);
+        if (ob!=null) {
+        	symb=(SymbMap)ob;
+            if (size==0) {
+               cloned=false;   
+            } else
+            cloned=(level.get(size-1)!=symb);
+        } else {
+        	cloned=false;
+        }
+        
+        
+	}
+	
+	final void needsClone() {
+		if (!cloned) {
+            level.remove(level.size()-1);
+            level.add(symb);
+			symb=(SymbMap) symb.clone();
+            cloned=true;
+        }
+    }
+	
+	
+	/**
+	 * Gets the attribute node that defines the binding for the prefix.      
+     * @param prefix the prefix to obtain the attribute.
+     * @return null if there is no need to render the prefix. Otherwise the node of
+     * definition.
+     **/
+	public Attr getMapping(String prefix) {					
+		NameSpaceSymbEntry entry=symb.get(prefix);
+		if (entry==null) {
+			//There is no definition for the prefix(a bug?).
+			return null;
+		}
+		if (entry.rendered) {		
+			//No need to render an entry already rendered.
+			return null;		
+		}
+		// Mark this entry as render.
+        entry=(NameSpaceSymbEntry) entry.clone();
+        needsClone();
+        symb.put(prefix,entry);
+		entry.rendered=true;
+		entry.level=nameSpaces;
+		entry.lastrendered=entry.uri;				
+		// Return the node for outputing.
+		return entry.n;
+	}
+	
+	/**
+     * Gets a definition without mark it as render. 
+     * For render in exclusive c14n the namespaces in the include prefixes.
+     * @param prefix The prefix whose definition is neaded.
+     * @return the attr to render, null if there is no need to render
+     **/
+	public Attr getMappingWithoutRendered(String prefix) {					
+		NameSpaceSymbEntry entry= symb.get(prefix);
+		if (entry==null) {		   
+			return null;
+		}
+		if (entry.rendered) {		
+			return null;		
+		}
+		return entry.n;
+	}
+	
+	/**
+     * Adds the mapping for a prefix.
+     * @param prefix the prefix of definition
+     * @param uri the Uri of the definition
+     * @param n the attribute that have the definition
+     * @return true if there is already defined.
+     **/
+	public boolean addMapping(String prefix, String uri,Attr n) {						
+		NameSpaceSymbEntry ob = symb.get(prefix);		
+		if ((ob!=null) && uri.equals(ob.uri)) {
+			//If we have it previously defined. Don't keep working.
+			return false;
+		}			
+		//Creates and entry in the table for this new definition.
+		NameSpaceSymbEntry ne=new NameSpaceSymbEntry(uri,n,false);		
+        needsClone();
+		symb.put(prefix, ne);
+		if (ob != null) {
+			//We have a previous definition store it for the pop.			
+			//Check if a previous definition(not the inmidiatly one) has been rendered.			
+			ne.lastrendered=ob.lastrendered;			
+			if ((ob.lastrendered!=null)&& (ob.lastrendered.equals(uri))) {
+				//Yes it is. Mark as rendered.
+				ne.rendered=true;
+			}			
+		} 			
+        return true;
+	}
+
+    /**
+     * Adds a definition and mark it as render.
+     * For inclusive c14n.
+     * @param prefix the prefix of definition
+     * @param uri the Uri of the definition
+     * @param n the attribute that have the definition
+     * @return the attr to render, null if there is no need to render
+     **/
+    public Node addMappingAndRender(String prefix, String uri,Attr n) {                     
+        NameSpaceSymbEntry ob = symb.get(prefix);
+        
+        if ((ob!=null) && uri.equals(ob.uri)) {
+            if (!ob.rendered) {                 
+                ob=(NameSpaceSymbEntry) ob.clone();
+                needsClone();
+                symb.put(prefix,ob);         
+                ob.lastrendered=uri;
+                ob.rendered=true;
+                return ob.n;
+            }           
+            return null;
+        }   
+        
+        NameSpaceSymbEntry ne=new NameSpaceSymbEntry(uri,n,true);
+        ne.lastrendered=uri;
+        needsClone();
+        symb.put(prefix, ne);
+        if (ob != null) {           
+            
+            if ((ob.lastrendered!=null)&& (ob.lastrendered.equals(uri))) {
+                ne.rendered=true;
+                return null;
+            }
+        }       
+        return ne.n;
+    }
+	/** 
+     * Adds & gets(if needed) the attribute node that defines the binding for the prefix. 
+     * Take on account if the rules of rendering in the inclusive c14n.
+     * For inclusive c14n.
+     * @param prefix the prefix to obtain the attribute.
+     * @param outputNode the container element is an output element.
+     * @param uri the Uri of the definition
+     * @param n the attribute that have the definition
+     * @return null if there is no need to render the prefix. Otherwise the node of
+     * definition.     
+     **/
+	public Node addMappingAndRenderXNodeSet(String prefix, String uri,Attr n,boolean outputNode) {						
+		NameSpaceSymbEntry ob = symb.get(prefix);
+		int visibleNameSpaces=nameSpaces;		
+		if ((ob!=null) && uri.equals(ob.uri)) {
+			if (!ob.rendered) {					
+				ob=(NameSpaceSymbEntry)ob.clone();
+                needsClone();
+                symb.put(prefix,ob);				
+				ob.rendered=true;
+				ob.level=visibleNameSpaces;
+				return ob.n;
+			}						
+            ob=(NameSpaceSymbEntry)ob.clone();
+            needsClone();
+            symb.put(prefix,ob);
+			if (outputNode && (((visibleNameSpaces-ob.level)<2) || XMLNS.equals(prefix)) ) {
+				ob.level=visibleNameSpaces;
+				return null; //Already rendered, just return nulll
+			}
+			ob.level=visibleNameSpaces;
+			return ob.n;
+		}	
+		
+		NameSpaceSymbEntry ne=new NameSpaceSymbEntry(uri,n,true);
+		ne.level=nameSpaces;
+		ne.rendered=true;
+        needsClone();
+		symb.put(prefix, ne);
+		if (ob != null) {			
+			ne.lastrendered=ob.lastrendered;
+			
+			if ((ob.lastrendered!=null)&& (ob.lastrendered.equals(uri))) {
+				ne.rendered=true;
+			}
+		}	
+		return ne.n;
+	}
+}
+
+/**
+ * The internal structure of NameSpaceSymbTable.
+ **/
+class NameSpaceSymbEntry implements Cloneable {
+    NameSpaceSymbEntry(String name,Attr n,boolean rendered) {
+        this.uri=name;          
+        this.rendered=rendered;
+        this.n=n;            
+    }
+    /** @inheritDoc */
+    public Object clone() {         
+        try {
+            return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+    /** The level where the definition was rendered(Only for inclusive) */
+    int level=0;
+    /**The URI that the prefix defines */
+    String uri;
+    /**The last output in the URI for this prefix (This for speed reason).*/
+    String lastrendered=null;
+    /**This prefix-URI has been already render or not.*/
+    boolean rendered=false;
+    /**The attribute to include.*/
+    Attr n;        
+};
+
+class SymbMap implements Cloneable{	
+	int free=23;
+	NameSpaceSymbEntry[] entries=new NameSpaceSymbEntry[free];
+	String[] keys=new String[free];
+	
+	void put(String key, NameSpaceSymbEntry value) {		
+        int index = index(key);
+		Object oldKey = keys[index];
+		keys[index] = key;
+		entries[index] = value;
+        if (oldKey==null || !oldKey.equals(key)) {	        	        
+	        if (--free == 0) {
+				free=entries.length;
+	            int newCapacity = free<<2;				
+	            rehash(newCapacity);			
+	        }
+        }
+    }
+	
+    List entrySet() {
+		List a=new ArrayList();
+		for (int i=0;i<entries.length;i++) {
+			if ((entries[i]!=null) && !("".equals(entries[i]))) {
+				a.add(entries[i]);
+			}
+		}
+		return a;		
+	}
+
+
+	protected int index(Object obj) {		
+        Object[] set = keys;
+		int length = set.length;
+		//abs of index
+        int index = (obj.hashCode() & 0x7fffffff) %  length;
+        Object cur = set[index];
+
+        if (cur == null || (cur.equals( obj))) {
+			return index;
+        }
+        do {
+			index=index==length? 0:++index;
+			cur = set[index];
+        } while (cur != null && (!cur.equals(obj)));       
+        return index;
+    }
+	 /**
+     * rehashes the map to the new capacity.
+     *
+     * @param newCapacity an <code>int</code> value
+     */
+    protected void rehash(int newCapacity) {
+        int oldCapacity = keys.length;
+        String oldKeys[] = keys;
+		NameSpaceSymbEntry oldVals[] = entries;
+
+		keys = new String[newCapacity];        
+		entries = new NameSpaceSymbEntry[newCapacity];
+
+        for (int i = oldCapacity; i-- > 0;) {
+            if(oldKeys[i] != null) {
+                String o = oldKeys[i];
+                int index = index(o);
+				keys[index] = o;
+				entries[index] = oldVals[i];
+            }
+        }
+    }
+	 NameSpaceSymbEntry get(String key) {
+	        return  entries[index(key)];
+	    }
+	 protected Object clone()  {
+		// TODO Auto-generated method stub
+		try {
+			SymbMap copy=(SymbMap) super.clone();
+			copy.entries=new NameSpaceSymbEntry[entries.length];
+			System.arraycopy(entries,0,copy.entries,0,entries.length);
+			copy.keys=new String[keys.length];
+			System.arraycopy(keys,0,copy.keys,0,keys.length);
+			
+			return copy;
+		} catch (CloneNotSupportedException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return null;
+	}
+}
diff --git a/src/org/apache/xml/security/c14n/implementations/package.html b/src/org/apache/xml/security/c14n/implementations/package.html
new file mode 100644
index 0000000..f45623d
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/implementations/package.html
@@ -0,0 +1,3 @@
+<HTML> <HEAD> </HEAD> <BODY> <P>
+canonicalization implementations.
+</P></BODY> </HTML>
diff --git a/src/org/apache/xml/security/c14n/package.html b/src/org/apache/xml/security/c14n/package.html
new file mode 100644
index 0000000..2d1ec6e
--- /dev/null
+++ b/src/org/apache/xml/security/c14n/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+Canonicalization related material and algorithms.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/encryption/AgreementMethod.java b/src/org/apache/xml/security/encryption/AgreementMethod.java
new file mode 100644
index 0000000..c800525
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/AgreementMethod.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.util.Iterator;
+import org.apache.xml.security.keys.KeyInfo;
+import org.w3c.dom.Element;
+
+
+/**
+ * A Key Agreement algorithm provides for the derivation of a shared secret key
+ * based on a shared secret computed from certain types of compatible public
+ * keys from both the sender and the recipient. Information from the originator
+ * to determine the secret is indicated by an optional OriginatorKeyInfo
+ * parameter child of an <code>AgreementMethod</code> element while that
+ * associated with the recipient is indicated by an optional RecipientKeyInfo. A
+ * shared key is derived from this shared secret by a method determined by the
+ * Key Agreement algorithm.
+ * <p>
+ * <b>Note:</b> XML Encryption does not provide an on-line key agreement
+ * negotiation protocol. The <code>AgreementMethod</code> element can be used by
+ * the originator to identify the keys and computational procedure that were
+ * used to obtain a shared encryption key. The method used to obtain or select
+ * the keys or algorithm used for the agreement computation is beyond the scope
+ * of this specification.
+ * <p>
+ * The <code>AgreementMethod</code> element appears as the content of a
+ * <code>ds:KeyInfo</code> since, like other <code>ds:KeyInfo</code> children,
+ * it yields a key. This <code>ds:KeyInfo</code> is in turn a child of an
+ * <code>EncryptedData</code> or <code>EncryptedKey</code> element. The
+ * Algorithm attribute and KeySize child of the <code>EncryptionMethod</code>
+ * element under this <code>EncryptedData</code> or <code>EncryptedKey</code>
+ * element are implicit parameters to the key agreement computation. In cases
+ * where this <code>EncryptionMethod</code> algorithm <code>URI</code> is
+ * insufficient to determine the key length, a KeySize MUST have been included.
+ * In addition, the sender may place a KA-Nonce element under
+ * <code>AgreementMethod</code> to assure that different keying material is
+ * generated even for repeated agreements using the same sender and recipient
+ * public keys.
+ * <p>
+ * If the agreed key is being used to wrap a key, then
+ * <code>AgreementMethod</code> would appear inside a <code>ds:KeyInfo</code>
+ * inside an <code>EncryptedKey</code> element.
+ * <p>
+ * The Schema for AgreementMethod is as follows:
+ * <xmp>
+ * <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+ * <complexType name="AgreementMethodType" mixed="true">
+ *     <sequence>
+ *         <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
+ *         <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+ *         <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ *         <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+ *         <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+ *     </sequence>
+ *     <attribute name="Algorithm" type="anyURI" use="required"/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface AgreementMethod {
+    /**
+     * Returns an <code>byte</code> array.
+     * @return
+     */
+    byte[] getKANonce();
+
+    /**
+     * Sets the KANonce.jj
+     * @param kanonce
+     */
+    void setKANonce(byte[] kanonce);
+
+    /**
+     * Returns aditional information regarding the <code>AgreementMethod</code>.
+     * @return
+     */
+    Iterator getAgreementMethodInformation();
+
+    /**
+     * Adds additional <code>AgreementMethod</code> information.
+     *
+     * @param info a <code>Element</code> that represents additional information
+     * specified by
+     *   <xmp>
+     *     <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+     *   </xmp>
+     */
+    void addAgreementMethodInformation(Element info);
+
+    /**
+     * Removes additional <code>AgreementMethod</code> information.
+     *
+     * @param info a <code>Element</code> that represents additional information
+     * specified by
+     *   <xmp>
+     *     <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+     *   </xmp>
+     */
+    void revoveAgreementMethodInformation(Element info);
+
+    /**
+     * Returns information relating to the originator's shared secret.
+     *
+     * @return information relating to the originator's shared secret.
+     */
+    KeyInfo getOriginatorKeyInfo();
+
+    /**
+     * Sets the information relating to the originator's shared secret.
+     *
+     * @param keyInfo information relating to the originator's shared secret.
+     */
+    void setOriginatorKeyInfo(KeyInfo keyInfo);
+
+    /**
+     * Retruns information relating to the recipient's shared secret.
+     *
+     * @return information relating to the recipient's shared secret.
+     */
+    KeyInfo getRecipientKeyInfo();
+
+    /**
+     * Sets the information relating to the recipient's shared secret.
+     *
+     * @param keyInfo information relating to the recipient's shared secret.
+     */
+    void setRecipientKeyInfo(KeyInfo keyInfo);
+
+    /**
+     * Returns the algorithm URI of this <code>CryptographicMethod</code>.
+     *
+     * @return the algorithm URI of this <code>CryptographicMethod</code>
+     */
+    String getAlgorithm();
+}
+
diff --git a/src/org/apache/xml/security/encryption/CipherData.java b/src/org/apache/xml/security/encryption/CipherData.java
new file mode 100644
index 0000000..873deeb
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/CipherData.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+/**
+ * <code>CipherData</code> provides encrypted data. It must either contain the
+ * encrypted octet sequence as base64 encoded text of the
+ * <code>CipherValue</code> element, or provide a reference to an external
+ * location containing the encrypted octet sequence via the
+ * <code>CipherReference</code> element.
+ * <p>
+ * The schema definition is as follows:
+ * <xmp>
+ * <element name='CipherData' type='xenc:CipherDataType'/>
+ * <complexType name='CipherDataType'>
+ *     <choice>
+ *         <element name='CipherValue' type='base64Binary'/>
+ *         <element ref='xenc:CipherReference'/>
+ *     </choice>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface CipherData {
+    /** VALUE_TYPE ASN */
+    public static final int VALUE_TYPE = 0x00000001;
+    /** REFERENCE_TYPE ASN */
+    public static final int REFERENCE_TYPE = 0x00000002;
+
+    /**
+     * Returns the type of encrypted data contained in the
+     * <code>CipherData</code>.
+     *
+     * @return <code>VALUE_TYPE</code> if the encrypted data is contained as
+     *   <code>CipherValue</code> or <code>REFERENCE_TYPE</code> if the
+     *   encrypted data is contained as <code>CipherReference</code>.
+     */
+    int getDataType();
+
+    /**
+     * Returns the cipher value as a base64 encoded <code>byte</code> array.
+     *
+     * @return the <code>CipherData</code>'s value.
+     */
+    CipherValue getCipherValue();
+
+    /**
+     * Sets the <code>CipherData</code>'s value.
+     *
+     * @param value the value of the <code>CipherData</code>.
+     * @throws XMLEncryptionException
+     */
+    void setCipherValue(CipherValue value) throws XMLEncryptionException;
+
+    /**
+     * Returns a reference to an external location containing the encrypted
+     * octet sequence (<code>byte</code> array).
+     *
+     * @return the reference to an external location containing the enctrypted
+     *   octet sequence.
+     */
+    CipherReference getCipherReference();
+
+    /**
+     * Sets the <code>CipherData</code>'s reference.
+     *
+     * @param reference an external location containing the enctrypted octet
+     *   sequence.
+     * @throws XMLEncryptionException
+     */
+    void setCipherReference(CipherReference reference) throws
+        XMLEncryptionException;
+}
+
diff --git a/src/org/apache/xml/security/encryption/CipherReference.java b/src/org/apache/xml/security/encryption/CipherReference.java
new file mode 100644
index 0000000..1859f40
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/CipherReference.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+import org.w3c.dom.Attr;
+
+
+/**
+ * <code>CipherReference</code> identifies a source which, when processed,
+ * yields the encrypted octet sequence.
+ * <p>
+ * The actual value is obtained as follows. The <code>CipherReference URI</code>
+ * contains an identifier that is dereferenced. Should the
+ * <code>CipherReference</code> element contain an OPTIONAL sequence of
+ * Transforms, the data resulting from dereferencing the <code>URI</code> is
+ * transformed as specified so as to yield the intended cipher value. For
+ * example, if the value is base64 encoded within an XML document; the
+ * transforms could specify an XPath expression followed by a base64 decoding so
+ * as to extract the octets.
+ * <p>
+ * The syntax of the <code>URI</code> and Transforms is similar to that of
+ * [XML-DSIG]. However, there is a difference between signature and encryption
+ * processing. In [XML-DSIG] both generation and validation processing start
+ * with the same source data and perform that transform in the same order. In
+ * encryption, the decryptor has only the cipher data and the specified
+ * transforms are enumerated for the decryptor, in the order necessary to obtain
+ * the octets. Consequently, because it has different semantics Transforms is in
+ * the &xenc; namespace.
+ * <p>
+ * The schema definition is as follows:
+ * <xmp>
+ * <element name='CipherReference' type='xenc:CipherReferenceType'/>
+ * <complexType name='CipherReferenceType'>
+ *     <sequence>
+ *         <element name='Transforms' type='xenc:TransformsType' minOccurs='0'/>
+ *     </sequence>
+ *     <attribute name='URI' type='anyURI' use='required'/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface CipherReference {
+    /**
+     * Returns an <code>URI</code> that contains an identifier that should be
+     * dereferenced.
+     * @return
+     */
+    String getURI();
+
+	/**
+	 * Gets the URI as an Attribute node.  Used to meld the CipherREference
+	 * with the XMLSignature ResourceResolvers
+     * @return
+	 */
+	public Attr getURIAsAttr();
+
+    /**
+     * Returns the <code>Transforms</code> that specifies how to transform the
+     * <code>URI</code> to yield the appropiate cipher value.
+     *
+     * @return the transform that specifies how to transform the reference to
+     *   yield the intended cipher value.
+     */
+    Transforms getTransforms();
+
+    /**
+     * Sets the <code>Transforms</code> that specifies how to transform the
+     * <code>URI</code> to yield the appropiate cipher value.
+     *
+     * @param transforms the set of <code>Transforms</code> that specifies how
+     *   to transform the reference to yield the intended cipher value.
+     */
+    void setTransforms(Transforms transforms);
+}
+
diff --git a/src/org/apache/xml/security/encryption/CipherValue.java b/src/org/apache/xml/security/encryption/CipherValue.java
new file mode 100644
index 0000000..0d86be8
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/CipherValue.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+/**
+ * <code>CipherValue</code> is the wrapper for cipher text.
+ *
+ * @author Axl Mattheus
+ */
+public interface CipherValue {
+    /**
+     * Resturns the Base 64 encoded, encrypted octets that is the
+     * <code>CihperValue</code>.
+     *
+     * @return cipher value.
+     */
+	String getValue();
+	// byte[] getValue();
+    
+    /**
+     * Sets the Base 64 encoded, encrypted octets that is the
+     * <code>CihperValue</code>.
+     *
+     * @param value the cipher value.
+     */
+	void setValue(String value);
+	// void setValue(byte[] value);
+}
diff --git a/src/org/apache/xml/security/encryption/EncryptedData.java b/src/org/apache/xml/security/encryption/EncryptedData.java
new file mode 100644
index 0000000..c961ea7
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/EncryptedData.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+/**
+ * The <code>EncryptedData</code> element is the core element in the syntax. Not
+ * only does its <code>CipherData</code> child contain the encrypted data, but
+ * it's also the element that replaces the encrypted element, or serves as the
+ * new document root.
+ * <p>
+ * It's schema definition is as follows:
+ * <p>
+ * <xmp>
+ * <element name='EncryptedData' type='xenc:EncryptedDataType'/>
+ * <complexType name='EncryptedDataType'>
+ *     <complexContent>
+ *         <extension base='xenc:EncryptedType'/>
+ *     </complexContent>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface EncryptedData extends EncryptedType {
+}
+
diff --git a/src/org/apache/xml/security/encryption/EncryptedKey.java b/src/org/apache/xml/security/encryption/EncryptedKey.java
new file mode 100644
index 0000000..1738587
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/EncryptedKey.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+
+/**
+ * The <code>EncryptedKey</code> element is used to transport encryption keys
+ * from the originator to a known recipient(s). It may be used as a stand-alone
+ * XML document, be placed within an application document, or appear inside an
+ * <code>EncryptedData</code> element as a child of a <code>ds:KeyInfo</code>
+ * element. The key value is always encrypted to the recipient(s). When
+ * <code>EncryptedKey</code> is decrypted the resulting octets are made
+ * available to the <code>EncryptionMethod</code> algorithm without any
+ * additional processing.
+ * <p>
+ * Its schema definition is as follows:
+ * <xmp>
+ * <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
+ * <complexType name='EncryptedKeyType'>
+ *     <complexContent>
+ *         <extension base='xenc:EncryptedType'>
+ *             <sequence>
+ *                 <element ref='xenc:ReferenceList' minOccurs='0'/>
+ *                 <element name='CarriedKeyName' type='string' minOccurs='0'/>
+ *             </sequence>
+ *             <attribute name='Recipient' type='string' use='optional'/>
+ *         </extension>
+ *     </complexContent>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface EncryptedKey extends EncryptedType {
+    /**
+     * Returns a hint as to which recipient this encrypted key value is intended
+     * for.
+     *
+     * @return the recipient of the <code>EncryptedKey</code>.
+     */
+    String getRecipient();
+
+    /**
+     * Sets the recipient for this <code>EncryptedKey</code>.
+     *
+     * @param recipient the recipient for this <code>EncryptedKey</code>.
+     */
+    void setRecipient(String recipient);
+
+    /**
+     * Returns pointers to data and keys encrypted using this key. The reference
+     * list may contain multiple references to <code>EncryptedKey</code> and
+     * <code>EncryptedData</code> elements. This is done using
+     * <code>KeyReference</code> and <code>DataReference</code> elements
+     * respectively.
+     *
+     * @return an <code>Iterator</code> over all the <code>ReferenceList</code>s
+     *   contained in this <code>EncryptedKey</code>.
+     */
+    ReferenceList getReferenceList();
+
+    /**
+     * Sets the <code>ReferenceList</code> to the <code>EncryptedKey</code>.
+     *
+     * @param list a list of pointers to data elements encrypted using this key.
+     */
+    void setReferenceList(ReferenceList list);
+
+    /**
+     * Returns a user readable name with the key value. This may then be used to
+     * reference the key using the <code>ds:KeyName</code> element within
+     * <code>ds:KeyInfo</code>. The same <code>CarriedKeyName</code> label,
+     * unlike an ID type, may occur multiple times within a single document. The
+     * value of the key is to be the same in all <code>EncryptedKey</code>
+     * elements identified with the same <code>CarriedKeyName</code> label
+     * within a single XML document.
+     * <br>
+     * <b>Note</b> that because whitespace is significant in the value of
+     * the <code>ds:KeyName</code> element, whitespace is also significant in
+     * the value of the <code>CarriedKeyName</code> element.
+     *
+     * @return over all the carried names contained in
+     *   this <code>EncryptedKey</code>.
+     */
+    String getCarriedName();
+
+    /**
+     * Sets the carried name.
+     *
+     * @param name the carried name.
+     */
+    void setCarriedName(String name);
+}
+
diff --git a/src/org/apache/xml/security/encryption/EncryptedType.java b/src/org/apache/xml/security/encryption/EncryptedType.java
new file mode 100644
index 0000000..9d1d05b
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/EncryptedType.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import org.apache.xml.security.keys.KeyInfo;
+
+
+/**
+ * EncryptedType is the abstract type from which <code>EncryptedData</code> and
+ * <code>EncryptedKey</code> are derived. While these two latter element types
+ * are very similar with respect to their content models, a syntactical
+ * distinction is useful to processing.
+ * <p>
+ * Its schema definition is as follows:
+ * <xmp>
+ * <complexType name='EncryptedType' abstract='true'>
+ *     <sequence>
+ *         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+ *             minOccurs='0'/>
+ *         <element ref='ds:KeyInfo' minOccurs='0'/>
+ *         <element ref='xenc:CipherData'/>
+ *         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+ *     </sequence>
+ *     <attribute name='Id' type='ID' use='optional'/>
+ *     <attribute name='Type' type='anyURI' use='optional'/>
+ *     <attribute name='MimeType' type='string' use='optional'/>
+ *     <attribute name='Encoding' type='anyURI' use='optional'/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface EncryptedType {
+    /**
+     * Returns a <code>String</code> providing for the standard method of
+     * assigning an id to the element within the document context.
+     *
+     * @return the id for the <code>EncryptedType</code>.
+     */
+    String getId();
+
+    /**
+     * Sets the id.
+     *
+     * @param id.
+     */
+    void setId(String id);
+
+    /**
+     * Returns an <code>URI</code> identifying type information about the
+     * plaintext form of the encrypted content. While optional, this
+     * specification takes advantage of it for mandatory processing described in
+     * Processing Rules: Decryption (section 4.2). If the
+     * <code>EncryptedData</code> element contains data of Type 'element' or
+     * element 'content', and replaces that data in an XML document context, it
+     * is strongly recommended the Type attribute be provided. Without this
+     * information, the decryptor will be unable to automatically restore the
+     * XML document to its original cleartext form.
+     *
+     * @return the identifier for the type of information in plaintext form of
+     *   encrypted content.
+     */
+    String getType();
+
+    /**
+     * Sets the type.
+     *
+     * @param type an <code>URI</code> identifying type information about the
+     *   plaintext form of the encrypted content.
+     */
+    void setType(String type);
+
+    /**
+     * Returns a <code>String</code> which describes the media type of the data
+     * which has been encrypted. The value of this attribute has values defined
+     * by [MIME]. For example, if the data that is encrypted is a base64 encoded
+     * PNG, the transfer Encoding may be specified as
+     * 'http://www.w3.org/2000/09/xmldsig#base64' and the MimeType as
+     * 'image/png'.
+     * <br>
+     * This attribute is purely advisory; no validation of the MimeType
+     * information is required and it does not indicate the encryption
+     * application must do any additional processing. Note, this information may
+     * not be necessary if it is already bound to the identifier in the Type
+     * attribute. For example, the Element and Content types defined in this
+     * specification are always UTF-8 encoded text.
+     *
+     * @return the media type of the data which was encrypted.
+     */
+    String getMimeType();
+
+    /**
+     * Sets the mime type.
+     *
+     * @param type a <code>String</code> which describes the media type of the
+     *   data which has been encrypted.
+     */
+    void setMimeType(String type);
+
+    /**
+     * Retusn an <code>URI</code> representing the encoding of the
+     * <code>EncryptedType</code>.
+     *
+     * @return the encoding of this <code>EncryptedType</code>.
+     */
+    String getEncoding();
+
+    /**
+     * Sets the <code>URI</code> representing the encoding of the
+     * <code>EncryptedType</code>.
+     *
+     * @param encoding.
+     */
+    void setEncoding(String encoding);
+
+    /**
+     * Returns an <code>EncryptionMethod</code> that describes the encryption
+     * algorithm applied to the cipher data. If the element is absent, the
+     * encryption algorithm must be known by the recipient or the decryption
+     * will fail.
+     *
+     * @return the method used to encrypt the cipher data.
+     */
+    EncryptionMethod getEncryptionMethod();
+
+    /**
+     * Sets the <code>EncryptionMethod</code> used to encrypt the cipher data.
+     *
+     * @param method the <code>EncryptionMethod</code>.
+     */
+    void setEncryptionMethod(EncryptionMethod method);
+
+    /**
+     * Returns the <code>ds:KeyInfo</code>, that carries information about the
+     * key used to encrypt the data. Subsequent sections of this specification
+     * define new elements that may appear as children of
+     * <code>ds:KeyInfo</code>.
+     *
+     * @return information about the key that encrypted the cipher data.
+     */
+    KeyInfo getKeyInfo();
+
+    /**
+     * Sets the encryption key information.
+     *
+     * @param info the <code>ds:KeyInfo</code>, that carries information about
+     *   the key used to encrypt the data.
+     */
+    void setKeyInfo(KeyInfo info);
+
+    /**
+     * Returns the <code>CipherReference</code> that contains the
+     * <code>CipherValue</code> or <code>CipherReference</code> with the
+     * encrypted data.
+     *
+     * @return the cipher data for the encrypted type.
+     */
+    CipherData getCipherData();
+
+    /**
+     * Returns additional information concerning the generation of the
+     * <code>EncryptedType</code>.
+     *
+     * @return information relating to the generation of the
+     *   <code>EncryptedType</code>.
+     */
+    EncryptionProperties getEncryptionProperties();
+
+    /**
+     * Sets the <code>EncryptionProperties</code> that supplies additional
+     * information about the generation of the <code>EncryptedType</code>.
+     *
+     * @param properties.
+     */
+    void setEncryptionProperties(EncryptionProperties properties);
+}
+
diff --git a/src/org/apache/xml/security/encryption/EncryptionMethod.java b/src/org/apache/xml/security/encryption/EncryptionMethod.java
new file mode 100644
index 0000000..d03084b
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/EncryptionMethod.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.util.Iterator;
+import org.w3c.dom.Element;
+
+
+/**
+ * <code>EncryptionMethod</code> describes the encryption algorithm applied to
+ * the cipher data. If the element is absent, the encryption algorithm must be
+ * known by the recipient or the decryption will fail.
+ * <p>
+ * It is defined as follows:
+ * <xmp>
+ * <complexType name='EncryptionMethodType' mixed='true'>
+ *     <sequence>
+ *         <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
+ *         <element name='OAEPparams' minOccurs='0' type='base64Binary'/>
+ *         <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+ *     </sequence>
+ *     <attribute name='Algorithm' type='anyURI' use='required'/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface EncryptionMethod {
+    /**
+     * Returns the algorithm applied to the cipher data.
+     *
+     * @return the encryption algorithm.
+     */
+    String getAlgorithm();
+
+    /**
+     * Returns the key size of the key of the algorithm applied to the cipher
+     * data.
+     *
+     * @return the key size.
+     */
+    int getKeySize();
+
+    /**
+     * Sets the size of the key of the algorithm applied to the cipher data.
+     *
+     * @param size the key size.
+     */
+    void setKeySize(int size);
+
+    /**
+     * Returns the OAEP parameters of the algorithm applied applied to the
+     * cipher data.
+     *
+     * @return the OAEP parameters.
+     */
+    byte[] getOAEPparams();
+
+    /**
+     * Sets the OAEP parameters.
+     *
+     * @param parameters the OAEP parameters.
+     */
+    void setOAEPparams(byte[] parameters);
+
+    /**
+     * Returns an iterator over all the additional elements contained in the
+     * <code>EncryptionMethod</code>.
+     *
+     * @return an <code>Iterator</code> over all the additional infomation
+     *   about the <code>EncryptionMethod</code>.
+     */
+    Iterator getEncryptionMethodInformation();
+
+    /**
+     * Adds encryption method information.
+     *
+     * @param information additional encryption method information.
+     */
+    void addEncryptionMethodInformation(Element information);
+
+    /**
+     * Removes encryption method information.
+     *
+     * @param information the information to remove from the
+     *   <code>EncryptionMethod</code>.
+     */
+    void removeEncryptionMethodInformation(Element information);
+}
+
diff --git a/src/org/apache/xml/security/encryption/EncryptionProperties.java b/src/org/apache/xml/security/encryption/EncryptionProperties.java
new file mode 100644
index 0000000..840ff44
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/EncryptionProperties.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.util.Iterator;
+
+
+/**
+ * <code>EncryptionProperties</code> can hold additional information concerning
+ * the generation of the <code>EncryptedData</code> or
+ * <code>EncryptedKey</code>. This information is wraped int an
+ * <code>EncryptionProperty</code> element. Examples of additional information
+ * is e.g., a date/time stamp or the serial number of cryptographic hardware
+ * used during encryption).
+ * <p>
+ * It is defined as follows:
+ * <xmp>
+ * <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
+ * <complexType name='EncryptionPropertiesType'>
+ *     <sequence>
+ *         <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
+ *     </sequence>
+ *     <attribute name='Id' type='ID' use='optional'/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface EncryptionProperties {
+    /**
+     * Returns the <code>EncryptionProperties</code>' id.
+     *
+     * @return the id.
+     */
+    String getId();
+
+    /**
+     * Sets the id.
+     *
+     * @param id the id.
+     */
+    void setId(String id);
+
+    /**
+     * Returns an <code>Iterator</code> over all the
+     * <code>EncryptionPropterty</code> elements contained in this
+     * <code>EncryptionProperties</code>.
+     *
+     * @return an <code>Iterator</code> over all the encryption properties.
+     */
+    Iterator getEncryptionProperties();
+
+    /**
+     * Adds an <code>EncryptionProperty</code>.
+     *
+     * @param property.
+     */
+    void addEncryptionProperty(EncryptionProperty property);
+
+    /**
+     * Removes the specified <code>EncryptionProperty</code>.
+     *
+     * @param property.
+     */
+    void removeEncryptionProperty(EncryptionProperty property);
+}
+
diff --git a/src/org/apache/xml/security/encryption/EncryptionProperty.java b/src/org/apache/xml/security/encryption/EncryptionProperty.java
new file mode 100644
index 0000000..c55023e
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/EncryptionProperty.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.util.Iterator;
+import org.w3c.dom.Element;
+
+/**
+ * Additional information items concerning the generation of the
+ * <code>EncryptedData</code> or <code>EncryptedKey</code> can be placed in an
+ * <code>EncryptionProperty</code> element (e.g., date/time stamp or the serial
+ * number of cryptographic hardware used during encryption). The Target
+ * attribute identifies the <code>EncryptedType</code> structure being
+ * described. anyAttribute permits the inclusion of attributes from the XML
+ * namespace to be included (i.e., <code>xml:space</code>,
+ * <code>xml:lang</code>, and <code>xml:base</code>).
+ * <p>
+ * It is defined as follows:
+ * <xmp>
+ * <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
+ * <complexType name='EncryptionPropertyType' mixed='true'>
+ *     <choice maxOccurs='unbounded'>
+ *         <any namespace='##other' processContents='lax'/>
+ *     </choice>
+ *     <attribute name='Target' type='anyURI' use='optional'/>
+ *     <attribute name='Id' type='ID' use='optional'/>
+ *     <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ */
+public interface EncryptionProperty {
+    /**
+     * Returns the <code>EncryptedType</code> being described.
+     *
+     * @return the <code>EncryptedType</code> being described by this
+     *   <code>EncryptionProperty</code>.
+     */
+    String getTarget();
+
+    /**
+     * Sets the target.
+     *
+     * @param target.
+     */
+    void setTarget(String target);
+
+    /**
+     * Returns the id of the <CODE>EncryptionProperty</CODE>.
+     *
+     * @return the id.
+     */
+    String getId();
+
+    /**
+     * Sets the id.
+     *
+     * @param id.
+     */
+    void setId(String id);
+
+    /**
+     * Returns the attribute's value in the <code>xml</code> namespace.
+     *
+     * @param attribute
+     * @return the attribute's value.
+     */
+    String getAttribute(String attribute);
+
+    /**
+     * Set the attribute value.
+     *
+     * @param attribute the attribute's name.
+     * @param value the attribute's value.
+     */
+    void setAttribute(String attribute, String value);
+
+    /**
+     * Returns the properties of the <CODE>EncryptionProperty</CODE>.
+     *
+     * @return an <code>Iterator</code> over all the addiitonal encryption
+     *   information contained in this class.
+     */
+    Iterator getEncryptionInformation();
+
+    /**
+     * Adds encryption information.
+     *
+     * @param information the additional encryption information.
+     */
+    void addEncryptionInformation(Element information);
+
+    /**
+     * Removes encryption information.
+     *
+     * @param information the information to remove.
+     */
+    void removeEncryptionInformation(Element information);
+}
diff --git a/src/org/apache/xml/security/encryption/Reference.java b/src/org/apache/xml/security/encryption/Reference.java
new file mode 100644
index 0000000..bb56da2
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/Reference.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.util.Iterator;
+import org.w3c.dom.Element;
+
+
+/**
+ * A wrapper for a pointer from a key value of an <code>EncryptedKey</code> to
+ * items encrypted by that key value (<code>EncryptedData</code> or
+ * <code>EncryptedKey</code> elements).
+ * <p>
+ * It is defined as follows:
+ * <xmp>
+ * <complexType name='ReferenceType'>
+ *     <sequence>
+ *         <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+ *     </sequence>
+ *     <attribute name='URI' type='anyURI' use='required'/>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ * @see ReferenceList
+ */
+public interface Reference {
+    /**
+     * Returns a <code>URI</code> that points to an <code>Element</code> that
+     * were encrypted using the key defined in the enclosing
+     * <code>EncryptedKey</code> element.
+     *
+     * @return an Uniform Resource Identifier that qualifies an
+     *   <code>EncryptedType</code>.
+     */
+    String getURI();
+
+    /**
+     * Sets a <code>URI</code> that points to an <code>Element</code> that
+     * were encrypted using the key defined in the enclosing
+     * <code>EncryptedKey</code> element.
+     *
+     * @param uri the Uniform Resource Identifier that qualifies an
+     *   <code>EncryptedType</code>.
+     */
+    void setURI(String uri);
+
+    /**
+     * Returns an <code>Iterator</code> over all the child elements contained in
+     * this <code>Reference</code> that will aid the recipient in retrieving the
+     * <code>EncryptedKey</code> and/or <code>EncryptedData</code> elements.
+     * These could include information such as XPath transforms, decompression
+     * transforms, or information on how to retrieve the elements from a
+     * document storage facility.
+     *
+     * @return child elements.
+     */
+    Iterator getElementRetrievalInformation();
+
+    /**
+     * Adds retrieval information.
+     *
+     * @param info.
+     */
+    void addElementRetrievalInformation(Element info);
+
+    /**
+     * Removes the specified retrieval information.
+     *
+     * @param info.
+     */
+    void removeElementRetrievalInformation(Element info);
+}
diff --git a/src/org/apache/xml/security/encryption/ReferenceList.java b/src/org/apache/xml/security/encryption/ReferenceList.java
new file mode 100644
index 0000000..520fec6
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/ReferenceList.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.util.Iterator;
+
+
+/**
+ * <code>ReferenceList</code> is an element that contains pointers from a key
+ * value of an <code>EncryptedKey</code> to items encrypted by that key value
+ * (<code>EncryptedData</code> or <code>EncryptedKey</code> elements).
+ * <p>
+ * It is defined as follows:
+ * <xmp>
+ * <element name='ReferenceList'>
+ *     <complexType>
+ *         <choice minOccurs='1' maxOccurs='unbounded'>
+ *             <element name='DataReference' type='xenc:ReferenceType'/>
+ *             <element name='KeyReference' type='xenc:ReferenceType'/>
+ *         </choice>
+ *     </complexType>
+ * </element>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ * @see Reference
+ */
+public interface ReferenceList {
+	/** DATA TAG */
+    public static final int DATA_REFERENCE = 0x00000001;
+    /** KEY TAG */
+    public static final int KEY_REFERENCE  = 0x00000002;
+
+    /**
+     * Adds a reference to this reference list.
+     *
+     * @param reference the reference to add.
+     * @throws IllegalAccessException if the <code>Reference</code> is not an
+     *   instance of <code>DataReference</code> or <code>KeyReference</code>.
+     */
+    public void add(Reference reference);
+
+    /**
+     * Removes a reference from the <code>ReferenceList</code>.
+     *
+     * @param reference the reference to remove.
+     */
+    public void remove(Reference reference);
+
+    /**
+     * Returns the size of the <code>ReferenceList</code>.
+     *
+     * @return the size of the <code>ReferenceList</code>.
+     */
+    public int size();
+
+    /**
+     * Indicates if the <code>ReferenceList</code> is empty.
+     *
+     * @return <code><b>true</b></code> if the <code>ReferenceList</code> is
+     *     empty, else <code><b>false</b></code>.
+     */
+    public boolean isEmpty();
+
+    /**
+     * Returns an <code>Iterator</code> over all the <code>Reference</code>s
+     * contatined in this <code>ReferenceList</code>.
+     *
+     * @return Iterator.
+     */
+    public Iterator getReferences();
+
+    /**
+     * <code>DataReference</code> factory method. Returns a
+     * <code>DataReference</code>.
+     * @param uri
+     * @return
+     */
+    public Reference newDataReference(String uri);
+
+    /**
+     * <code>KeyReference</code> factory method. Returns a
+     * <code>KeyReference</code>.
+     * @param uri
+     * @return
+     */
+    public Reference newKeyReference(String uri);
+}
diff --git a/src/org/apache/xml/security/encryption/Transforms.java b/src/org/apache/xml/security/encryption/Transforms.java
new file mode 100644
index 0000000..1bc8573
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/Transforms.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+
+
+/**
+ * A container for <code>ds:Transform</code>s.
+ * <p>
+ * It is defined as follows:
+ * <xmp>
+ * <complexType name='TransformsType'>
+ *     <sequence>
+ *         <element ref='ds:Transform' maxOccurs='unbounded'/>
+ *     </sequence>
+ * </complexType>
+ * </xmp>
+ *
+ * @author Axl Mattheus
+ * @see org.apache.xml.security.encryption.CipherReference
+ */
+public interface Transforms {
+    /**
+     * Returns an <code>Iterator</code> over all the transforms contained in
+     * this transform list.
+     *
+     * @return all transforms.
+     */
+    /* Iterator getTransforms(); */
+
+    /**
+     * Adds a <code>ds:Transform</code> to the list of transforms.
+     *
+     * @param transform.
+     */
+    /* void addTransform(Transform transform); */
+
+    /**
+     * Removes the specified transform.
+     *
+     * @param transform.
+     */
+	/*    void removeTransform(Transform transform); */
+
+	/**
+	 * Temporary method to turn the XMLEncryption Transforms class
+	 * into a DS class.  The main logic is currently implemented in the
+	 * DS class, so we need to get to get the base class.
+	 * <p>
+	 * <b>Note</b> This will be removed in future versions
+     * @return
+	 */
+
+	org.apache.xml.security.transforms.Transforms getDSTransforms();
+
+}
diff --git a/src/org/apache/xml/security/encryption/XMLCipher.java b/src/org/apache/xml/security/encryption/XMLCipher.java
new file mode 100644
index 0000000..d72dbc8
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/XMLCipher.java
@@ -0,0 +1,3875 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.IvParameterSpec;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.implementations.EncryptedKeyResolver;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.transforms.InvalidTransformException;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.ElementProxy;
+import org.apache.xml.security.utils.EncryptionConstants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.utils.URI;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+
+/**
+ * <code>XMLCipher</code> encrypts and decrypts the contents of
+ * <code>Document</code>s, <code>Element</code>s and <code>Element</code>
+ * contents. It was designed to resemble <code>javax.crypto.Cipher</code> in
+ * order to facilitate understanding of its functioning.
+ *
+ * @author Axl Mattheus (Sun Microsystems)
+ * @author Christian Geuer-Pollmann
+ */
+public class XMLCipher {
+
+    private static org.apache.commons.logging.Log logger = 
+        org.apache.commons.logging.LogFactory.getLog(XMLCipher.class.getName());
+
+	//J-
+	/** Triple DES EDE (192 bit key) in CBC mode */
+    public static final String TRIPLEDES =                   
+        EncryptionConstants.ALGO_ID_BLOCKCIPHER_TRIPLEDES;
+    /** AES 128 Cipher */
+    public static final String AES_128 =                     
+        EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128;
+    /** AES 256 Cipher */
+    public static final String AES_256 =                     
+        EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256;
+    /** AES 192 Cipher */
+    public static final String AES_192 =                     
+        EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES192;
+    /** RSA 1.5 Cipher */
+    public static final String RSA_v1dot5 =                  
+        EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15;
+    /** RSA OAEP Cipher */
+    public static final String RSA_OAEP =                    
+        EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP;
+    /** DIFFIE_HELLMAN Cipher */
+    public static final String DIFFIE_HELLMAN =              
+        EncryptionConstants.ALGO_ID_KEYAGREEMENT_DH;
+    /** Triple DES EDE (192 bit key) in CBC mode KEYWRAP*/
+    public static final String TRIPLEDES_KeyWrap =           
+        EncryptionConstants.ALGO_ID_KEYWRAP_TRIPLEDES;
+    /** AES 128 Cipher KeyWrap */
+    public static final String AES_128_KeyWrap =             
+        EncryptionConstants.ALGO_ID_KEYWRAP_AES128;
+    /** AES 256 Cipher KeyWrap */
+    public static final String AES_256_KeyWrap =             
+        EncryptionConstants.ALGO_ID_KEYWRAP_AES256;
+    /** AES 192 Cipher KeyWrap */
+    public static final String AES_192_KeyWrap =             
+        EncryptionConstants.ALGO_ID_KEYWRAP_AES192;
+    /** SHA1 Cipher */
+    public static final String SHA1 =                        
+        Constants.ALGO_ID_DIGEST_SHA1;
+    /** SHA256 Cipher */
+    public static final String SHA256 =                      
+        MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256;
+    /** SHA512 Cipher */
+    public static final String SHA512 =                      
+        MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA512;
+    /** RIPEMD Cipher */
+    public static final String RIPEMD_160 =                  
+        MessageDigestAlgorithm.ALGO_ID_DIGEST_RIPEMD160;
+    /** XML Signature NS */
+    public static final String XML_DSIG =                    
+        Constants.SignatureSpecNS;
+    /** N14C_XML */
+    public static final String N14C_XML =                    
+        Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+    /** N14C_XML with comments*/
+    public static final String N14C_XML_WITH_COMMENTS =      
+        Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+    /** N14C_XML excluisve */
+    public static final String EXCL_XML_N14C =               
+        Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
+    /** N14C_XML exclusive with commetns*/
+    public static final String EXCL_XML_N14C_WITH_COMMENTS = 
+        Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS;
+    /** Base64 encoding */
+    public static final String BASE64_ENCODING =             
+        org.apache.xml.security.transforms.Transforms.TRANSFORM_BASE64_DECODE;
+	//J+
+    
+    /** ENCRYPT Mode */
+    public static final int ENCRYPT_MODE = Cipher.ENCRYPT_MODE;
+    /** DECRYPT Mode */
+    public static final int DECRYPT_MODE = Cipher.DECRYPT_MODE;
+    /** UNWRAP Mode */
+    public static final int UNWRAP_MODE  = Cipher.UNWRAP_MODE;
+    /** WRAP Mode */
+    public static final int WRAP_MODE    = Cipher.WRAP_MODE;
+	
+    private static final String ENC_ALGORITHMS = TRIPLEDES + "\n" +
+        AES_128 + "\n" + AES_256 + "\n" + AES_192 + "\n" + RSA_v1dot5 + "\n" +
+        RSA_OAEP + "\n" + TRIPLEDES_KeyWrap + "\n" + AES_128_KeyWrap + "\n" +
+        AES_256_KeyWrap + "\n" + AES_192_KeyWrap+ "\n";
+	
+	/** Cipher created during initialisation that is used for encryption */
+    private Cipher _contextCipher;
+	/** Mode that the XMLCipher object is operating in */
+    private int _cipherMode = Integer.MIN_VALUE;
+	/** URI of algorithm that is being used for cryptographic operation */
+    private String _algorithm = null;
+	/** Cryptographic provider requested by caller */
+	private String _requestedJCEProvider = null;
+	/** Holds c14n to serialize, if initialized then _always_ use this c14n to serialize */
+	private Canonicalizer _canon;
+	/** Used for creation of DOM nodes in WRAP and ENCRYPT modes */
+    private Document _contextDocument;
+	/** Instance of factory used to create XML Encryption objects */
+    private Factory _factory;
+	/** Internal serializer class for going to/from UTF-8 */
+    private Serializer _serializer;
+
+	/** Local copy of user's key */
+	private Key _key;
+	/** Local copy of the kek (used to decrypt EncryptedKeys during a
+     *  DECRYPT_MODE operation */
+	private Key _kek;
+
+	// The EncryptedKey being built (part of a WRAP operation) or read
+	// (part of an UNWRAP operation)
+
+	private EncryptedKey _ek;
+
+	// The EncryptedData being built (part of a WRAP operation) or read
+	// (part of an UNWRAP operation)
+
+	private EncryptedData _ed;
+
+    /**
+     * Creates a new <code>XMLCipher</code>.
+     *
+     * @since 1.0.
+     */
+    private XMLCipher() {
+        logger.debug("Constructing XMLCipher...");
+
+        _factory = new Factory();
+        _serializer = new Serializer();
+
+    }
+
+    /**
+     * Checks to ensure that the supplied algorithm is valid.
+     *
+     * @param algorithm the algorithm to check.
+     * @return true if the algorithm is valid, otherwise false.
+     * @since 1.0.
+     */
+    private static boolean isValidEncryptionAlgorithm(String algorithm) {
+        boolean result = (
+            algorithm.equals(TRIPLEDES) ||
+            algorithm.equals(AES_128) ||
+            algorithm.equals(AES_256) ||
+            algorithm.equals(AES_192) ||
+            algorithm.equals(RSA_v1dot5) ||
+            algorithm.equals(RSA_OAEP) ||
+            algorithm.equals(TRIPLEDES_KeyWrap) ||
+            algorithm.equals(AES_128_KeyWrap) ||
+            algorithm.equals(AES_256_KeyWrap) ||
+            algorithm.equals(AES_192_KeyWrap)
+        );
+
+        return (result);
+    }
+
+    /**
+     * Returns an <code>XMLCipher</code> that implements the specified
+     * transformation and operates on the specified context document.
+     * <p>
+     * If the default provider package supplies an implementation of the
+     * requested transformation, an instance of Cipher containing that
+     * implementation is returned. If the transformation is not available in
+     * the default provider package, other provider packages are searched.
+     * <p>
+     * <b>NOTE<sub>1</sub>:</b> The transformation name does not follow the same
+     * pattern as that oulined in the Java Cryptography Extension Reference
+     * Guide but rather that specified by the XML Encryption Syntax and
+     * Processing document. The rational behind this is to make it easier for a
+     * novice at writing Java Encryption software to use the library.
+     * <p>
+     * <b>NOTE<sub>2</sub>:</b> <code>getInstance()</code> does not follow the
+     * same pattern regarding exceptional conditions as that used in
+     * <code>javax.crypto.Cipher</code>. Instead, it only throws an
+     * <code>XMLEncryptionException</code> which wraps an underlying exception.
+     * The stack trace from the exception should be self explanitory.
+     *
+     * @param transformation the name of the transformation, e.g.,
+     *   <code>XMLCipher.TRIPLEDES</code> which is shorthand for
+     *   &quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;
+     * @throws XMLEncryptionException
+     * @return the XMLCipher
+     * @see javax.crypto.Cipher#getInstance(java.lang.String)
+     */
+    public static XMLCipher getInstance(String transformation) throws
+            XMLEncryptionException {
+        // sanity checks
+        logger.debug("Getting XMLCipher...");
+        if (null == transformation)
+            logger.error("Transformation unexpectedly null...");
+        if(!isValidEncryptionAlgorithm(transformation))
+            logger.warn("Algorithm non-standard, expected one of " + ENC_ALGORITHMS);
+
+		XMLCipher instance = new XMLCipher();
+
+        instance._algorithm = transformation;
+		instance._key = null;
+		instance._kek = null;
+
+
+		/* Create a canonicaliser - used when serialising DOM to octets
+		 * prior to encryption (and for the reverse) */
+
+		try {
+			instance._canon = Canonicalizer.getInstance
+				(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+            
+		} catch (InvalidCanonicalizerException ice) {
+			throw new XMLEncryptionException("empty", ice);
+		}
+
+		String jceAlgorithm = JCEMapper.translateURItoJCEID(transformation);
+
+		try {
+            instance._contextCipher = Cipher.getInstance(jceAlgorithm);
+            logger.debug("cihper.algoritm = " +
+                instance._contextCipher.getAlgorithm());
+        } catch (NoSuchAlgorithmException nsae) {
+            throw new XMLEncryptionException("empty", nsae);
+        } catch (NoSuchPaddingException nspe) {
+            throw new XMLEncryptionException("empty", nspe);
+        }
+
+        return (instance);
+    }
+
+	/**
+	 * Returns an <code>XMLCipher</code> that implements the specified
+	 * transformation, operates on the specified context document and serializes
+	 * the document with the specified canonicalization algorithm before it
+	 * encrypts the document.
+	 * <p>
+	 * 
+	 * @param transformation	the name of the transformation, e.g.,
+	 *   						<code>XMLCipher.TRIPLEDES</code> which is 
+	 * 							shorthand for
+	 *   				&quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;
+	 * @param canon				the name of the c14n algorithm, if
+	 * 							<code>null</code> use standard serializer 
+	 * @return
+	 * @throws XMLEncryptionException
+	 */
+
+	public static XMLCipher getInstance(String transformation, String canon)
+		throws XMLEncryptionException {
+		XMLCipher instance = XMLCipher.getInstance(transformation);
+
+		if (canon != null) {
+			try {
+				instance._canon = Canonicalizer.getInstance(canon);
+			} catch (InvalidCanonicalizerException ice) {
+				throw new XMLEncryptionException("empty", ice);
+			}
+		}
+
+		return instance;
+	}
+
+
+    /**
+     * Returns an <code>XMLCipher</code> that implements the specified
+     * transformation and operates on the specified context document.
+     *
+     * @param transformation the name of the transformation, e.g.,
+     *   <code>XMLCipher.TRIPLEDES</code> which is shorthand for
+     *   &quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;
+     * @param provider the JCE provider that supplies the transformation
+     * @return the XMLCipher
+     * @throws XMLEncryptionException
+     */
+
+    public static XMLCipher getProviderInstance(String transformation, String provider)
+            throws XMLEncryptionException {
+        // sanity checks
+        logger.debug("Getting XMLCipher...");
+        if (null == transformation)
+            logger.error("Transformation unexpectedly null...");
+        if(null == provider)
+            logger.error("Provider unexpectedly null..");
+        if("" == provider)
+            logger.error("Provider's value unexpectedly not specified...");
+        if(!isValidEncryptionAlgorithm(transformation))
+            logger.warn("Algorithm non-standard, expected one of " + ENC_ALGORITHMS);
+
+		XMLCipher instance = new XMLCipher();
+
+        instance._algorithm = transformation;
+		instance._requestedJCEProvider = provider;
+		instance._key = null;
+		instance._kek = null;
+
+		/* Create a canonicaliser - used when serialising DOM to octets
+		 * prior to encryption (and for the reverse) */
+
+		try {
+			instance._canon = Canonicalizer.getInstance
+				(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+		} catch (InvalidCanonicalizerException ice) {
+			throw new XMLEncryptionException("empty", ice);
+		}
+
+        try {
+			String jceAlgorithm =
+				JCEMapper.translateURItoJCEID(transformation);
+
+            instance._contextCipher = Cipher.getInstance(jceAlgorithm, provider);
+
+            logger.debug("cipher._algorithm = " +
+                instance._contextCipher.getAlgorithm());
+            logger.debug("provider.name = " + provider);
+        } catch (NoSuchAlgorithmException nsae) {
+            throw new XMLEncryptionException("empty", nsae);
+        } catch (NoSuchProviderException nspre) {
+            throw new XMLEncryptionException("empty", nspre);
+        } catch (NoSuchPaddingException nspe) {
+            throw new XMLEncryptionException("empty", nspe);
+        }
+
+        return (instance);
+    }
+	
+	/**
+	 * Returns an <code>XMLCipher</code> that implements the specified
+     * transformation, operates on the specified context document and serializes
+     * the document with the specified canonicalization algorithm before it
+     * encrypts the document.
+     * <p>
+	 * 
+	 * @param transformation	the name of the transformation, e.g.,
+     *   						<code>XMLCipher.TRIPLEDES</code> which is 
+     * 							shorthand for
+     *   				&quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;
+	 * @param provider  		the JCE provider that supplies the transformation
+	 * @param canon				the name of the c14n algorithm, if
+	 * 							<code>null</code> use standard serializer 
+	 * @return
+	 * @throws XMLEncryptionException
+	 */
+	public static XMLCipher getProviderInstance(
+		String transformation,
+		String provider,
+		String canon)
+		throws XMLEncryptionException {
+
+		XMLCipher instance = XMLCipher.getProviderInstance(transformation, provider);
+		if (canon != null) {
+			try {
+				instance._canon = Canonicalizer.getInstance(canon);
+			} catch (InvalidCanonicalizerException ice) {
+				throw new XMLEncryptionException("empty", ice);
+			}
+		}
+		return instance;
+	}
+
+    /**
+     * Returns an <code>XMLCipher</code> that implements no specific
+	 * transformation, and can therefore only be used for decrypt or
+	 * unwrap operations where the encryption method is defined in the 
+	 * <code>EncryptionMethod</code> element.
+	 *
+     * @return The XMLCipher
+     * @throws XMLEncryptionException
+     */
+
+    public static XMLCipher getInstance()
+            throws XMLEncryptionException {
+        // sanity checks
+        logger.debug("Getting XMLCipher for no transformation...");
+
+		XMLCipher instance = new XMLCipher();
+
+        instance._algorithm = null;
+		instance._requestedJCEProvider = null;
+		instance._key = null;
+		instance._kek = null;
+		instance._contextCipher = null;
+
+		/* Create a canonicaliser - used when serialising DOM to octets
+		 * prior to encryption (and for the reverse) */
+
+		try {
+			instance._canon = Canonicalizer.getInstance
+				(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+		} catch (InvalidCanonicalizerException ice) {
+			throw new XMLEncryptionException("empty", ice);
+		}
+
+        return (instance);
+    }
+
+    /**
+     * Returns an <code>XMLCipher</code> that implements no specific
+	 * transformation, and can therefore only be used for decrypt or
+	 * unwrap operations where the encryption method is defined in the 
+	 * <code>EncryptionMethod</code> element.
+	 *
+	 * Allows the caller to specify a provider that will be used for
+	 * cryptographic operations.
+     *
+     * @param provider the JCE provider that supplies the cryptographic
+	 * needs.
+     * @return the XMLCipher
+     * @throws XMLEncryptionException
+     */
+
+    public static XMLCipher getProviderInstance(String provider)
+            throws XMLEncryptionException {
+        // sanity checks
+
+        logger.debug("Getting XMLCipher, provider but no transformation");
+        if(null == provider)
+            logger.error("Provider unexpectedly null..");
+        if("" == provider)
+            logger.error("Provider's value unexpectedly not specified...");
+
+		XMLCipher instance = new XMLCipher();
+
+        instance._algorithm = null;
+		instance._requestedJCEProvider = provider;
+		instance._key = null;
+		instance._kek = null;
+		instance._contextCipher = null;
+
+		try {
+			instance._canon = Canonicalizer.getInstance
+				(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+		} catch (InvalidCanonicalizerException ice) {
+			throw new XMLEncryptionException("empty", ice);
+		}
+
+        return (instance);
+    }
+
+    /**
+     * Initializes this cipher with a key.
+     * <p>
+     * The cipher is initialized for one of the following four operations:
+     * encryption, decryption, key wrapping or key unwrapping, depending on the
+     * value of opmode.
+	 *
+	 * For WRAP and ENCRYPT modes, this also initialises the internal 
+	 * EncryptedKey or EncryptedData (with a CipherValue)
+	 * structure that will be used during the ensuing operations.  This
+	 * can be obtained (in order to modify KeyInfo elements etc. prior to
+	 * finalising the encryption) by calling 
+	 * {@link #getEncryptedData} or {@link #getEncryptedKey}.
+     *
+     * @param opmode the operation mode of this cipher (this is one of the
+     *   following: ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE or UNWRAP_MODE)
+     * @param key
+     * @see javax.crypto.Cipher#init(int, java.security.Key)
+     * @throws XMLEncryptionException
+     */
+    public void init(int opmode, Key key) throws XMLEncryptionException {
+        // sanity checks
+        logger.debug("Initializing XMLCipher...");
+
+		_ek = null;
+		_ed = null;
+
+		switch (opmode) {
+
+		case ENCRYPT_MODE :
+			logger.debug("opmode = ENCRYPT_MODE");
+			_ed = createEncryptedData(CipherData.VALUE_TYPE, "NO VALUE YET");
+			break;
+		case DECRYPT_MODE :
+			logger.debug("opmode = DECRYPT_MODE");
+			break;
+		case WRAP_MODE :
+			logger.debug("opmode = WRAP_MODE");
+			_ek = createEncryptedKey(CipherData.VALUE_TYPE, "NO VALUE YET");
+			break;
+		case UNWRAP_MODE :
+			logger.debug("opmode = UNWRAP_MODE");
+			break;
+		default :
+			logger.error("Mode unexpectedly invalid");
+			throw new XMLEncryptionException("Invalid mode in init");
+		}
+
+        _cipherMode = opmode;
+		_key = key;
+
+    }
+
+	/**
+	 * Get the EncryptedData being build
+	 *
+	 * Returns the EncryptedData being built during an ENCRYPT operation.
+	 * This can then be used by applications to add KeyInfo elements and
+	 * set other parameters.
+	 *
+	 * @return The EncryptedData being built
+	 */
+
+	public EncryptedData getEncryptedData() {
+
+		// Sanity checks
+		logger.debug("Returning EncryptedData");
+		return _ed;
+
+	}
+
+	/**
+	 * Get the EncryptedData being build
+	 *
+	 * Returns the EncryptedData being built during an ENCRYPT operation.
+	 * This can then be used by applications to add KeyInfo elements and
+	 * set other parameters.
+	 *
+	 * @return The EncryptedData being built
+	 */
+
+	public EncryptedKey getEncryptedKey() {
+
+		// Sanity checks
+		logger.debug("Returning EncryptedKey");
+		return _ek;
+	}
+
+	/**
+	 * Set a Key Encryption Key.
+	 * <p>
+	 * The Key Encryption Key (KEK) is used for encrypting/decrypting
+	 * EncryptedKey elements.  By setting this separately, the XMLCipher
+	 * class can know whether a key applies to the data part or wrapped key
+	 * part of an encrypted object.
+	 *
+	 * @param kek The key to use for de/encrypting key data
+	 */
+
+	public void setKEK(Key kek) {
+
+		_kek = kek;
+
+	}
+
+	/**
+	 * Martial an EncryptedData
+	 *
+	 * Takes an EncryptedData object and returns a DOM Element that
+	 * represents the appropriate <code>EncryptedData</code>
+	 * <p>
+	 * <b>Note:</b> This should only be used in cases where the context
+	 * document has been passed in via a call to doFinal.
+	 *
+	 * @param encryptedData EncryptedData object to martial
+	 * @return the DOM <code>Element</code> representing the passed in
+	 * object 
+     */
+
+	public Element martial(EncryptedData encryptedData) {
+
+		return (_factory.toElement (encryptedData));
+
+	}
+
+	/**
+	 * Martial an EncryptedKey
+	 *
+	 * Takes an EncryptedKey object and returns a DOM Element that
+	 * represents the appropriate <code>EncryptedKey</code>
+	 *
+	 * <p>
+	 * <b>Note:</b> This should only be used in cases where the context
+	 * document has been passed in via a call to doFinal.
+	 *
+	 * @param encryptedKey EncryptedKey object to martial
+	 * @return the DOM <code>Element</code> representing the passed in
+	 * object */
+
+	public Element martial(EncryptedKey encryptedKey) {
+
+		return (_factory.toElement (encryptedKey));
+
+	}
+
+	/**
+	 * Martial an EncryptedData
+	 *
+	 * Takes an EncryptedData object and returns a DOM Element that
+	 * represents the appropriate <code>EncryptedData</code>
+	 *
+	 * @param context The document that will own the returned nodes
+	 * @param encryptedData EncryptedData object to martial
+	 * @return the DOM <code>Element</code> representing the passed in
+	 * object */
+
+	public Element martial(Document context, EncryptedData encryptedData) {
+
+		_contextDocument = context;
+		return (_factory.toElement (encryptedData));
+
+	}
+
+	/**
+	 * Martial an EncryptedKey
+	 *
+	 * Takes an EncryptedKey object and returns a DOM Element that
+	 * represents the appropriate <code>EncryptedKey</code>
+	 *
+	 * @param context The document that will own the created nodes
+	 * @param encryptedKey EncryptedKey object to martial
+	 * @return the DOM <code>Element</code> representing the passed in
+	 * object */
+
+	public Element martial(Document context, EncryptedKey encryptedKey) {
+
+		_contextDocument = context;
+		return (_factory.toElement (encryptedKey));
+
+	}
+
+    /**
+     * Encrypts an <code>Element</code> and replaces it with its encrypted
+     * counterpart in the context <code>Document</code>, that is, the
+     * <code>Document</code> specified when one calls
+     * {@link #getInstance(String) getInstance}.
+     *
+     * @param element the <code>Element</code> to encrypt.
+     * @return the context <code>Document</code> with the encrypted
+     *   <code>Element</code> having replaced the source <code>Element</code>.
+     *  @throws Exception
+     */
+
+    private Document encryptElement(Element element) throws Exception{
+        logger.debug("Encrypting element...");
+        if(null == element) 
+            logger.error("Element unexpectedly null...");
+        if(_cipherMode != ENCRYPT_MODE)
+            logger.debug("XMLCipher unexpectedly not in ENCRYPT_MODE...");
+
+		if (_algorithm == null) {
+	    	throw new XMLEncryptionException("XMLCipher instance without transformation specified");
+		}
+		encryptData(_contextDocument, element, false);
+
+        Element encryptedElement = _factory.toElement(_ed);
+
+        Node sourceParent = element.getParentNode();
+        sourceParent.replaceChild(encryptedElement, element);
+
+        return (_contextDocument);
+    }
+
+    /**
+     * Encrypts a <code>NodeList</code> (the contents of an
+     * <code>Element</code>) and replaces its parent <code>Element</code>'s
+     * content with this the resulting <code>EncryptedType</code> within the
+     * context <code>Document</code>, that is, the <code>Document</code>
+     * specified when one calls
+     * {@link #getInstance(String) getInstance}.
+     *
+     * @param element the <code>NodeList</code> to encrypt.
+     * @return the context <code>Document</code> with the encrypted
+     *   <code>NodeList</code> having replaced the content of the source
+     *   <code>Element</code>.
+     * @throws Exception
+     */
+    private Document encryptElementContent(Element element) throws
+            /* XMLEncryption */Exception {
+        logger.debug("Encrypting element content...");
+        if(null == element) 
+            logger.error("Element unexpectedly null...");
+        if(_cipherMode != ENCRYPT_MODE)
+            logger.debug("XMLCipher unexpectedly not in ENCRYPT_MODE...");
+
+		if (_algorithm == null) {
+	    	throw new XMLEncryptionException("XMLCipher instance without transformation specified");
+		}
+		encryptData(_contextDocument, element, true);	
+
+        Element encryptedElement = _factory.toElement(_ed);
+
+        removeContent(element);
+        element.appendChild(encryptedElement);
+
+        return (_contextDocument);
+    }
+
+    /**
+     * Process a DOM <code>Document</code> node. The processing depends on the
+     * initialization parameters of {@link #init(int, Key) init()}.
+     *
+     * @param context the context <code>Document</code>.
+     * @param source the <code>Document</code> to be encrypted or decrypted.
+     * @return the processed <code>Document</code>.
+     * @throws Exception to indicate any exceptional conditions.
+     */
+    public Document doFinal(Document context, Document source) throws
+            /* XMLEncryption */Exception {
+        logger.debug("Processing source document...");
+        if(null == context)
+            logger.error("Context document unexpectedly null...");
+        if(null == source)
+            logger.error("Source document unexpectedly null...");
+
+        _contextDocument = context;
+
+        Document result = null;
+
+        switch (_cipherMode) {
+        case DECRYPT_MODE:
+            result = decryptElement(source.getDocumentElement());
+            break;
+        case ENCRYPT_MODE:
+            result = encryptElement(source.getDocumentElement());
+            break;
+        case UNWRAP_MODE:
+            break;
+        case WRAP_MODE:
+            break;
+        default:
+            throw new XMLEncryptionException(
+                "empty", new IllegalStateException());
+        }
+
+        return (result);
+    }
+
+    /**
+     * Process a DOM <code>Element</code> node. The processing depends on the
+     * initialization parameters of {@link #init(int, Key) init()}.
+     *
+     * @param context the context <code>Document</code>.
+     * @param element the <code>Element</code> to be encrypted.
+     * @return the processed <code>Document</code>.
+     * @throws Exception to indicate any exceptional conditions.
+     */
+    public Document doFinal(Document context, Element element) throws
+            /* XMLEncryption */Exception {
+        logger.debug("Processing source element...");
+        if(null == context)
+            logger.error("Context document unexpectedly null...");
+        if(null == element)
+            logger.error("Source element unexpectedly null...");
+
+        _contextDocument = context;
+
+        Document result = null;
+
+        switch (_cipherMode) {
+        case DECRYPT_MODE:
+            result = decryptElement(element);
+            break;
+        case ENCRYPT_MODE:
+            result = encryptElement(element);
+            break;
+        case UNWRAP_MODE:
+            break;
+        case WRAP_MODE:
+            break;
+        default:
+            throw new XMLEncryptionException(
+                "empty", new IllegalStateException());
+        }
+
+        return (result);
+    }
+
+    /**
+     * Process the contents of a DOM <code>Element</code> node. The processing
+     * depends on the initialization parameters of
+     * {@link #init(int, Key) init()}.
+     *
+     * @param context the context <code>Document</code>.
+     * @param element the <code>Element</code> which contents is to be
+     *   encrypted.
+     * @param content
+     * @return the processed <code>Document</code>.
+     * @throws Exception to indicate any exceptional conditions.
+     */
+    public Document doFinal(Document context, Element element, boolean content)
+            throws /* XMLEncryption*/ Exception {
+        logger.debug("Processing source element...");
+        if(null == context)
+            logger.error("Context document unexpectedly null...");
+        if(null == element)
+            logger.error("Source element unexpectedly null...");
+
+        _contextDocument = context;
+
+        Document result = null;
+
+        switch (_cipherMode) {
+        case DECRYPT_MODE:
+            if (content) {
+                result = decryptElementContent(element);
+            } else {
+                result = decryptElement(element);
+            }
+            break;
+        case ENCRYPT_MODE:
+            if (content) {
+                result = encryptElementContent(element);
+            } else {
+                result = encryptElement(element);
+            }
+            break;
+        case UNWRAP_MODE:
+            break;
+        case WRAP_MODE:
+            break;
+        default:
+            throw new XMLEncryptionException(
+                "empty", new IllegalStateException());
+        }
+
+        return (result);
+    }
+
+    /**
+     * Returns an <code>EncryptedData</code> interface. Use this operation if
+     * you want to have full control over the contents of the
+     * <code>EncryptedData</code> structure.
+     *
+     * this does not change the source document in any way.
+     *
+     * @param context the context <code>Document</code>.
+     * @param element the <code>Element</code> that will be encrypted.
+     * @return the <code>EncryptedData</code>
+     * @throws Exception
+     */
+    public EncryptedData encryptData(Document context, Element element) throws 
+            /* XMLEncryption */Exception {
+	return encryptData(context, element, false);
+    }
+
+    /**
+     * Returns an <code>EncryptedData</code> interface. Use this operation if
+     * you want to have full control over the contents of the
+     * <code>EncryptedData</code> structure.
+     *
+     * this does not change the source document in any way.
+     *
+     * @param context the context <code>Document</code>.
+     * @param element the <code>Element</code> that will be encrypted.
+     * @param contentMode <code>true</code> to encrypt element's content only,
+     *    <code>false</code> otherwise
+     * @return the <code>EncryptedData</code>
+     * @throws Exception
+     */
+    public EncryptedData encryptData(Document context, Element element, boolean contentMode) throws
+            /* XMLEncryption */ Exception {
+		logger.debug("Encrypting element...");
+		if (null == context)
+			logger.error("Context document unexpectedly null...");
+		if (null == element)
+			logger.error("Element unexpectedly null...");
+		if (_cipherMode != ENCRYPT_MODE)
+			logger.debug("XMLCipher unexpectedly not in ENCRYPT_MODE...");
+
+		_contextDocument = context;
+
+		if (_algorithm == null) {
+			throw new XMLEncryptionException("XMLCipher instance without transformation specified");
+		}
+
+		String serializedOctets = null;
+		if (contentMode) {
+			NodeList children = element.getChildNodes();
+			if ((null != children)) {
+				serializedOctets = _serializer.serialize(children);
+			} else {
+				Object exArgs[] = { "Element has no content." };
+				throw new XMLEncryptionException("empty", exArgs);
+			}
+		} else {
+			serializedOctets = _serializer.serialize(element);
+		}
+		logger.debug("Serialized octets:\n" + serializedOctets);
+
+        byte[] encryptedBytes = null;
+
+		// Now create the working cipher if none was created already
+		Cipher c;
+		if (_contextCipher == null) {
+			String jceAlgorithm =
+				JCEMapper.translateURItoJCEID(_algorithm);
+
+			logger.debug("alg = " + jceAlgorithm);
+
+			try {
+                            if (_requestedJCEProvider == null)
+				c = Cipher.getInstance(jceAlgorithm);
+                            else
+                                c = Cipher.getInstance(jceAlgorithm, _requestedJCEProvider);
+			} catch (NoSuchAlgorithmException nsae) {
+				throw new XMLEncryptionException("empty", nsae);
+			} catch (NoSuchProviderException nspre) {
+				throw new XMLEncryptionException("empty", nspre);
+			} catch (NoSuchPaddingException nspae) {
+				throw new XMLEncryptionException("empty", nspae);
+			}
+		}
+		else {
+			c = _contextCipher;
+		}
+		// Now perform the encryption
+
+		try {
+			// Should internally generate an IV
+			// todo - allow user to set an IV
+			c.init(_cipherMode, _key);
+		} catch (InvalidKeyException ike) {
+			throw new XMLEncryptionException("empty", ike);
+		}
+
+        try {
+            encryptedBytes =
+                c.doFinal(serializedOctets.getBytes("UTF-8"));
+
+            logger.debug("Expected cipher.outputSize = " +
+                Integer.toString(c.getOutputSize(
+                    serializedOctets.getBytes().length)));
+            logger.debug("Actual cipher.outputSize = " +
+                Integer.toString(encryptedBytes.length));
+        } catch (IllegalStateException ise) {
+            throw new XMLEncryptionException("empty", ise);
+        } catch (IllegalBlockSizeException ibse) {
+            throw new XMLEncryptionException("empty", ibse);
+        } catch (BadPaddingException bpe) {
+            throw new XMLEncryptionException("empty", bpe);
+        } catch (UnsupportedEncodingException uee) {
+		   	throw new XMLEncryptionException("empty", uee);
+		}
+
+		// Now build up to a properly XML Encryption encoded octet stream
+		// IvParameterSpec iv;
+
+		byte[] iv = c.getIV();
+		byte[] finalEncryptedBytes = 
+			new byte[iv.length + encryptedBytes.length];
+		System.arraycopy(iv, 0, finalEncryptedBytes, 0,
+						 iv.length);
+		System.arraycopy(encryptedBytes, 0, finalEncryptedBytes, 
+						 iv.length,
+						 encryptedBytes.length);
+
+        String base64EncodedEncryptedOctets = Base64.encode(finalEncryptedBytes);
+
+        logger.debug("Encrypted octets:\n" + base64EncodedEncryptedOctets);
+        logger.debug("Encrypted octets length = " +
+            base64EncodedEncryptedOctets.length());
+
+		try {
+			CipherData cd = _ed.getCipherData();
+			CipherValue cv = cd.getCipherValue();
+			// cv.setValue(base64EncodedEncryptedOctets.getBytes());
+			cv.setValue(base64EncodedEncryptedOctets);
+
+			if (contentMode) {
+				_ed.setType(
+					new URI(EncryptionConstants.TYPE_CONTENT).toString());
+			} else {
+				_ed.setType(
+					new URI(EncryptionConstants.TYPE_ELEMENT).toString());
+			}
+			EncryptionMethod method =
+				_factory.newEncryptionMethod(new URI(_algorithm).toString());
+			_ed.setEncryptionMethod(method);
+		} catch (URI.MalformedURIException mfue) {
+			throw new XMLEncryptionException("empty", mfue);
+		}
+        return (_ed);
+    }
+
+    /**
+     * Returns an <code>EncryptedData</code> interface. Use this operation if
+     * you want to load an <code>EncryptedData</code> structure from a DOM 
+	 * structure and manipulate the contents 
+     *
+     * @param context the context <code>Document</code>.
+     * @param element the <code>Element</code> that will be loaded
+     * @throws XMLEncryptionException
+     * @return
+     */
+    public EncryptedData loadEncryptedData(Document context, Element element) 
+		throws XMLEncryptionException {
+        logger.debug("Loading encrypted element...");
+        if(null == context)
+            logger.error("Context document unexpectedly null...");
+        if(null == element)
+            logger.error("Element unexpectedly null...");
+        if(_cipherMode != DECRYPT_MODE)
+            logger.error("XMLCipher unexpectedly not in DECRYPT_MODE...");
+
+        _contextDocument = context;
+        _ed = _factory.newEncryptedData(element);
+
+		return (_ed);
+    }
+
+    /**
+     * Returns an <code>EncryptedKey</code> interface. Use this operation if
+     * you want to load an <code>EncryptedKey</code> structure from a DOM 
+	 * structure and manipulate the contents.
+     *
+     * @param context the context <code>Document</code>.
+     * @param element the <code>Element</code> that will be loaded
+     * @return
+     * @throws XMLEncryptionException
+     */
+
+    public EncryptedKey loadEncryptedKey(Document context, Element element) 
+		throws XMLEncryptionException {
+        logger.debug("Loading encrypted key...");
+        if(null == context)
+            logger.error("Context document unexpectedly null...");
+        if(null == element)
+            logger.error("Element unexpectedly null...");
+        if(_cipherMode != UNWRAP_MODE && _cipherMode != DECRYPT_MODE)
+            logger.debug("XMLCipher unexpectedly not in UNWRAP_MODE or DECRYPT_MODE...");
+
+        _contextDocument = context;
+        _ek = _factory.newEncryptedKey(element);
+		return (_ek);
+    }
+
+    /**
+     * Returns an <code>EncryptedKey</code> interface. Use this operation if
+     * you want to load an <code>EncryptedKey</code> structure from a DOM 
+	 * structure and manipulate the contents.
+	 *
+	 * Assumes that the context document is the document that owns the element
+     *
+     * @param element the <code>Element</code> that will be loaded
+     * @return
+     * @throws XMLEncryptionException
+     */
+
+    public EncryptedKey loadEncryptedKey(Element element) 
+		throws XMLEncryptionException {
+
+		return (loadEncryptedKey(element.getOwnerDocument(), element));
+    }
+
+    /**
+     * Encrypts a key to an EncryptedKey structure
+	 *
+	 * @param doc the Context document that will be used to general DOM
+	 * @param key Key to encrypt (will use previously set KEK to 
+	 * perform encryption
+     * @return
+     * @throws XMLEncryptionException
+     */
+
+    public EncryptedKey encryptKey(Document doc, Key key) throws
+            XMLEncryptionException {
+
+        logger.debug("Encrypting key ...");
+
+        if(null == key) 
+            logger.error("Key unexpectedly null...");
+        if(_cipherMode != WRAP_MODE)
+            logger.debug("XMLCipher unexpectedly not in WRAP_MODE...");
+
+		if (_algorithm == null) {
+
+			throw new XMLEncryptionException("XMLCipher instance without transformation specified");
+		}
+
+		_contextDocument = doc;
+
+		byte[] encryptedBytes = null;
+		Cipher c;
+
+		if (_contextCipher == null) {
+			// Now create the working cipher
+
+			String jceAlgorithm =
+				JCEMapper.translateURItoJCEID(_algorithm);
+
+			logger.debug("alg = " + jceAlgorithm);
+
+			try {
+			    if (_requestedJCEProvider == null)
+				c = Cipher.getInstance(jceAlgorithm);
+                            else
+                                c = Cipher.getInstance(jceAlgorithm, _requestedJCEProvider);
+			} catch (NoSuchAlgorithmException nsae) {
+				throw new XMLEncryptionException("empty", nsae);
+			} catch (NoSuchProviderException nspre) {
+				throw new XMLEncryptionException("empty", nspre);
+			} catch (NoSuchPaddingException nspae) {
+				throw new XMLEncryptionException("empty", nspae);
+			}
+		} else {
+			c = _contextCipher;
+		}
+		// Now perform the encryption
+
+		try {
+			// Should internally generate an IV
+			// todo - allow user to set an IV
+			c.init(Cipher.WRAP_MODE, _key);
+			encryptedBytes = c.wrap(key);
+		} catch (InvalidKeyException ike) {
+			throw new XMLEncryptionException("empty", ike);
+		} catch (IllegalBlockSizeException ibse) {
+			throw new XMLEncryptionException("empty", ibse);
+		}
+
+        String base64EncodedEncryptedOctets = Base64.encode(encryptedBytes);
+
+        logger.debug("Encrypted key octets:\n" + base64EncodedEncryptedOctets);
+        logger.debug("Encrypted key octets length = " +
+            base64EncodedEncryptedOctets.length());
+
+		CipherValue cv = _ek.getCipherData().getCipherValue();
+		cv.setValue(base64EncodedEncryptedOctets);
+
+        try {
+            EncryptionMethod method = _factory.newEncryptionMethod(
+                new URI(_algorithm).toString());
+            _ek.setEncryptionMethod(method);
+        } catch (URI.MalformedURIException mfue) {
+            throw new XMLEncryptionException("empty", mfue);
+        }
+		return _ek;
+		
+    }
+
+	/**
+	 * Decrypt a key from a passed in EncryptedKey structure
+	 *
+	 * @param encryptedKey Previously loaded EncryptedKey that needs
+	 * to be decrypted.
+	 * @param algorithm Algorithm for the decryption
+	 * @return a key corresponding to the give type
+     * @throws XMLEncryptionException
+	 */
+
+	public Key decryptKey(EncryptedKey encryptedKey, String algorithm) throws
+	            XMLEncryptionException {
+
+        logger.debug("Decrypting key from previously loaded EncryptedKey...");
+
+        if(_cipherMode != UNWRAP_MODE)
+            logger.debug("XMLCipher unexpectedly not in UNWRAP_MODE...");
+
+		if (algorithm == null) {
+			throw new XMLEncryptionException("Cannot decrypt a key without knowing the algorithm");
+		}
+
+		if (_key == null) {
+
+			logger.debug("Trying to find a KEK via key resolvers");
+
+			KeyInfo ki = encryptedKey.getKeyInfo();
+			if (ki != null) {
+				try {
+					_key = ki.getSecretKey();
+				}
+				catch (Exception e) {
+				}
+			}
+			if (_key == null) {
+				logger.error("XMLCipher::decryptKey called without a KEK and cannot resolve");
+				throw new XMLEncryptionException("Unable to decrypt without a KEK");
+			}
+		}
+
+		// Obtain the encrypted octets 
+		XMLCipherInput cipherInput = new XMLCipherInput(encryptedKey);
+		byte [] encryptedBytes = cipherInput.getBytes();
+
+		String jceKeyAlgorithm =
+			JCEMapper.getJCEKeyAlgorithmFromURI(algorithm);
+
+		Cipher c;
+		if (_contextCipher == null) {
+			// Now create the working cipher
+
+			String jceAlgorithm =
+				JCEMapper.translateURItoJCEID(
+					encryptedKey.getEncryptionMethod().getAlgorithm());
+
+			logger.debug("JCE Algorithm = " + jceAlgorithm);
+
+			try {
+                            if (_requestedJCEProvider == null)
+				c = Cipher.getInstance(jceAlgorithm);
+                            else
+                                c = Cipher.getInstance(jceAlgorithm, _requestedJCEProvider);
+			} catch (NoSuchAlgorithmException nsae) {
+				throw new XMLEncryptionException("empty", nsae);
+			} catch (NoSuchProviderException nspre) {
+				throw new XMLEncryptionException("empty", nspre);
+			} catch (NoSuchPaddingException nspae) {
+				throw new XMLEncryptionException("empty", nspae);
+			}
+		} else {
+			c = _contextCipher;
+		}
+
+		Key ret;
+
+		try {		
+			c.init(Cipher.UNWRAP_MODE, _key);
+			ret = c.unwrap(encryptedBytes, jceKeyAlgorithm, Cipher.SECRET_KEY);
+			
+		} catch (InvalidKeyException ike) {
+			throw new XMLEncryptionException("empty", ike);
+		} catch (NoSuchAlgorithmException nsae) {
+			throw new XMLEncryptionException("empty", nsae);
+		}
+
+		logger.debug("Decryption of key type " + algorithm + " OK");
+
+		return ret;
+
+    }
+		
+	/**
+	 * Decrypt a key from a passed in EncryptedKey structure.  This version
+	 * is used mainly internally, when  the cipher already has an
+	 * EncryptedData loaded.  The algorithm URI will be read from the 
+	 * EncryptedData
+	 *
+	 * @param encryptedKey Previously loaded EncryptedKey that needs
+	 * to be decrypted.
+	 * @return a key corresponding to the give type
+     * @throws XMLEncryptionException
+	 */
+
+	public Key decryptKey(EncryptedKey encryptedKey) throws
+	            XMLEncryptionException {
+
+		return decryptKey(encryptedKey, _ed.getEncryptionMethod().getAlgorithm());
+
+	}
+
+    /**
+     * Removes the contents of a <code>Node</code>.
+     *
+     * @param node the <code>Node</code> to clear.
+     */
+    private void removeContent(Node node) {
+        NodeList list = node.getChildNodes();
+        if (list.getLength() > 0) {
+            Node n = list.item(0);
+            if (null != n) {
+                n.getParentNode().removeChild(n);
+            }
+            removeContent(node);
+        }
+    }
+
+    /**
+     * Decrypts <code>EncryptedData</code> in a single-part operation.
+     *
+     * @param element the <code>EncryptedData</code> to decrypt.
+     * @return the <code>Node</code> as a result of the decrypt operation.
+     * @throws XMLEncryptionException
+     */
+    private Document decryptElement(Element element) throws
+            XMLEncryptionException {
+
+        logger.debug("Decrypting element...");
+
+        if(_cipherMode != DECRYPT_MODE)
+            logger.error("XMLCipher unexpectedly not in DECRYPT_MODE...");
+
+		String octets;
+		try {
+			octets = new String(decryptToByteArray(element), "UTF-8");
+		} catch (UnsupportedEncodingException uee) {
+			throw new XMLEncryptionException("empty", uee);
+		}
+
+
+        logger.debug("Decrypted octets:\n" + octets);
+
+        Node sourceParent =  element.getParentNode();
+
+        DocumentFragment decryptedFragment = 
+			_serializer.deserialize(octets, sourceParent);
+
+
+		// The de-serialiser returns a fragment whose children we need to
+		// take on.
+
+		if (sourceParent instanceof Document) {
+			
+		    // If this is a content decryption, this may have problems
+
+		    _contextDocument.removeChild(_contextDocument.getDocumentElement());
+		    _contextDocument.appendChild(decryptedFragment);
+		}
+		else {
+		    sourceParent.replaceChild(decryptedFragment, element);
+
+		}
+
+        return (_contextDocument);
+    }
+    
+
+	/**
+	 * 
+	 * @param element
+     * @return
+     * @throws XMLEncryptionException
+	 */
+    private Document decryptElementContent(Element element) throws 
+    		XMLEncryptionException {
+    	Element e = (Element) element.getElementsByTagNameNS(
+    		EncryptionConstants.EncryptionSpecNS, 
+    		EncryptionConstants._TAG_ENCRYPTEDDATA).item(0);
+    	
+    	if (null == e) {
+    		throw new XMLEncryptionException("No EncryptedData child element.");
+    	}
+    	
+    	return (decryptElement(e));
+    }
+
+	/**
+	 * Decrypt an EncryptedData element to a byte array
+	 *
+	 * When passed in an EncryptedData node, returns the decryption
+	 * as a byte array.
+	 *
+	 * Does not modify the source document
+     * @param element
+     * @return
+     * @throws XMLEncryptionException
+	 */
+
+	public byte[] decryptToByteArray(Element element) 
+		throws XMLEncryptionException {
+		
+        logger.debug("Decrypting to ByteArray...");
+
+        if(_cipherMode != DECRYPT_MODE)
+            logger.error("XMLCipher unexpectedly not in DECRYPT_MODE...");
+
+        EncryptedData encryptedData = _factory.newEncryptedData(element);
+
+		if (_key == null) {
+
+			KeyInfo ki = encryptedData.getKeyInfo();
+
+			if (ki != null) {
+				try {
+					// Add a EncryptedKey resolver
+					ki.registerInternalKeyResolver(
+			             new EncryptedKeyResolver(encryptedData.
+												  getEncryptionMethod().
+												  getAlgorithm(), 
+												  _kek));
+					_key = ki.getSecretKey();
+				} catch (KeyResolverException kre) {
+					// We will throw in a second...
+				}
+			}
+
+			if (_key == null) {
+				logger.error("XMLCipher::decryptElement called without a key and unable to resolve");
+
+				throw new XMLEncryptionException("encryption.nokey");
+			}
+		}
+
+		// Obtain the encrypted octets 
+		XMLCipherInput cipherInput = new XMLCipherInput(encryptedData);
+		byte [] encryptedBytes = cipherInput.getBytes();
+
+		// Now create the working cipher
+
+		String jceAlgorithm = 
+			JCEMapper.translateURItoJCEID(encryptedData.getEncryptionMethod().getAlgorithm());
+
+		Cipher c;
+		try {
+                    if (_requestedJCEProvider == null)
+			c = Cipher.getInstance(jceAlgorithm);
+                    else
+                        c = Cipher.getInstance(jceAlgorithm, _requestedJCEProvider);
+		} catch (NoSuchAlgorithmException nsae) {
+			throw new XMLEncryptionException("empty", nsae);
+		} catch (NoSuchProviderException nspre) {
+			throw new XMLEncryptionException("empty", nspre);
+		} catch (NoSuchPaddingException nspae) {
+			throw new XMLEncryptionException("empty", nspae);
+		}
+
+		// Calculate the IV length and copy out
+
+		// For now, we only work with Block ciphers, so this will work.
+		// This should probably be put into the JCE mapper.
+
+		int ivLen = c.getBlockSize();
+		byte[] ivBytes = new byte[ivLen];
+
+		// You may be able to pass the entire piece in to IvParameterSpec
+		// and it will only take the first x bytes, but no way to be certain
+		// that this will work for every JCE provider, so lets copy the
+		// necessary bytes into a dedicated array.
+
+		System.arraycopy(encryptedBytes, 0, ivBytes, 0, ivLen);
+		IvParameterSpec iv = new IvParameterSpec(ivBytes);		
+		
+		try {
+			c.init(_cipherMode, _key, iv);
+		} catch (InvalidKeyException ike) {
+			throw new XMLEncryptionException("empty", ike);
+		} catch (InvalidAlgorithmParameterException iape) {
+			throw new XMLEncryptionException("empty", iape);
+		}
+
+		byte[] plainBytes;
+
+        try {
+            plainBytes = c.doFinal(encryptedBytes, 
+								   ivLen, 
+								   encryptedBytes.length - ivLen);
+
+        } catch (IllegalBlockSizeException ibse) {
+            throw new XMLEncryptionException("empty", ibse);
+        } catch (BadPaddingException bpe) {
+            throw new XMLEncryptionException("empty", bpe);
+        }
+		
+        return (plainBytes);
+    }
+		
+	/*
+	 * Expose the interface for creating XML Encryption objects
+	 */
+
+    /**
+     * Creates an <code>EncryptedData</code> <code>Element</code>.
+     *
+	 * The newEncryptedData and newEncryptedKey methods create fairly complete
+	 * elements that are immediately useable.  All the other create* methods
+	 * return bare elements that still need to be built upon.
+	 *<p>
+	 * An EncryptionMethod will still need to be added however
+	 *
+	 * @param type Either REFERENCE_TYPE or VALUE_TYPE - defines what kind of
+	 * CipherData this EncryptedData will contain.
+     * @param value the Base 64 encoded, encrypted text to wrap in the
+     *   <code>EncryptedData</code> or the URI to set in the CipherReference
+	 * (usage will depend on the <code>type</code>
+     * @return the <code>EncryptedData</code> <code>Element</code>.
+     *
+     * <!--
+     * <EncryptedData Id[OPT] Type[OPT] MimeType[OPT] Encoding[OPT]>
+     *     <EncryptionMethod/>[OPT]
+     *     <ds:KeyInfo>[OPT]
+     *         <EncryptedKey/>[OPT]
+     *         <AgreementMethod/>[OPT]
+     *         <ds:KeyName/>[OPT]
+     *         <ds:RetrievalMethod/>[OPT]
+     *         <ds:[MUL]/>[OPT]
+     *     </ds:KeyInfo>
+     *     <CipherData>[MAN]
+     *         <CipherValue/> XOR <CipherReference/>
+     *     </CipherData>
+     *     <EncryptionProperties/>[OPT]
+     * </EncryptedData>
+     * -->
+     * @throws XMLEncryptionException
+     */
+
+    public EncryptedData createEncryptedData(int type, String value) throws
+            XMLEncryptionException {
+        EncryptedData result = null;
+        CipherData data = null;
+
+        switch (type) {
+            case CipherData.REFERENCE_TYPE:
+                CipherReference cipherReference = _factory.newCipherReference(
+                    value);
+                data = _factory.newCipherData(type);
+                data.setCipherReference(cipherReference);
+                result = _factory.newEncryptedData(data);
+				break;
+            case CipherData.VALUE_TYPE:
+                CipherValue cipherValue = _factory.newCipherValue(value);
+                data = _factory.newCipherData(type);
+                data.setCipherValue(cipherValue);
+                result = _factory.newEncryptedData(data);
+        }
+
+        return (result);
+    }
+
+    /**
+     * Creates an <code>EncryptedKey</code> <code>Element</code>.
+     *
+	 * The newEncryptedData and newEncryptedKey methods create fairly complete
+	 * elements that are immediately useable.  All the other create* methods
+	 * return bare elements that still need to be built upon.
+	 *<p>
+	 * An EncryptionMethod will still need to be added however
+	 *
+	 * @param type Either REFERENCE_TYPE or VALUE_TYPE - defines what kind of
+	 * CipherData this EncryptedData will contain.
+     * @param value the Base 64 encoded, encrypted text to wrap in the
+     *   <code>EncryptedKey</code> or the URI to set in the CipherReference
+	 * (usage will depend on the <code>type</code>
+     * @return the <code>EncryptedKey</code> <code>Element</code>.
+     *
+     * <!--
+     * <EncryptedKey Id[OPT] Type[OPT] MimeType[OPT] Encoding[OPT]>
+     *     <EncryptionMethod/>[OPT]
+     *     <ds:KeyInfo>[OPT]
+     *         <EncryptedKey/>[OPT]
+     *         <AgreementMethod/>[OPT]
+     *         <ds:KeyName/>[OPT]
+     *         <ds:RetrievalMethod/>[OPT]
+     *         <ds:[MUL]/>[OPT]
+     *     </ds:KeyInfo>
+     *     <CipherData>[MAN]
+     *         <CipherValue/> XOR <CipherReference/>
+     *     </CipherData>
+     *     <EncryptionProperties/>[OPT]
+     * </EncryptedData>
+     * -->
+     * @throws XMLEncryptionException
+     */
+
+    public EncryptedKey createEncryptedKey(int type, String value) throws
+            XMLEncryptionException {
+        EncryptedKey result = null;
+        CipherData data = null;
+
+        switch (type) {
+            case CipherData.REFERENCE_TYPE:
+                CipherReference cipherReference = _factory.newCipherReference(
+                    value);
+                data = _factory.newCipherData(type);
+                data.setCipherReference(cipherReference);
+                result = _factory.newEncryptedKey(data);
+				break;
+            case CipherData.VALUE_TYPE:
+                CipherValue cipherValue = _factory.newCipherValue(value);
+                data = _factory.newCipherData(type);
+                data.setCipherValue(cipherValue);
+                result = _factory.newEncryptedKey(data);
+        }
+
+        return (result);
+    }
+
+	/**
+	 * Create an AgreementMethod object
+	 *
+	 * @param algorithm Algorithm of the agreement method
+     * @return
+	 */
+
+	public AgreementMethod createAgreementMethod(String algorithm) {
+		return (_factory.newAgreementMethod(algorithm));
+	}
+
+	/**
+	 * Create a CipherData object
+	 *
+	 * @param type Type of this CipherData (either VALUE_TUPE or
+	 * REFERENCE_TYPE)
+	 * @return
+	 */
+
+	public CipherData createCipherData(int type) {
+		return (_factory.newCipherData(type));
+	}
+
+	/**
+	 * Create a CipherReference object
+	 *
+     * @return
+	 * @param uri The URI that the reference will refer 
+	 */
+
+	public CipherReference createCipherReference(String uri) {
+		return (_factory.newCipherReference(uri));
+	}
+	
+	/**
+	 * Create a CipherValue element
+	 *
+	 * @param value The value to set the ciphertext to
+     * @return
+	 */
+
+	public CipherValue createCipherValue(String value) {
+		return (_factory.newCipherValue(value));
+	}
+
+	/**
+	 * Create an EncryptedMethod object
+	 *
+	 * @param algorithm Algorithm for the encryption
+     * @return
+	 */
+	public EncryptionMethod createEncryptionMethod(String algorithm) {
+		return (_factory.newEncryptionMethod(algorithm));
+	}
+
+	/**
+	 * Create an EncryptedProperties element
+	 * @return
+	 */
+	public EncryptionProperties createEncryptionProperties() {
+		return (_factory.newEncryptionProperties());
+	}
+
+	/**
+	 * Create a new EncryptionProperty element
+     * @return
+	 */
+	public EncryptionProperty createEncryptionProperty() {
+		return (_factory.newEncryptionProperty());
+	}
+
+	/**
+	 * Create a new ReferenceList object
+     * @return
+     * @param type
+	 */
+	public ReferenceList createReferenceList(int type) {
+		return (_factory.newReferenceList(type));
+	}
+	
+	/**
+	 * Create a new Transforms object
+	 * <p>
+	 * <b>Note</b>: A context document <i>must</i> have been set
+	 * elsewhere (possibly via a call to doFinal).  If not, use the
+	 * createTransforms(Document) method.
+     * @return
+	 */
+
+	public Transforms createTransforms() {
+		return (_factory.newTransforms());
+	}
+
+	/**
+	 * Create a new Transforms object
+	 *
+	 * Because the handling of Transforms is currently done in the signature
+	 * code, the creation of a Transforms object <b>requires</b> a
+	 * context document.
+	 *
+	 * @param doc Document that will own the created Transforms node
+     * @return
+	 */
+	public Transforms createTransforms(Document doc) {
+		return (_factory.newTransforms(doc));
+	}
+
+    /**
+     * Converts <code>String</code>s into <code>Node</code>s and visa versa.
+     * <p>
+     * <b>NOTE:</b> For internal use only.
+     *
+     * @author  Axl Mattheus
+     */
+
+    private class Serializer {
+        /**
+         * Initialize the <code>XMLSerializer</code> with the specified context
+         * <code>Document</code>.
+         * <p/>
+         * Setup OutputFormat in a way that the serialization does <b>not</b>
+         * modifiy the contents, that is it shall not do any pretty printing
+         * and so on. This would destroy the original content before 
+         * encryption. If that content was signed before encryption and the 
+         * serialization modifies the content the signature verification will
+         * fail.
+         */
+        Serializer() {
+        }
+
+        /**
+         * Returns a <code>String</code> representation of the specified
+         * <code>Document</code>.
+         * <p/>
+         * Refer also to comments about setup of format.
+         *
+         * @param document the <code>Document</code> to serialize.
+         * @return the <code>String</code> representation of the serilaized
+         *   <code>Document</code>.
+         * @throws Exception
+         */
+        String serialize(Document document) throws Exception {
+            return canonSerialize(document);
+        }
+
+        /**
+         * Returns a <code>String</code> representation of the specified
+         * <code>Element</code>.
+         * <p/>
+         * Refer also to comments about setup of format.
+         *
+         * @param element the <code>Element</code> to serialize.
+         * @return the <code>String</code> representation of the serilaized
+         *   <code>Element</code>.
+         * @throws Exception
+         */
+		String serialize(Element element) throws Exception {
+            return canonSerialize(element);
+		}
+
+        /**
+         * Returns a <code>String</code> representation of the specified
+         * <code>NodeList</code>.
+         * <p/>
+         * This is a special case because the NodeList may represent a
+         * <code>DocumentFragment</code>. A document fragement may be a
+         * non-valid XML document (refer to appropriate description of
+         * W3C) because it my start with a non-element node, e.g. a text
+         * node.
+         * <p/>
+         * The methods first converts the node list into a document fragment.
+         * Special care is taken to not destroy the current document, thus
+         * the method clones the nodes (deep cloning) before it appends
+         * them to the document fragment.
+         * <p/>
+         * Refer also to comments about setup of format.
+         * 
+         * @param content the <code>NodeList</code> to serialize.
+         * @return the <code>String</code> representation of the serilaized
+         *   <code>NodeList</code>.
+         * @throws Exception
+         */
+        String serialize(NodeList content) throws Exception { //XMLEncryptionException {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            _canon.setWriter(baos);
+            _canon.notReset();
+            for (int i = 0; i < content.getLength(); i++) {                
+                _canon.canonicalizeSubtree(content.item(i));                
+            }
+            baos.close();
+            return baos.toString("UTF-8");
+        }
+
+        /**
+         * Use the Canoncializer to serialize the node
+         * @param node
+         * @return
+         * @throws Exception
+         */ 
+		String canonSerialize(Node node) throws Exception {
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			_canon.setWriter(baos);			
+            _canon.notReset();
+			_canon.canonicalizeSubtree(node);			
+			baos.close();            
+			return baos.toString("UTF-8");
+		}
+        /**
+         * @param source
+         * @param ctx
+         * @return
+         * @throws XMLEncryptionException
+         *
+         */
+        DocumentFragment deserialize(String source, Node ctx) throws XMLEncryptionException {
+			DocumentFragment result;
+            final String tagname = "fragment";
+
+			// Create the context to parse the document against
+			StringBuffer sb;
+			
+			sb = new StringBuffer();
+			sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><"+tagname);
+			
+			// Run through each node up to the document node and find any
+			// xmlns: nodes
+
+			Node wk = ctx;
+			
+			while (wk != null) {
+
+				NamedNodeMap atts = wk.getAttributes();
+				int length;
+				if (atts != null)
+					length = atts.getLength();
+				else
+					length = 0;
+
+				for (int i = 0 ; i < length ; ++i) {
+					Node att = atts.item(i);
+					if (att.getNodeName().startsWith("xmlns:") ||
+						att.getNodeName().equals("xmlns")) {
+					
+						// Check to see if this node has already been found
+						Node p = ctx;
+						boolean found = false;
+						while (p != wk) {
+							NamedNodeMap tstAtts = p.getAttributes();
+							if (tstAtts != null && 
+								tstAtts.getNamedItem(att.getNodeName()) != null) {
+								found = true;
+								break;
+							}
+							p = p.getParentNode();
+						}
+						if (found == false) {
+							
+							// This is an attribute node
+							sb.append(" " + att.getNodeName() + "=\"" + 
+									  att.getNodeValue() + "\"");
+						}
+					}
+				}
+				wk = wk.getParentNode();
+			}
+			sb.append(">" + source + "</" + tagname + ">");
+			String fragment = sb.toString();
+
+            try {
+                DocumentBuilderFactory dbf =
+                    DocumentBuilderFactory.newInstance();
+				dbf.setNamespaceAware(true);
+				dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+				DocumentBuilder db = dbf.newDocumentBuilder();
+				Document d = db.parse(
+				    new InputSource(new StringReader(fragment)));
+
+				Element fragElt = (Element) _contextDocument.importNode(
+						 d.getDocumentElement(), true);
+				result = _contextDocument.createDocumentFragment();
+				Node child = fragElt.getFirstChild();
+				while (child != null) {
+					fragElt.removeChild(child);
+					result.appendChild(child);
+					child = fragElt.getFirstChild();
+				}
+				// String outp = serialize(d);
+
+            } catch (SAXException se) {
+                throw new XMLEncryptionException("empty", se);
+            } catch (ParserConfigurationException pce) {
+                throw new XMLEncryptionException("empty", pce);
+            } catch (IOException ioe) {
+                throw new XMLEncryptionException("empty", ioe);
+            }
+
+            return (result);
+        }
+    }
+
+
+    /**
+     *
+     * @author Axl Mattheus
+     */
+    private class Factory {
+        /**
+         * @param algorithm
+         * @return
+         *
+         */
+        AgreementMethod newAgreementMethod(String algorithm)  {
+            return (new AgreementMethodImpl(algorithm));
+        }
+
+        /**
+         * @param type
+         * @return
+         *
+         */
+        CipherData newCipherData(int type) {
+            return (new CipherDataImpl(type));
+        }
+
+        /**
+         * @param uri
+         * @return
+         *
+         */
+        CipherReference newCipherReference(String uri)  {
+            return (new CipherReferenceImpl(uri));
+        }
+
+        /**
+         * @param value
+         * @return
+         *
+         */
+        CipherValue newCipherValue(String value) {
+            return (new CipherValueImpl(value));
+        }
+
+        /**
+         *
+         
+        CipherValue newCipherValue(byte[] value) {
+            return (new CipherValueImpl(value));
+        }
+		*/
+        /**
+         * @param data
+         * @return
+         *
+         */
+        EncryptedData newEncryptedData(CipherData data) {
+            return (new EncryptedDataImpl(data));
+        }
+
+        /**
+         * @param data
+         * @return
+         *
+         */
+        EncryptedKey newEncryptedKey(CipherData data) {
+            return (new EncryptedKeyImpl(data));
+        }
+
+        /**
+         * @param algorithm
+         * @return
+         *
+         */
+        EncryptionMethod newEncryptionMethod(String algorithm) {
+            return (new EncryptionMethodImpl(algorithm));
+        }
+
+        /**
+         * @return
+         *
+         */
+        EncryptionProperties newEncryptionProperties() {
+            return (new EncryptionPropertiesImpl());
+        }
+
+        /**
+         * @return
+         *
+         */
+        EncryptionProperty newEncryptionProperty() {
+            return (new EncryptionPropertyImpl());
+        }
+
+        /**
+         * @param type
+         * @return
+         *
+         */
+        ReferenceList newReferenceList(int type) {
+            return (new ReferenceListImpl(type));
+        }
+
+        /**
+         * @return
+         *
+         */
+        Transforms newTransforms() {
+            return (new TransformsImpl());
+        }
+
+        /**
+         * @param doc
+         * @return
+         *
+         */
+        Transforms newTransforms(Document doc) {
+            return (new TransformsImpl(doc));
+        }
+
+        /**
+         * @param element
+         * @return
+         * @throws XMLEncryptionException
+         *
+         */
+        // <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+        // <complexType name="AgreementMethodType" mixed="true">
+        //     <sequence>
+        //         <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
+        //         <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+        //         <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+        //         <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+        //         <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+        //     </sequence>
+        //     <attribute name="Algorithm" type="anyURI" use="required"/>
+        // </complexType>
+        AgreementMethod newAgreementMethod(Element element) throws
+                XMLEncryptionException {
+            if (null == element) {
+                //complain
+            }
+
+            String algorithm = element.getAttributeNS(null, 
+            	EncryptionConstants._ATT_ALGORITHM);
+            AgreementMethod result = newAgreementMethod(algorithm);
+
+            Element kaNonceElement = (Element) element.getElementsByTagNameNS(
+                EncryptionConstants.EncryptionSpecNS,
+                EncryptionConstants._TAG_KA_NONCE).item(0);
+            if (null != kaNonceElement) {
+                result.setKANonce(kaNonceElement.getNodeValue().getBytes());
+            }
+            // TODO: ///////////////////////////////////////////////////////////
+            // Figure out how to make this pesky line work..
+            // <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+
+            // TODO: Work out how to handle relative URI
+
+            Element originatorKeyInfoElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_ORIGINATORKEYINFO).item(0);
+            if (null != originatorKeyInfoElement) {
+                try {
+                    result.setOriginatorKeyInfo(
+                        new KeyInfo(originatorKeyInfoElement, null));
+                } catch (XMLSecurityException xse) {
+                    throw new XMLEncryptionException("empty", xse);
+                }
+            }
+
+            // TODO: Work out how to handle relative URI
+
+            Element recipientKeyInfoElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_RECIPIENTKEYINFO).item(0);
+            if (null != recipientKeyInfoElement) {
+                try {
+                    result.setRecipientKeyInfo(
+                        new KeyInfo(recipientKeyInfoElement, null));
+                } catch (XMLSecurityException xse) {
+                    throw new XMLEncryptionException("empty", xse);
+                }
+            }
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         * @throws XMLEncryptionException
+         *
+         */
+        // <element name='CipherData' type='xenc:CipherDataType'/>
+        // <complexType name='CipherDataType'>
+        //     <choice>
+        //         <element name='CipherValue' type='base64Binary'/>
+        //         <element ref='xenc:CipherReference'/>
+        //     </choice>
+        // </complexType>
+        CipherData newCipherData(Element element) throws
+                XMLEncryptionException {
+            if (null == element) {
+                // complain
+            }
+
+            int type = 0;
+            Element e = null;
+            if (element.getElementsByTagNameNS(
+                EncryptionConstants.EncryptionSpecNS, 
+                EncryptionConstants._TAG_CIPHERVALUE).getLength() > 0) {
+                type = CipherData.VALUE_TYPE;
+                e = (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_CIPHERVALUE).item(0);
+            } else if (element.getElementsByTagNameNS(
+                EncryptionConstants.EncryptionSpecNS,
+                EncryptionConstants._TAG_CIPHERREFERENCE).getLength() > 0) {
+                type = CipherData.REFERENCE_TYPE;
+                e = (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_CIPHERREFERENCE).item(0);
+            }
+
+            CipherData result = newCipherData(type);
+            if (type == CipherData.VALUE_TYPE) {
+                result.setCipherValue(newCipherValue(e));
+            } else if (type == CipherData.REFERENCE_TYPE) {
+                result.setCipherReference(newCipherReference(e));
+            }
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         * @throws XMLEncryptionException
+         *
+         */
+        // <element name='CipherReference' type='xenc:CipherReferenceType'/>
+        // <complexType name='CipherReferenceType'>
+        //     <sequence>
+        //         <element name='Transforms' type='xenc:TransformsType' minOccurs='0'/>
+        //     </sequence>
+        //     <attribute name='URI' type='anyURI' use='required'/>
+        // </complexType>
+        CipherReference newCipherReference(Element element) throws
+                XMLEncryptionException {
+
+			Attr URIAttr = 
+				element.getAttributeNodeNS(null, EncryptionConstants._ATT_URI);
+			CipherReference result = new CipherReferenceImpl(URIAttr);
+
+			// Find any Transforms
+
+			NodeList transformsElements = element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_TRANSFORMS);
+            Element transformsElement =
+				(Element) transformsElements.item(0);
+			
+			if (transformsElement != null) {
+				logger.debug("Creating a DSIG based Transforms element");
+				try {
+					result.setTransforms(new TransformsImpl(transformsElement));
+				}
+				catch (XMLSignatureException xse) {
+					throw new XMLEncryptionException("empty", xse);
+				} catch (InvalidTransformException ite) {
+					throw new XMLEncryptionException("empty", ite);
+				} catch (XMLSecurityException xse) {
+					throw new XMLEncryptionException("empty", xse);
+				}
+
+			}
+
+			return result;
+        }
+
+        /**
+         * @param element
+         * @return
+         *
+         */
+        CipherValue newCipherValue(Element element) {
+            String value = XMLUtils.getFullTextChildrenFromElement(element);
+
+            CipherValue result = newCipherValue(value);
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         * @throws XMLEncryptionException
+         *
+         */
+        // <complexType name='EncryptedType' abstract='true'>
+        //     <sequence>
+        //         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+        //             minOccurs='0'/>
+        //         <element ref='ds:KeyInfo' minOccurs='0'/>
+        //         <element ref='xenc:CipherData'/>
+        //         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+        //     </sequence>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        //     <attribute name='Type' type='anyURI' use='optional'/>
+        //     <attribute name='MimeType' type='string' use='optional'/>
+        //     <attribute name='Encoding' type='anyURI' use='optional'/>
+        // </complexType>
+        // <element name='EncryptedData' type='xenc:EncryptedDataType'/>
+        // <complexType name='EncryptedDataType'>
+        //     <complexContent>
+        //         <extension base='xenc:EncryptedType'/>
+        //     </complexContent>
+        // </complexType>
+        EncryptedData newEncryptedData(Element element) throws
+			XMLEncryptionException {
+            EncryptedData result = null;
+
+			NodeList dataElements = element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_CIPHERDATA);
+
+			// Need to get the last CipherData found, as earlier ones will
+			// be for elements in the KeyInfo lists
+
+            Element dataElement =
+				(Element) dataElements.item(dataElements.getLength() - 1);
+
+            CipherData data = newCipherData(dataElement);
+
+            result = newEncryptedData(data);
+
+            try {
+                result.setId(element.getAttributeNS(
+                    null, EncryptionConstants._ATT_ID));
+                result.setType(new URI(
+                    element.getAttributeNS(
+                        null, EncryptionConstants._ATT_TYPE)).toString());
+                result.setMimeType(element.getAttributeNS(
+                    null, EncryptionConstants._ATT_MIMETYPE));
+                result.setEncoding(new URI(
+                    element.getAttributeNS(
+                        null, Constants._ATT_ENCODING)).toString());
+            } catch (URI.MalformedURIException mfue) {
+                // do nothing
+            }
+
+            Element encryptionMethodElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_ENCRYPTIONMETHOD).item(0);
+            if (null != encryptionMethodElement) {
+                result.setEncryptionMethod(newEncryptionMethod(
+                    encryptionMethodElement));
+            }
+
+            // BFL 16/7/03 - simple implementation
+			// TODO: Work out how to handle relative URI
+
+            Element keyInfoElement =
+                (Element) element.getElementsByTagNameNS(
+                    Constants.SignatureSpecNS, Constants._TAG_KEYINFO).item(0);
+            if (null != keyInfoElement) {
+				try {
+					result.setKeyInfo(new KeyInfo(keyInfoElement, null));
+				} catch (XMLSecurityException xse) {
+					throw new XMLEncryptionException("Error loading Key Info", 
+													 xse);
+				}
+            }
+
+            // TODO: Implement
+            Element encryptionPropertiesElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_ENCRYPTIONPROPERTIES).item(0);
+            if (null != encryptionPropertiesElement) {
+                result.setEncryptionProperties(
+                    newEncryptionProperties(encryptionPropertiesElement));
+            }
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         * @throws XMLEncryptionException
+         *
+         */
+        // <complexType name='EncryptedType' abstract='true'>
+        //     <sequence>
+        //         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+        //             minOccurs='0'/>
+        //         <element ref='ds:KeyInfo' minOccurs='0'/>
+        //         <element ref='xenc:CipherData'/>
+        //         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+        //     </sequence>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        //     <attribute name='Type' type='anyURI' use='optional'/>
+        //     <attribute name='MimeType' type='string' use='optional'/>
+        //     <attribute name='Encoding' type='anyURI' use='optional'/>
+        // </complexType>
+        // <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
+        // <complexType name='EncryptedKeyType'>
+        //     <complexContent>
+        //         <extension base='xenc:EncryptedType'>
+        //             <sequence>
+        //                 <element ref='xenc:ReferenceList' minOccurs='0'/>
+        //                 <element name='CarriedKeyName' type='string' minOccurs='0'/>
+        //             </sequence>
+        //             <attribute name='Recipient' type='string' use='optional'/>
+        //         </extension>
+        //     </complexContent>
+        // </complexType>
+        EncryptedKey newEncryptedKey(Element element) throws
+                XMLEncryptionException {
+            EncryptedKey result = null;
+			NodeList dataElements = element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_CIPHERDATA);
+            Element dataElement =
+				(Element) dataElements.item(dataElements.getLength() - 1);
+
+            CipherData data = newCipherData(dataElement);
+            result = newEncryptedKey(data);
+
+            try {
+                result.setId(element.getAttributeNS(
+                    null, EncryptionConstants._ATT_ID));
+                result.setType(new URI(
+                    element.getAttributeNS(
+                        null, EncryptionConstants._ATT_TYPE)).toString());
+                result.setMimeType(element.getAttributeNS(
+                    null, EncryptionConstants._ATT_MIMETYPE));
+                result.setEncoding(new URI(
+                    element.getAttributeNS(
+                        null, Constants._ATT_ENCODING)).toString());
+                result.setRecipient(element.getAttributeNS(
+                    null, EncryptionConstants._ATT_RECIPIENT));
+            } catch (URI.MalformedURIException mfue) {
+                // do nothing
+            }
+
+            Element encryptionMethodElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTIONMETHOD).item(0);
+            if (null != encryptionMethodElement) {
+                result.setEncryptionMethod(newEncryptionMethod(
+                    encryptionMethodElement));
+            }
+
+            Element keyInfoElement =
+                (Element) element.getElementsByTagNameNS(
+                    Constants.SignatureSpecNS, Constants._TAG_KEYINFO).item(0);
+            if (null != keyInfoElement) {
+				try {
+					result.setKeyInfo(new KeyInfo(keyInfoElement, null));
+				} catch (XMLSecurityException xse) {
+					throw new XMLEncryptionException("Error loading Key Info", 
+													 xse);
+				}
+            }
+
+            // TODO: Implement
+            Element encryptionPropertiesElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_ENCRYPTIONPROPERTIES).item(0);
+            if (null != encryptionPropertiesElement) {
+                result.setEncryptionProperties(
+                    newEncryptionProperties(encryptionPropertiesElement));
+            }
+
+            Element referenceListElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_REFERENCELIST).item(0);
+            if (null != referenceListElement) {
+                result.setReferenceList(newReferenceList(referenceListElement));
+            }
+
+            Element carriedNameElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_CARRIEDKEYNAME).item(0);
+            if (null != carriedNameElement) {
+                result.setCarriedName(carriedNameElement.getNodeValue());
+            }
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         *
+         */
+        // <complexType name='EncryptionMethodType' mixed='true'>
+        //     <sequence>
+        //         <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
+        //         <element name='OAEPparams' minOccurs='0' type='base64Binary'/>
+        //         <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+        //     </sequence>
+        //     <attribute name='Algorithm' type='anyURI' use='required'/>
+        // </complexType>
+        EncryptionMethod newEncryptionMethod(Element element) {
+            String algorithm = element.getAttributeNS(
+                null, EncryptionConstants._ATT_ALGORITHM);
+            EncryptionMethod result = newEncryptionMethod(algorithm);
+
+            Element keySizeElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_KEYSIZE).item(0);
+            if (null != keySizeElement) {
+                result.setKeySize(
+                    Integer.valueOf(
+                        keySizeElement.getFirstChild().getNodeValue()).intValue());
+            }
+
+            Element oaepParamsElement =
+                (Element) element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_OAEPPARAMS).item(0);
+            if (null != oaepParamsElement) {
+                result.setOAEPparams(
+                    oaepParamsElement.getNodeValue().getBytes());
+            }
+
+            // TODO: Make this mess work
+            // <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         *
+         */
+        // <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
+        // <complexType name='EncryptionPropertiesType'>
+        //     <sequence>
+        //         <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
+        //     </sequence>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        // </complexType>
+        EncryptionProperties newEncryptionProperties(Element element) {
+            EncryptionProperties result = newEncryptionProperties();
+
+            result.setId(element.getAttributeNS(
+                null, EncryptionConstants._ATT_ID));
+
+            NodeList encryptionPropertyList =
+                element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTIONPROPERTY);
+            for(int i = 0; i < encryptionPropertyList.getLength(); i++) {
+                Node n = encryptionPropertyList.item(i);
+                if (null != n) {
+                    result.addEncryptionProperty(
+                        newEncryptionProperty((Element) n));
+                }
+            }
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         *
+         */
+        // <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
+        // <complexType name='EncryptionPropertyType' mixed='true'>
+        //     <choice maxOccurs='unbounded'>
+        //         <any namespace='##other' processContents='lax'/>
+        //     </choice>
+        //     <attribute name='Target' type='anyURI' use='optional'/>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        //     <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+        // </complexType>
+        EncryptionProperty newEncryptionProperty(Element element) {
+            EncryptionProperty result = newEncryptionProperty();
+
+            try {
+                result.setTarget(new URI(
+                    element.getAttributeNS(
+                        null, EncryptionConstants._ATT_TARGET)).toString());
+            } catch (URI.MalformedURIException mfue) {
+                // do nothing
+            }
+            result.setId(element.getAttributeNS(
+                null, EncryptionConstants._ATT_ID));
+            // TODO: Make this lot work...
+            // <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+
+            // TODO: Make this work...
+            // <any namespace='##other' processContents='lax'/>
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         *
+         */
+        // <element name='ReferenceList'>
+        //     <complexType>
+        //         <choice minOccurs='1' maxOccurs='unbounded'>
+        //             <element name='DataReference' type='xenc:ReferenceType'/>
+        //             <element name='KeyReference' type='xenc:ReferenceType'/>
+        //         </choice>
+        //     </complexType>
+        // </element>
+        ReferenceList newReferenceList(Element element) {
+            int type = 0;
+            if (null != element.getElementsByTagNameNS(
+                EncryptionConstants.EncryptionSpecNS, 
+                EncryptionConstants._TAG_DATAREFERENCE).item(0)) {
+                type = ReferenceList.DATA_REFERENCE;
+            } else if (null != element.getElementsByTagNameNS(
+                EncryptionConstants.EncryptionSpecNS,
+                EncryptionConstants._TAG_KEYREFERENCE).item(0)) {
+                type = ReferenceList.KEY_REFERENCE;
+            } else {
+                // complain
+            }
+
+            ReferenceList result = new ReferenceListImpl(type);
+            NodeList list = null;
+            switch (type) {
+            case ReferenceList.DATA_REFERENCE:
+                list = element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_DATAREFERENCE);
+                for (int i = 0; i < list.getLength() ; i++) {
+		    String uri = ((Element) list.item(i)).getAttribute("URI");
+                    result.add(result.newDataReference(uri));
+                }
+		break;
+            case ReferenceList.KEY_REFERENCE:
+                list = element.getElementsByTagNameNS(
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_KEYREFERENCE);
+                for (int i = 0; i < list.getLength() ; i++) {
+                    String uri = ((Element) list.item(i)).getAttribute("URI");
+                    result.add(result.newKeyReference(uri));
+                }
+            }
+
+            return (result);
+        }
+
+        /**
+         * @param element
+         * @return
+         *
+         */
+        Transforms newTransforms(Element element) {
+            return (null);
+        }
+
+        /**
+         * @param agreementMethod
+         * @return
+         *
+         */
+        Element toElement(AgreementMethod agreementMethod) {
+            return ((AgreementMethodImpl) agreementMethod).toElement();
+        }
+
+        /**
+         * @param cipherData
+         * @return
+         *
+         */
+        Element toElement(CipherData cipherData) {
+            return ((CipherDataImpl) cipherData).toElement();
+        }
+
+        /**
+         * @param cipherReference
+         * @return
+         *
+         */
+        Element toElement(CipherReference cipherReference) {
+            return ((CipherReferenceImpl) cipherReference).toElement();
+        }
+
+        /**
+         * @param cipherValue
+         * @return
+         *
+         */
+        Element toElement(CipherValue cipherValue) {
+            return ((CipherValueImpl) cipherValue).toElement();
+        }
+
+        /**
+         * @param encryptedData
+         * @return
+         *
+         */
+        Element toElement(EncryptedData encryptedData) {
+            return ((EncryptedDataImpl) encryptedData).toElement();
+        }
+
+        /**
+         * @param encryptedKey
+         * @return
+         *
+         */
+        Element toElement(EncryptedKey encryptedKey) {
+            return ((EncryptedKeyImpl) encryptedKey).toElement();
+        }
+
+        /**
+         * @param encryptionMethod
+         * @return
+         *
+         */
+        Element toElement(EncryptionMethod encryptionMethod) {
+            return ((EncryptionMethodImpl) encryptionMethod).toElement();
+        }
+
+        /**
+         * @param encryptionProperties
+         * @return
+         *
+         */
+        Element toElement(EncryptionProperties encryptionProperties) {
+            return ((EncryptionPropertiesImpl) encryptionProperties).toElement();
+        }
+
+        /**
+         * @param encryptionProperty
+         * @return
+         *
+         */
+        Element toElement(EncryptionProperty encryptionProperty) {
+            return ((EncryptionPropertyImpl) encryptionProperty).toElement();
+        }
+
+        Element toElement(ReferenceList referenceList) {
+            return ((ReferenceListImpl) referenceList).toElement();
+        }
+
+        /**
+         * @param transforms
+         * @return
+         *
+         */
+        Element toElement(Transforms transforms) {
+            return ((TransformsImpl) transforms).toElement();
+        }
+
+        // <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+        // <complexType name="AgreementMethodType" mixed="true">
+        //     <sequence>
+        //         <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
+        //         <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+        //         <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+        //         <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+        //         <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+        //     </sequence>
+        //     <attribute name="Algorithm" type="anyURI" use="required"/>
+        // </complexType>
+        private class AgreementMethodImpl implements AgreementMethod {
+            private byte[] kaNonce = null;
+            private List agreementMethodInformation = null;
+            private KeyInfo originatorKeyInfo = null;
+            private KeyInfo recipientKeyInfo = null;
+            private String algorithmURI = null;
+
+            /**
+             * @param algorithm
+             */
+            public AgreementMethodImpl(String algorithm) {
+                agreementMethodInformation = new LinkedList();
+                URI tmpAlgorithm = null;
+                try {
+                    tmpAlgorithm = new URI(algorithm);
+                } catch (URI.MalformedURIException fmue) {
+                    //complain?
+                }
+                algorithmURI = tmpAlgorithm.toString();
+            }
+
+            /** @inheritDoc */
+            public byte[] getKANonce() {
+                return (kaNonce);
+            }
+
+            /** @inheritDoc */
+            public void setKANonce(byte[] kanonce) {
+                kaNonce = kanonce;
+            }
+
+            /** @inheritDoc */
+            public Iterator getAgreementMethodInformation() {
+                return (agreementMethodInformation.iterator());
+            }
+
+            /** @inheritDoc */
+            public void addAgreementMethodInformation(Element info) {
+                agreementMethodInformation.add(info);
+            }
+
+            /** @inheritDoc */
+            public void revoveAgreementMethodInformation(Element info) {
+                agreementMethodInformation.remove(info);
+            }
+
+            /** @inheritDoc */
+            public KeyInfo getOriginatorKeyInfo() {
+                return (originatorKeyInfo);
+            }
+
+            /** @inheritDoc */
+            public void setOriginatorKeyInfo(KeyInfo keyInfo) {
+                originatorKeyInfo = keyInfo;
+            }
+
+            /** @inheritDoc */
+            public KeyInfo getRecipientKeyInfo() {
+                return (recipientKeyInfo);
+            }
+
+            /** @inheritDoc */
+            public void setRecipientKeyInfo(KeyInfo keyInfo) {
+                recipientKeyInfo = keyInfo;
+            }
+
+            /** @inheritDoc */
+            public String getAlgorithm() {
+                return (algorithmURI);
+            }
+
+            /** @param algorithm*/
+            public void setAlgorithm(String algorithm) {
+                URI tmpAlgorithm = null;
+                try {
+                    tmpAlgorithm = new URI(algorithm);
+                } catch (URI.MalformedURIException mfue) {
+                    //complain
+                }
+                algorithm = tmpAlgorithm.toString();
+            }
+
+            // <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+            // <complexType name="AgreementMethodType" mixed="true">
+            //     <sequence>
+            //         <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
+            //         <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+            //         <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+            //         <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+            //         <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+            //     </sequence>
+            //     <attribute name="Algorithm" type="anyURI" use="required"/>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, 
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_AGREEMENTMETHOD);
+                result.setAttributeNS(
+                    null, EncryptionConstants._ATT_ALGORITHM, algorithmURI);
+                if (null != kaNonce) {
+                    result.appendChild(
+                        ElementProxy.createElementForFamily(
+                            _contextDocument, 
+                            EncryptionConstants.EncryptionSpecNS, 
+                            EncryptionConstants._TAG_KA_NONCE)).appendChild(
+                            _contextDocument.createTextNode(new String(kaNonce)));
+                }
+                if (!agreementMethodInformation.isEmpty()) {
+                    Iterator itr = agreementMethodInformation.iterator();
+                    while (itr.hasNext()) {
+                        result.appendChild((Element) itr.next());
+                    }
+                }
+                if (null != originatorKeyInfo) {
+                    result.appendChild(originatorKeyInfo.getElement());
+                }
+                if (null != recipientKeyInfo) {
+                    result.appendChild(recipientKeyInfo.getElement());
+                }
+
+                return (result);
+            }
+        }
+
+        // <element name='CipherData' type='xenc:CipherDataType'/>
+        // <complexType name='CipherDataType'>
+        //     <choice>
+        //         <element name='CipherValue' type='base64Binary'/>
+        //         <element ref='xenc:CipherReference'/>
+        //     </choice>
+        // </complexType>
+        private class CipherDataImpl implements CipherData {
+            private static final String valueMessage =
+                "Data type is reference type.";
+            private static final String referenceMessage =
+                "Data type is value type.";
+            private CipherValue cipherValue = null;
+            private CipherReference cipherReference = null;
+            private int cipherType = Integer.MIN_VALUE;
+
+            /**
+             * @param type
+             */
+            public CipherDataImpl(int type) {
+                cipherType = type;
+            }
+
+            /** @inheritDoc */
+            public CipherValue getCipherValue() {
+                return (cipherValue);
+            }
+
+            /** @inheritDoc */
+            public void setCipherValue(CipherValue value) throws
+                    XMLEncryptionException {
+
+                if (cipherType == REFERENCE_TYPE) {
+                    throw new XMLEncryptionException("empty",
+                        new UnsupportedOperationException(valueMessage));
+                }
+
+                cipherValue = value;
+            }
+
+            /** @inheritDoc */
+            public CipherReference getCipherReference() {
+                return (cipherReference);
+            }
+
+            /** @inheritDoc */
+            public void setCipherReference(CipherReference reference) throws
+                    XMLEncryptionException {
+                if (cipherType == VALUE_TYPE) {
+                    throw new XMLEncryptionException("empty",
+                        new UnsupportedOperationException(referenceMessage));
+                }
+
+                cipherReference = reference;
+            }
+
+            /** @inheritDoc */
+            public int getDataType() {
+                return (cipherType);
+            }
+
+            // <element name='CipherData' type='xenc:CipherDataType'/>
+            // <complexType name='CipherDataType'>
+            //     <choice>
+            //         <element name='CipherValue' type='base64Binary'/>
+            //         <element ref='xenc:CipherReference'/>
+            //     </choice>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, 
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_CIPHERDATA);
+                if (cipherType == VALUE_TYPE) {
+                    result.appendChild(
+                        ((CipherValueImpl) cipherValue).toElement());
+                } else if (cipherType == REFERENCE_TYPE) {
+                    result.appendChild(
+                        ((CipherReferenceImpl) cipherReference).toElement());
+                } else {
+                    // complain
+                }
+
+                return (result);
+            }
+        }
+
+        // <element name='CipherReference' type='xenc:CipherReferenceType'/>
+        // <complexType name='CipherReferenceType'>
+        //     <sequence>
+        //         <element name='Transforms' type='xenc:TransformsType' minOccurs='0'/>
+        //     </sequence>
+        //     <attribute name='URI' type='anyURI' use='required'/>
+        // </complexType>
+        private class CipherReferenceImpl implements CipherReference {
+            private String referenceURI = null;
+            private Transforms referenceTransforms = null;
+			private Attr referenceNode = null;
+
+            /**
+             * @param uri
+             */
+            public CipherReferenceImpl(String uri) {
+				/* Don't check validity of URI as may be "" */
+                referenceURI = uri;
+				referenceNode = null;
+            }
+
+			/**
+			 * @param uri
+			 */
+			public CipherReferenceImpl(Attr uri) {
+				referenceURI = uri.getNodeValue();
+				referenceNode = uri;
+			}
+
+            /** @inheritDoc */
+            public String getURI() {
+                return (referenceURI);
+            }
+
+            /** @inheritDoc */
+			public Attr getURIAsAttr() {
+				return (referenceNode);
+			}
+
+            /** @inheritDoc */
+            public Transforms getTransforms() {
+                return (referenceTransforms);
+            }
+
+            /** @inheritDoc */
+            public void setTransforms(Transforms transforms) {
+                referenceTransforms = transforms;
+            }
+
+            // <element name='CipherReference' type='xenc:CipherReferenceType'/>
+            // <complexType name='CipherReferenceType'>
+            //     <sequence>
+            //         <element name='Transforms' type='xenc:TransformsType' minOccurs='0'/>
+            //     </sequence>
+            //     <attribute name='URI' type='anyURI' use='required'/>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, 
+                    EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_CIPHERREFERENCE);
+                result.setAttributeNS(
+                    null, EncryptionConstants._ATT_URI, referenceURI);
+                if (null != referenceTransforms) {
+                    result.appendChild(
+                        ((TransformsImpl) referenceTransforms).toElement());
+                }
+
+                return (result);
+            }
+        }
+
+        private class CipherValueImpl implements CipherValue {
+			private String cipherValue = null;
+			
+            // public CipherValueImpl(byte[] value) {
+               // cipherValue = value;
+            // }
+
+            /**
+             * @param value
+             */
+            public CipherValueImpl(String value) {
+				// cipherValue = value.getBytes();
+				cipherValue = value;
+            }
+
+            /** @inheritDoc */
+			public String getValue() {
+                return (cipherValue);
+            }
+
+			// public void setValue(byte[] value) {
+			// public void setValue(String value) {
+               // cipherValue = value;
+            // }
+			/** @inheritDoc */
+            public void setValue(String value) {
+                // cipherValue = value.getBytes();
+				cipherValue = value;
+            }
+
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_CIPHERVALUE);
+                result.appendChild(_contextDocument.createTextNode(
+                    new String(cipherValue)));
+
+                return (result);
+            }
+        }
+
+        // <complexType name='EncryptedType' abstract='true'>
+        //     <sequence>
+        //         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+        //             minOccurs='0'/>
+        //         <element ref='ds:KeyInfo' minOccurs='0'/>
+        //         <element ref='xenc:CipherData'/>
+        //         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+        //     </sequence>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        //     <attribute name='Type' type='anyURI' use='optional'/>
+        //     <attribute name='MimeType' type='string' use='optional'/>
+        //     <attribute name='Encoding' type='anyURI' use='optional'/>
+        // </complexType>
+        // <element name='EncryptedData' type='xenc:EncryptedDataType'/>
+        // <complexType name='EncryptedDataType'>
+        //     <complexContent>
+        //         <extension base='xenc:EncryptedType'/>
+        //     </complexContent>
+        // </complexType>
+        private class EncryptedDataImpl extends EncryptedTypeImpl implements
+                EncryptedData {
+            /**
+             * @param data
+             */
+            public EncryptedDataImpl(CipherData data) {
+                super(data);
+            }
+
+            // <complexType name='EncryptedType' abstract='true'>
+            //     <sequence>
+            //         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+            //             minOccurs='0'/>
+            //         <element ref='ds:KeyInfo' minOccurs='0'/>
+            //         <element ref='xenc:CipherData'/>
+            //         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+            //     </sequence>
+            //     <attribute name='Id' type='ID' use='optional'/>
+            //     <attribute name='Type' type='anyURI' use='optional'/>
+            //     <attribute name='MimeType' type='string' use='optional'/>
+            //     <attribute name='Encoding' type='anyURI' use='optional'/>
+            // </complexType>
+            // <element name='EncryptedData' type='xenc:EncryptedDataType'/>
+            // <complexType name='EncryptedDataType'>
+            //     <complexContent>
+            //         <extension base='xenc:EncryptedType'/>
+            //     </complexContent>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTEDDATA);
+
+                if (null != super.getId()) {
+                    result.setAttributeNS(
+                        null, EncryptionConstants._ATT_ID, super.getId());
+                }
+                if (null != super.getType()) {
+                    result.setAttributeNS(
+                        null, EncryptionConstants._ATT_TYPE,
+                        super.getType().toString());
+                }
+                if (null != super.getMimeType()) {
+                    result.setAttributeNS(
+                        null, EncryptionConstants._ATT_MIMETYPE, 
+                        super.getMimeType());
+                }
+                if (null != super.getEncoding()) {
+                    result.setAttributeNS(
+                        null, EncryptionConstants._ATT_ENCODING, 
+                        super.getEncoding().toString());
+                }
+                if (null != super.getEncryptionMethod()) {
+                    result.appendChild(((EncryptionMethodImpl)
+                        super.getEncryptionMethod()).toElement());
+                }
+                if (null != super.getKeyInfo()) {
+                    result.appendChild(super.getKeyInfo().getElement());
+                }
+
+                result.appendChild(
+                    ((CipherDataImpl) super.getCipherData()).toElement());
+                if (null != super.getEncryptionProperties()) {
+                    result.appendChild(((EncryptionPropertiesImpl)
+                        super.getEncryptionProperties()).toElement());
+                }
+
+                return (result);
+            }
+        }
+
+        // <complexType name='EncryptedType' abstract='true'>
+        //     <sequence>
+        //         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+        //             minOccurs='0'/>
+        //         <element ref='ds:KeyInfo' minOccurs='0'/>
+        //         <element ref='xenc:CipherData'/>
+        //         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+        //     </sequence>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        //     <attribute name='Type' type='anyURI' use='optional'/>
+        //     <attribute name='MimeType' type='string' use='optional'/>
+        //     <attribute name='Encoding' type='anyURI' use='optional'/>
+        // </complexType>
+        // <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
+        // <complexType name='EncryptedKeyType'>
+        //     <complexContent>
+        //         <extension base='xenc:EncryptedType'>
+        //             <sequence>
+        //                 <element ref='xenc:ReferenceList' minOccurs='0'/>
+        //                 <element name='CarriedKeyName' type='string' minOccurs='0'/>
+        //             </sequence>
+        //             <attribute name='Recipient' type='string' use='optional'/>
+        //         </extension>
+        //     </complexContent>
+        // </complexType>
+        private class EncryptedKeyImpl extends EncryptedTypeImpl implements
+                EncryptedKey {
+            private String keyRecipient = null;
+            private ReferenceList referenceList = null;
+            private String carriedName = null;
+
+            /**
+             * @param data
+             */
+            public EncryptedKeyImpl(CipherData data) {
+                super(data);
+            }
+
+            /** @inheritDoc */
+            public String getRecipient() {
+                return (keyRecipient);
+            }
+
+            /** @inheritDoc */
+            public void setRecipient(String recipient) {
+                keyRecipient = recipient;
+            }
+
+            /** @inheritDoc */
+            public ReferenceList getReferenceList() {
+                return (referenceList);
+            }
+
+            /** @inheritDoc */
+            public void setReferenceList(ReferenceList list) {
+                referenceList = list;
+            }
+
+            /** @inheritDoc */
+            public String getCarriedName() {
+                return (carriedName);
+            }
+
+            /** @inheritDoc */
+            public void setCarriedName(String name) {
+                carriedName = name;
+            }
+
+            // <complexType name='EncryptedType' abstract='true'>
+            //     <sequence>
+            //         <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+            //             minOccurs='0'/>
+            //         <element ref='ds:KeyInfo' minOccurs='0'/>
+            //         <element ref='xenc:CipherData'/>
+            //         <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+            //     </sequence>
+            //     <attribute name='Id' type='ID' use='optional'/>
+            //     <attribute name='Type' type='anyURI' use='optional'/>
+            //     <attribute name='MimeType' type='string' use='optional'/>
+            //     <attribute name='Encoding' type='anyURI' use='optional'/>
+            // </complexType>
+            // <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
+            // <complexType name='EncryptedKeyType'>
+            //     <complexContent>
+            //         <extension base='xenc:EncryptedType'>
+            //             <sequence>
+            //                 <element ref='xenc:ReferenceList' minOccurs='0'/>
+            //                 <element name='CarriedKeyName' type='string' minOccurs='0'/>
+            //             </sequence>
+            //             <attribute name='Recipient' type='string' use='optional'/>
+            //         </extension>
+            //     </complexContent>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTEDKEY);
+
+                if (null != super.getId()) {
+                    result.setAttributeNS(
+                        null, EncryptionConstants._ATT_ID, super.getId());
+                }
+                if (null != super.getType()) {
+                    result.setAttributeNS(
+                        null, EncryptionConstants._ATT_TYPE, 
+                        super.getType().toString());
+                }
+                if (null != super.getMimeType()) {
+                    result.setAttributeNS(null, 
+                        EncryptionConstants._ATT_MIMETYPE, super.getMimeType());
+                }
+                if (null != super.getEncoding()) {
+                    result.setAttributeNS(null, Constants._ATT_ENCODING,
+                        super.getEncoding().toString());
+                }
+                if (null != getRecipient()) {
+                    result.setAttributeNS(null, 
+                        EncryptionConstants._ATT_RECIPIENT, getRecipient());
+                }
+                if (null != super.getEncryptionMethod()) {
+                    result.appendChild(((EncryptionMethodImpl)
+                        super.getEncryptionMethod()).toElement());
+                }
+                if (null != super.getKeyInfo()) {
+                    result.appendChild(super.getKeyInfo().getElement());
+                }
+                result.appendChild(
+                    ((CipherDataImpl) super.getCipherData()).toElement());
+                if (null != super.getEncryptionProperties()) {
+                    result.appendChild(((EncryptionPropertiesImpl)
+                        super.getEncryptionProperties()).toElement());
+                }
+                if (referenceList != null && !referenceList.isEmpty()) {
+                    result.appendChild(((ReferenceListImpl)
+                        getReferenceList()).toElement());
+                }
+                if (null != carriedName) {
+                    Element element = ElementProxy.createElementForFamily(
+			_contextDocument, 
+                        EncryptionConstants.EncryptionSpecNS, 
+                        EncryptionConstants._TAG_CARRIEDKEYNAME);
+                    Node node = _contextDocument.createTextNode(carriedName);
+                    element.appendChild(node);
+                    result.appendChild(element);
+                }
+
+                return (result);
+            }
+        }
+
+        private abstract class EncryptedTypeImpl {
+            private String id =  null;
+            private String type = null;
+            private String mimeType = null;
+            private String encoding = null;
+            private EncryptionMethod encryptionMethod = null;
+            private KeyInfo keyInfo = null;
+            private CipherData cipherData = null;
+            private EncryptionProperties encryptionProperties = null;
+
+            protected EncryptedTypeImpl(CipherData data) {
+                cipherData = data;
+            }
+            /** 
+             * 
+             * @return
+             */
+            public String getId() {
+                return (id);
+            }
+            /**
+             * 
+             * @param id
+             */
+            public void setId(String id) {
+                this.id = id;
+            }
+            /**
+             * 
+             * @return
+             */
+            public String getType() {
+                return (type);
+            }
+            /**
+             * 
+             * @param type
+             */
+            public void setType(String type) {
+                URI tmpType = null;
+                try {
+                    tmpType = new URI(type);
+                } catch (URI.MalformedURIException mfue) {
+                    // complain
+                }
+                this.type = tmpType.toString();
+            }
+            /**
+             * 
+             * @return
+             */
+            public String getMimeType() {
+                return (mimeType);
+            }
+            /**
+             * 
+             * @param type
+             */
+            public void setMimeType(String type) {
+                mimeType = type;
+            }
+            /**
+             * 
+             * @return
+             */
+            public String getEncoding() {
+                return (encoding);
+            }
+            /**
+             * 
+             * @param encoding
+             */
+            public void setEncoding(String encoding) {
+                URI tmpEncoding = null;
+                try {
+                    tmpEncoding = new URI(encoding);
+                } catch (URI.MalformedURIException mfue) {
+                    // complain
+                }
+                this.encoding = tmpEncoding.toString();
+            }
+            /**
+             * 
+             * @return
+             */
+            public EncryptionMethod getEncryptionMethod() {
+                return (encryptionMethod);
+            }
+            /**
+             * 
+             * @param method
+             */
+            public void setEncryptionMethod(EncryptionMethod method) {
+                encryptionMethod = method;
+            }
+            /**
+             * 
+             * @return
+             */
+            public KeyInfo getKeyInfo() {
+                return (keyInfo);
+            }
+            /**
+             * 
+             * @param info
+             */
+            public void setKeyInfo(KeyInfo info) {
+                keyInfo = info;
+            }
+            /**
+             * 
+             * @return
+             */
+            public CipherData getCipherData() {
+                return (cipherData);
+            }
+            /**
+             * 
+             * @return
+             */
+            public EncryptionProperties getEncryptionProperties() {
+                return (encryptionProperties);
+            }
+            /**
+             * 
+             * @param properties
+             */
+            public void setEncryptionProperties(
+                    EncryptionProperties properties) {
+                encryptionProperties = properties;
+            }
+        }
+
+        // <complexType name='EncryptionMethodType' mixed='true'>
+        //     <sequence>
+        //         <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
+        //         <element name='OAEPparams' minOccurs='0' type='base64Binary'/>
+        //         <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+        //     </sequence>
+        //     <attribute name='Algorithm' type='anyURI' use='required'/>
+        // </complexType>
+        private class EncryptionMethodImpl implements EncryptionMethod {
+            private String algorithm = null;
+            private int keySize = Integer.MIN_VALUE;
+            private byte[] oaepParams = null;
+            private List encryptionMethodInformation = null;
+            /**
+             * 
+             * @param algorithm
+             */
+            public EncryptionMethodImpl(String algorithm) {
+                URI tmpAlgorithm = null;
+                try {
+                    tmpAlgorithm = new URI(algorithm);
+                } catch (URI.MalformedURIException mfue) {
+                    // complain
+                }
+                this.algorithm = tmpAlgorithm.toString();
+                encryptionMethodInformation = new LinkedList();
+            }
+            /** @inheritDoc */
+            public String getAlgorithm() {
+                return (algorithm);
+            }
+            /** @inheritDoc */
+            public int getKeySize() {
+                return (keySize);
+            }
+            /** @inheritDoc */
+            public void setKeySize(int size) {
+                keySize = size;
+            }
+            /** @inheritDoc */
+            public byte[] getOAEPparams() {
+                return (oaepParams);
+            }
+            /** @inheritDoc */
+            public void setOAEPparams(byte[] params) {
+                oaepParams = params;
+            }
+            /** @inheritDoc */
+            public Iterator getEncryptionMethodInformation() {
+                return (encryptionMethodInformation.iterator());
+            }
+            /** @inheritDoc */
+            public void addEncryptionMethodInformation(Element info) {
+                encryptionMethodInformation.add(info);
+            }
+            /** @inheritDoc */
+            public void removeEncryptionMethodInformation(Element info) {
+                encryptionMethodInformation.remove(info);
+            }
+
+            // <complexType name='EncryptionMethodType' mixed='true'>
+            //     <sequence>
+            //         <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
+            //         <element name='OAEPparams' minOccurs='0' type='base64Binary'/>
+            //         <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+            //     </sequence>
+            //     <attribute name='Algorithm' type='anyURI' use='required'/>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTIONMETHOD);
+                result.setAttributeNS(null, EncryptionConstants._ATT_ALGORITHM, 
+                    algorithm.toString());
+                if (keySize > 0) {
+                    result.appendChild(
+                        ElementProxy.createElementForFamily(_contextDocument, 
+                            EncryptionConstants.EncryptionSpecNS, 
+                            EncryptionConstants._TAG_KEYSIZE).appendChild(
+                            _contextDocument.createTextNode(
+                                String.valueOf(keySize))));
+                }
+                if (null != oaepParams) {
+                    result.appendChild(
+                        ElementProxy.createElementForFamily(_contextDocument, 
+                            EncryptionConstants.EncryptionSpecNS, 
+                            EncryptionConstants._TAG_OAEPPARAMS).appendChild(
+                            _contextDocument.createTextNode(
+                                new String(oaepParams))));
+                }
+                if (!encryptionMethodInformation.isEmpty()) {
+                    Iterator itr = encryptionMethodInformation.iterator();
+                    result.appendChild((Element) itr.next());
+                }
+
+                return (result);
+            }
+        }
+
+        // <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
+        // <complexType name='EncryptionPropertiesType'>
+        //     <sequence>
+        //         <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
+        //     </sequence>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        // </complexType>
+        private class EncryptionPropertiesImpl implements EncryptionProperties {
+            private String id = null;
+            private List encryptionProperties = null;
+            /**
+             * 
+             *
+             */
+            public EncryptionPropertiesImpl() {
+                encryptionProperties = new LinkedList();
+            }
+            /** @inheritDoc */
+            public String getId() {
+                return (id);
+            }
+            /** @inheritDoc */
+            public void setId(String id) {
+                this.id = id;
+            }
+            /** @inheritDoc */
+            public Iterator getEncryptionProperties() {
+                return (encryptionProperties.iterator());
+            }
+            /** @inheritDoc */
+            public void addEncryptionProperty(EncryptionProperty property) {
+                encryptionProperties.add(property);
+            }
+            /** @inheritDoc */
+            public void removeEncryptionProperty(EncryptionProperty property) {
+                encryptionProperties.remove(property);
+            }
+
+            // <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
+            // <complexType name='EncryptionPropertiesType'>
+            //     <sequence>
+            //         <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
+            //     </sequence>
+            //     <attribute name='Id' type='ID' use='optional'/>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTIONPROPERTIES);
+                if (null != id) {
+                    result.setAttributeNS(null, EncryptionConstants._ATT_ID, id);
+                }
+                Iterator itr = getEncryptionProperties();
+                while (itr.hasNext()) {
+                    result.appendChild(((EncryptionPropertyImpl)
+                        itr.next()).toElement());
+                }
+
+                return (result);
+            }
+        }
+
+        // <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
+        // <complexType name='EncryptionPropertyType' mixed='true'>
+        //     <choice maxOccurs='unbounded'>
+        //         <any namespace='##other' processContents='lax'/>
+        //     </choice>
+        //     <attribute name='Target' type='anyURI' use='optional'/>
+        //     <attribute name='Id' type='ID' use='optional'/>
+        //     <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+        // </complexType>
+        private class EncryptionPropertyImpl implements EncryptionProperty {
+            private String target = null;
+            private String id = null;
+            private String attributeName = null;
+            private String attributeValue = null;
+            private List encryptionInformation = null;
+
+            /**
+             * 
+             *
+             */
+            public EncryptionPropertyImpl() {
+                encryptionInformation = new LinkedList();
+            }
+            /** @inheritDoc */
+            public String getTarget() {
+                return (target);
+            }
+            /** @inheritDoc */
+            public void setTarget(String target) {
+                URI tmpTarget = null;
+                try {
+                    tmpTarget = new URI(target);
+                } catch (URI.MalformedURIException mfue) {
+                    // complain
+                }
+                this.target = tmpTarget.toString();
+            }
+            /** @inheritDoc */
+            public String getId() {
+                return (id);
+            }
+            /** @inheritDoc */
+            public void setId(String id) {
+                this.id = id;
+            }
+            /** @inheritDoc */
+            public String getAttribute(String attribute) {
+                return (attributeValue);
+            }
+            /** @inheritDoc */
+            public void setAttribute(String attribute, String value) {
+                attributeName = attribute;
+                attributeValue = value;
+            }
+            /** @inheritDoc */
+            public Iterator getEncryptionInformation() {
+                return (encryptionInformation.iterator());
+            }
+            /** @inheritDoc */
+            public void addEncryptionInformation(Element info) {
+                encryptionInformation.add(info);
+            }
+            /** @inheritDoc */
+            public void removeEncryptionInformation(Element info) {
+                encryptionInformation.remove(info);
+            }
+
+            // <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
+            // <complexType name='EncryptionPropertyType' mixed='true'>
+            //     <choice maxOccurs='unbounded'>
+            //         <any namespace='##other' processContents='lax'/>
+            //     </choice>
+            //     <attribute name='Target' type='anyURI' use='optional'/>
+            //     <attribute name='Id' type='ID' use='optional'/>
+            //     <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+            // </complexType>
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument, EncryptionConstants.EncryptionSpecNS, 
+                    EncryptionConstants._TAG_ENCRYPTIONPROPERTY);
+                if (null != target) {
+                    result.setAttributeNS(null, EncryptionConstants._ATT_TARGET, 
+                        target.toString());
+                }
+                if (null != id) {
+                    result.setAttributeNS(null, EncryptionConstants._ATT_ID, 
+                        id);
+                }
+                // TODO: figure out the anyAttribyte stuff...
+                // TODO: figure out the any stuff...
+
+                return (result);
+            }
+        }
+
+        // <complexType name='TransformsType'>
+        //     <sequence>
+        //         <element ref='ds:Transform' maxOccurs='unbounded'/>
+        //     </sequence>
+        // </complexType>
+        private class TransformsImpl extends
+		       org.apache.xml.security.transforms.Transforms 
+		       implements Transforms {
+
+			/**
+			 * Construct Transforms
+			 */
+
+			public TransformsImpl() {
+				super(_contextDocument);
+			}
+			/**
+             * 
+			 * @param doc
+			 */
+			public TransformsImpl(Document doc) {
+				super(doc);
+			}
+			/**
+             * 
+			 * @param element
+			 * @throws XMLSignatureException
+			 * @throws InvalidTransformException
+			 * @throws XMLSecurityException
+			 * @throws TransformationException
+			 */
+			public TransformsImpl(Element element) 
+				throws XMLSignatureException,
+			           InvalidTransformException,
+				       XMLSecurityException,
+				       TransformationException {
+
+				super(element, "");
+				
+			}
+
+            /** 
+             * 
+             * @return
+             */
+			public Element toElement() {
+
+				if (_doc == null)
+					_doc = _contextDocument;
+
+				return getElement();
+			}
+
+            /** @inheritDoc */
+			public org.apache.xml.security.transforms.Transforms getDSTransforms() {
+				return (this);
+			}
+
+
+			// Over-ride the namespace
+            /** @inheritDoc */
+			public String getBaseNamespace() {
+				return EncryptionConstants.EncryptionSpecNS;
+			}
+
+        }
+
+        //<element name='ReferenceList'>
+        //    <complexType>
+        //        <choice minOccurs='1' maxOccurs='unbounded'>
+        //            <element name='DataReference' type='xenc:ReferenceType'/>
+        //            <element name='KeyReference' type='xenc:ReferenceType'/>
+        //        </choice>
+        //    </complexType>
+        //</element>
+        private class ReferenceListImpl implements ReferenceList {
+            private Class sentry;
+            private List references;
+            /**
+             * 
+             * @param type
+             */
+            public ReferenceListImpl(int type) {
+                if (type == ReferenceList.DATA_REFERENCE) {
+                    sentry = DataReference.class;
+                } else if (type == ReferenceList.KEY_REFERENCE) {
+                    sentry = KeyReference.class;
+                } else {
+                    throw new IllegalArgumentException();
+                }
+                references = new LinkedList();
+            }
+            /** @inheritDoc */
+            public void add(Reference reference) {
+                if (!reference.getClass().equals(sentry)) {
+                    throw new IllegalArgumentException();     
+                }
+                 references.add(reference);                
+            }
+            /** @inheritDoc */
+            public void remove(Reference reference) {
+                if (!reference.getClass().equals(sentry)) {
+                    throw new IllegalArgumentException();
+                }
+                references.remove(reference);
+            }
+            /** @inheritDoc */
+            public int size() {
+                return (references.size());
+            }
+            /** @inheritDoc */
+            public boolean isEmpty() {
+                return (references.isEmpty());
+            }
+            /** @inheritDoc */
+            public Iterator getReferences() {
+                return (references.iterator());
+            }
+
+            Element toElement() {
+                Element result = ElementProxy.createElementForFamily(
+                    _contextDocument,
+                    EncryptionConstants.EncryptionSpecNS,
+                    EncryptionConstants._TAG_REFERENCELIST);
+                Iterator eachReference = references.iterator();
+                while (eachReference.hasNext()) {
+                    Reference reference = (Reference) eachReference.next();
+                    result.appendChild(
+                        ((ReferenceImpl) reference).toElement());
+                }
+                return (result);
+            }
+            /** @inheritDoc */
+            public Reference newDataReference(String uri) {
+                return (new DataReference(uri));
+            }
+            /** @inheritDoc */
+            public Reference newKeyReference(String uri) {
+                return (new KeyReference(uri));
+            }
+
+            /**
+             * <code>ReferenceImpl</code> is an implementation of
+             * <code>Reference</code>.
+             *
+             * @see Reference
+             */
+            private abstract class ReferenceImpl implements Reference {
+                private String uri;
+                private List referenceInformation;
+
+                ReferenceImpl(String _uri) {
+                    this.uri = _uri;
+                    referenceInformation = new LinkedList();
+                }
+                /** @inheritDoc */
+                public String getURI() {
+                    return (uri);
+                }
+                /** @inheritDoc */
+                public Iterator getElementRetrievalInformation() {
+                    return (referenceInformation.iterator());
+                }
+                /** @inheritDoc */
+                public void setURI(String _uri) {
+                	this.uri = _uri;
+                }
+                /** @inheritDoc */
+                public void removeElementRetrievalInformation(Element node) {
+                    referenceInformation.remove(node);
+                }
+                /** @inheritDoc */
+                public void addElementRetrievalInformation(Element node) {
+                    referenceInformation.add(node);
+                }
+                /**
+                 * 
+                 * @return
+                 */
+                public abstract Element toElement();
+
+                Element toElement(String tagName) {
+                    Element result = ElementProxy.createElementForFamily(
+                        _contextDocument,
+                        EncryptionConstants.EncryptionSpecNS,
+                        tagName);
+                    result.setAttribute(EncryptionConstants._ATT_URI, uri);
+
+                    // TODO: Need to martial referenceInformation
+                    // Figure out how to make this work..
+                    // <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+
+                    return (result);
+                }
+            }
+
+            private class DataReference extends ReferenceImpl {
+                DataReference(String uri) {
+                    super(uri);
+                }
+                /** @inheritDoc */
+                public Element toElement() {
+                    return super.toElement(EncryptionConstants._TAG_DATAREFERENCE);
+                }
+            }
+
+            private class KeyReference extends ReferenceImpl {
+                KeyReference(String uri) {
+                    super (uri);
+                }
+                /** @inheritDoc */
+                public Element toElement() {
+                    return super.toElement(EncryptionConstants._TAG_KEYREFERENCE);
+                }
+            }
+        }
+    }
+}
diff --git a/src/org/apache/xml/security/encryption/XMLCipherInput.java b/src/org/apache/xml/security/encryption/XMLCipherInput.java
new file mode 100644
index 0000000..f2ead3b
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/XMLCipherInput.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.encryption;
+
+import java.io.IOException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformationException;
+import org.w3c.dom.Attr;
+import org.apache.xml.security.utils.Base64;
+
+
+/**
+ * <code>XMLCipherInput</code> is used to wrap input passed into the
+ * XMLCipher encryption operations.
+ *
+ * In decryption mode, it takes a <code>CipherData</code> object and allows
+ * callers to dereference the CipherData into the encrypted bytes that it
+ * actually represents.  This takes care of all base64 encoding etc.
+ *
+ * While primarily an internal class, this can be used by applications to
+ * quickly and easily retrieve the encrypted bytes from an EncryptedType
+ * object
+ *
+ * @author Berin Lautenbach
+ */
+public class XMLCipherInput {
+
+    private static org.apache.commons.logging.Log logger = 
+        org.apache.commons.logging.LogFactory.getLog(XMLCipher.class.getName());
+
+	/** The data we are working with */
+	private CipherData _cipherData;
+
+	/** MODES */
+	private int _mode;
+
+	/**
+	 * Constructor for processing encrypted octets
+	 *
+	 * @param data The <code>CipherData</code> object to read the bytes from
+	 * @throws XMLEncryptionException {@link XMLEncryptionException}
+	 */
+
+	public XMLCipherInput(CipherData data) throws XMLEncryptionException {
+
+		_cipherData = data;
+		_mode = XMLCipher.DECRYPT_MODE;
+		if (_cipherData == null) {
+			throw new XMLEncryptionException("CipherData is null");
+		}
+
+	}
+
+	/**
+	 * Constructor for processing encrypted octets
+	 *
+	 * @param input The <code>EncryptedType</code> object to read 
+	 * the bytes from.
+	 * @throws XMLEncryptionException {@link XMLEncryptionException}
+	 */
+
+	public XMLCipherInput(EncryptedType input) throws XMLEncryptionException {
+
+		_cipherData = ((input == null) ? null : input.getCipherData());
+		_mode = XMLCipher.DECRYPT_MODE;
+		if (_cipherData == null) {
+			throw new XMLEncryptionException("CipherData is null");
+		}
+
+	}
+
+	/**
+	 * Dereferences the input and returns it as a single byte array.
+	 *
+	 * @throws XMLEncryptionException
+     * @return The decripted bytes.
+	 */
+
+	public byte[] getBytes() throws XMLEncryptionException {
+
+		if (_mode == XMLCipher.DECRYPT_MODE) {
+			return getDecryptBytes();
+		}
+		return null;
+	}
+
+	/**
+	 * Internal method to get bytes in decryption mode
+     * @return the decripted bytes
+     * @throws XMLEncryptionException
+	 */
+
+	private byte[] getDecryptBytes() throws XMLEncryptionException {
+
+		String base64EncodedEncryptedOctets = null;
+
+        if (_cipherData.getDataType() == CipherData.REFERENCE_TYPE) {
+			// Fun time!
+			logger.debug("Found a reference type CipherData");
+			CipherReference cr = _cipherData.getCipherReference();
+
+			// Need to wrap the uri in an Attribute node so that we can
+			// Pass to the resource resolvers
+
+			Attr uriAttr = cr.getURIAsAttr();
+			XMLSignatureInput input = null;
+
+			try {
+				ResourceResolver resolver = 
+					ResourceResolver.getInstance(uriAttr, null);
+				input = resolver.resolve(uriAttr, null);
+			} catch (ResourceResolverException ex) {
+				throw new XMLEncryptionException("empty", ex);
+			} 
+
+			if (input != null) {
+				logger.debug("Managed to resolve URI \"" + cr.getURI() + "\"");
+			}
+			else {
+				logger.debug("Failed to resolve URI \"" + cr.getURI() + "\"");
+			}
+		
+			// Lets see if there are any transforms
+			Transforms transforms = cr.getTransforms();
+			if (transforms != null) {
+				logger.debug ("Have transforms in cipher reference");
+				try {
+ 				    org.apache.xml.security.transforms.Transforms dsTransforms =
+						transforms.getDSTransforms();
+				    input =	dsTransforms.performTransforms(input);
+				} catch (TransformationException ex) {
+					throw new XMLEncryptionException("empty", ex);
+				}
+			}
+
+			try {
+				return input.getBytes();
+			}
+			catch (IOException ex) {
+				throw new XMLEncryptionException("empty", ex);
+			} catch (CanonicalizationException ex) {
+				throw new XMLEncryptionException("empty", ex);
+			}
+			
+            // retrieve the cipher text
+        } else if (_cipherData.getDataType() == CipherData.VALUE_TYPE) {
+            CipherValue cv = _cipherData.getCipherValue();
+            base64EncodedEncryptedOctets = new String(cv.getValue());
+        } else {
+			throw new XMLEncryptionException("CipherData.getDataType() returned unexpected value");
+		}
+
+        logger.debug("Encrypted octets:\n" + base64EncodedEncryptedOctets);
+
+        byte[] encryptedBytes = null;
+
+        try {
+			encryptedBytes = Base64.decode(base64EncodedEncryptedOctets);
+        } catch (Base64DecodingException bde) {
+            throw new XMLEncryptionException("empty", bde);
+        }
+
+		return (encryptedBytes);
+
+	}
+
+}
+
+
diff --git a/src/org/apache/xml/security/encryption/XMLCipherParameters.java b/src/org/apache/xml/security/encryption/XMLCipherParameters.java
new file mode 100644
index 0000000..3829f0a
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/XMLCipherParameters.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.encryption;
+
+
+/**
+ * Constants
+ */
+public interface XMLCipherParameters {
+
+    /** */
+    public static final String AES_128 =
+        "http://www.w3.org/2001/04/xmlenc#aes128-cbc";
+
+    /**  */
+    public static final String AES_256 =
+        "http://www.w3.org/2001/04/xmlenc#aes256-cbc";
+
+    /**  */
+    public static final String AES_192 =
+        "http://www.w3.org/2001/04/xmlenc#aes192-cbc";
+
+    /**  */
+    public static final String RSA_1_5 =
+        "http://www.w3.org/2001/04/xmlenc#rsa-1_5";
+
+    /**  */
+    public static final String RSA_OAEP =
+        "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p";
+
+    /**  */
+    public static final String DIFFIE_HELLMAN =
+        "http://www.w3.org/2001/04/xmlenc#dh";
+
+    /**  */
+    public static final String TRIPLEDES_KEYWRAP =
+        "http://www.w3.org/2001/04/xmlenc#kw-tripledes";
+
+    /**  */
+    public static final String AES_128_KEYWRAP =
+        "http://www.w3.org/2001/04/xmlenc#kw-aes128";
+
+    /**  */
+    public static final String AES_256_KEYWRAP =
+        "http://www.w3.org/2001/04/xmlenc#kw-aes256";
+
+    /**  */
+    public static final String AES_192_KEYWRAP =
+        "http://www.w3.org/2001/04/xmlenc#kw-aes192";
+
+    /**  */
+    public static final String SHA1 =
+        "http://www.w3.org/2000/09/xmldsig#sha1";
+
+    /**  */
+    public static final String SHA256 =
+        "http://www.w3.org/2001/04/xmlenc#sha256";
+
+    /**  */
+    public static final String SHA512 =
+        "http://www.w3.org/2001/04/xmlenc#sha512";
+
+    /**  */
+    public static final String RIPEMD_160 =
+        "http://www.w3.org/2001/04/xmlenc#ripemd160";
+
+    /**  */
+    public static final String XML_DSIG =
+        "http://www.w3.org/2000/09/xmldsig#";
+
+    /**  */
+    public static final String N14C_XML =
+        "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
+
+    /**  */
+    public static final String N14C_XML_CMMNTS =
+        "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments";
+
+    /**  */
+    public static final String EXCL_XML_N14C =
+        "http://www.w3.org/2001/10/xml-exc-c14n#";
+
+    /**  */
+    public static final String EXCL_XML_N14C_CMMNTS =
+        "http://www.w3.org/2001/10/xml-exc-c14n#WithComments";
+}
diff --git a/src/org/apache/xml/security/encryption/XMLEncryptionException.java b/src/org/apache/xml/security/encryption/XMLEncryptionException.java
new file mode 100644
index 0000000..3000f52
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/XMLEncryptionException.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright  2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.encryption;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+/**
+ * 
+ */
+public class XMLEncryptionException extends XMLSecurityException {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	/**
+     * 
+	 *
+	 */
+   public XMLEncryptionException() {
+      super();
+   }
+   /**
+    * 
+    * @param _msgID
+    */
+   public XMLEncryptionException(String _msgID) {
+      super(_msgID);
+   }
+   /**
+    * 
+    * @param _msgID
+    * @param exArgs
+    */
+   public XMLEncryptionException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+   /**
+    * 
+    * @param _msgID
+    * @param _originalException
+    */
+   public XMLEncryptionException(String _msgID,
+                                              Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+   /**
+    * 
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public XMLEncryptionException(String _msgID, Object exArgs[],
+                                              Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/encryption/package.html b/src/org/apache/xml/security/encryption/package.html
new file mode 100644
index 0000000..d4209d2
--- /dev/null
+++ b/src/org/apache/xml/security/encryption/package.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title></title>
+</head>
+<body>
+Provides classes for implementing XML Encryption applications. There are two
+main families of classes in this package. The first group of classes is an
+XML Schema to Java mapping of &nbsp;the complex types and elements of the
+XML Encryption Schema as outllined at <a
+ href="http://www.w3.org/Encryption/2001/Drafts/xmlenc-core/">XML Encrtypyion
+Specification</a>. The second group of classes are used to perform encryption
+operations, and to manipulate the first group of classes. The most important
+classes in this second group is <code><a
+ href="file://./org/apache/xml/security/encryption/XMLCipher.html">XMLCipher</a></code>,
+<code><a
+ href="file://./org/apache/xml/security/encryption/XMLEncryptionFactory.html">XMLEncryptionFactory</a></code>
+and <code>XMLSerializer</code>. <code>XMLCipher</code> was designed to resemble
+<code>javax.crypto.Cipher</code>. The aforementioned classes were desinged
+with ease-of-use and configurability in mind. Becuase of this, the programmer
+may at times be exposed to lower level programming tasks. This library strives
+to be as simple as possible to use, but no simpler.<br>
+<br>
+</body>
+</html>
diff --git a/src/org/apache/xml/security/exceptions/AlgorithmAlreadyRegisteredException.java b/src/org/apache/xml/security/exceptions/AlgorithmAlreadyRegisteredException.java
new file mode 100644
index 0000000..8cc427f
--- /dev/null
+++ b/src/org/apache/xml/security/exceptions/AlgorithmAlreadyRegisteredException.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.exceptions;
+
+
+
+/**
+ *
+ *
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ *
+ */
+public class AlgorithmAlreadyRegisteredException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor AlgorithmAlreadyRegisteredException
+    *
+    */
+   public AlgorithmAlreadyRegisteredException() {
+      super();
+   }
+
+   /**
+    * Constructor AlgorithmAlreadyRegisteredException
+    *
+    * @param _msgID
+    */
+   public AlgorithmAlreadyRegisteredException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor AlgorithmAlreadyRegisteredException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public AlgorithmAlreadyRegisteredException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor AlgorithmAlreadyRegisteredException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public AlgorithmAlreadyRegisteredException(String _msgID,
+                                              Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor AlgorithmAlreadyRegisteredException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public AlgorithmAlreadyRegisteredException(String _msgID, Object exArgs[],
+                                              Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/exceptions/Base64DecodingException.java b/src/org/apache/xml/security/exceptions/Base64DecodingException.java
new file mode 100644
index 0000000..bdae3df
--- /dev/null
+++ b/src/org/apache/xml/security/exceptions/Base64DecodingException.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.exceptions;
+
+
+
+/**
+ * This Exception is thrown if decoding of Base64 data fails.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Base64DecodingException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor Base64DecodingException
+    *
+    */
+   public Base64DecodingException() {
+      super();
+   }
+
+   /**
+    * Constructor Base64DecodingException
+    *
+    * @param _msgID
+    */
+   public Base64DecodingException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor Base64DecodingException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public Base64DecodingException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor Base64DecodingException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public Base64DecodingException(String _msgID,
+                                              Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor Base64DecodingException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public Base64DecodingException(String _msgID, Object exArgs[],
+                                              Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/exceptions/XMLSecurityException.java b/src/org/apache/xml/security/exceptions/XMLSecurityException.java
new file mode 100644
index 0000000..ca650cc
--- /dev/null
+++ b/src/org/apache/xml/security/exceptions/XMLSecurityException.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.exceptions;
+
+
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.text.MessageFormat;
+
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.I18n;
+
+
+/**
+ * The mother of all Exceptions in this bundle. It allows exceptions to have
+ * their messages translated to the different locales.
+ *
+ * The <code>xmlsecurity_en.properties</code> file contains this line:
+ * <pre>
+ * xml.WrongElement = Can't create a {0} from a {1} element
+ * </pre>
+ *
+ * Usage in the Java source is:
+ * <pre>
+ * {
+ *    Object exArgs[] = { Constants._TAG_TRANSFORMS, "BadElement" };
+ *
+ *    throw new XMLSecurityException("xml.WrongElement", exArgs);
+ * }
+ * </pre>
+ *
+ * Additionally, if another Exception has been caught, we can supply it, too>
+ * <pre>
+ * try {
+ *    ...
+ * } catch (Exception oldEx) {
+ *    Object exArgs[] = { Constants._TAG_TRANSFORMS, "BadElement" };
+ *
+ *    throw new XMLSecurityException("xml.WrongElement", exArgs, oldEx);
+ * }
+ * </pre>
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class XMLSecurityException extends Exception {
+
+	
+	
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /** Field originalException */
+   protected Exception originalException = null;
+
+   /** Field msgID */
+   protected String msgID;
+
+   /**
+    * Constructor XMLSecurityException
+    *
+    */
+   public XMLSecurityException() {
+
+      super("Missing message string");
+
+      this.msgID = null;
+      this.originalException = null;
+   }
+
+   /**
+    * Constructor XMLSecurityException
+    *
+    * @param _msgID
+    */
+   public XMLSecurityException(String _msgID) {
+
+      super(I18n.getExceptionMessage(_msgID));
+
+      this.msgID = _msgID;
+      this.originalException = null;
+   }
+
+   /**
+    * Constructor XMLSecurityException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public XMLSecurityException(String _msgID, Object exArgs[]) {
+
+      super(MessageFormat.format(I18n.getExceptionMessage(_msgID), exArgs));
+
+      this.msgID = _msgID;
+      this.originalException = null;
+   }
+
+   /**
+    * Constructor XMLSecurityException
+    *
+    * @param _originalException
+    */
+   public XMLSecurityException(Exception _originalException) {
+
+      super("Missing message ID to locate message string in resource bundle \""
+            + Constants.exceptionMessagesResourceBundleBase
+            + "\". Original Exception was a "
+            + _originalException.getClass().getName() + " and message "
+            + _originalException.getMessage());
+
+      this.originalException = _originalException;
+   }
+
+   /**
+    * Constructor XMLSecurityException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public XMLSecurityException(String _msgID, Exception _originalException) {
+
+      super(I18n.getExceptionMessage(_msgID, _originalException));
+
+      this.msgID = _msgID;
+      this.originalException = _originalException;
+   }
+
+   /**
+    * Constructor XMLSecurityException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public XMLSecurityException(String _msgID, Object exArgs[],
+                               Exception _originalException) {
+
+      super(MessageFormat.format(I18n.getExceptionMessage(_msgID), exArgs));
+
+      this.msgID = _msgID;
+      this.originalException = _originalException;
+   }
+
+   /**
+    * Method getMsgID
+    *
+    * @return the messageId
+    */
+   public String getMsgID() {
+
+      if (msgID == null) {
+         return "Missing message ID";
+      } 
+      return msgID;      
+   }
+
+   /** @inheritDoc */
+   public String toString() {
+
+      String s = this.getClass().getName();
+      String message = super.getLocalizedMessage();
+
+      if (message != null) {
+         message = s + ": " + message;
+      } else {
+         message = s;
+      }
+
+      if (originalException != null) {
+         message = message + "\nOriginal Exception was "
+                   + originalException.toString();
+      }
+
+      return message;
+   }
+
+   /**
+    * Method printStackTrace
+    *
+    */
+   public void printStackTrace() {
+
+      synchronized (System.err) {
+         super.printStackTrace(System.err);
+
+         if (this.originalException != null) {
+            this.originalException.printStackTrace(System.err);
+         }
+      }
+   }
+
+   /**
+    * Method printStackTrace
+    *
+    * @param printwriter
+    */
+   public void printStackTrace(PrintWriter printwriter) {
+
+      super.printStackTrace(printwriter);
+
+      if (this.originalException != null) {
+         this.originalException.printStackTrace(printwriter);
+      }
+   }
+
+   /**
+    * Method printStackTrace
+    *
+    * @param printstream
+    */
+   public void printStackTrace(PrintStream printstream) {
+
+      super.printStackTrace(printstream);
+
+      if (this.originalException != null) {
+         this.originalException.printStackTrace(printstream);
+      }
+   }
+
+   /**
+    * Method getOriginalException
+    *
+    * @return the original exception
+    */
+   public Exception getOriginalException() {
+      return originalException;
+   }
+}
diff --git a/src/org/apache/xml/security/exceptions/XMLSecurityRuntimeException.java b/src/org/apache/xml/security/exceptions/XMLSecurityRuntimeException.java
new file mode 100644
index 0000000..91ebe13
--- /dev/null
+++ b/src/org/apache/xml/security/exceptions/XMLSecurityRuntimeException.java
@@ -0,0 +1,224 @@
+package org.apache.xml.security.exceptions;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.text.MessageFormat;
+
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.I18n;
+
+/**
+ * The mother of all runtime Exceptions in this bundle. It allows exceptions to have
+ * their messages translated to the different locales.
+ *
+ * The <code>xmlsecurity_en.properties</code> file contains this line:
+ * <pre>
+ * xml.WrongElement = Can't create a {0} from a {1} element
+ * </pre>
+ *
+ * Usage in the Java source is:
+ * <pre>
+ * {
+ *    Object exArgs[] = { Constants._TAG_TRANSFORMS, "BadElement" };
+ *
+ *    throw new XMLSecurityException("xml.WrongElement", exArgs);
+ * }
+ * </pre>
+ *
+ * Additionally, if another Exception has been caught, we can supply it, too>
+ * <pre>
+ * try {
+ *    ...
+ * } catch (Exception oldEx) {
+ *    Object exArgs[] = { Constants._TAG_TRANSFORMS, "BadElement" };
+ *
+ *    throw new XMLSecurityException("xml.WrongElement", exArgs, oldEx);
+ * }
+ * </pre>
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class XMLSecurityRuntimeException
+        extends RuntimeException {
+   /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
+
+   /** Field originalException */
+   protected Exception originalException = null;
+
+   /** Field msgID */
+   protected String msgID;
+
+   /**
+    * Constructor XMLSecurityRuntimeException
+    *
+    */
+   public XMLSecurityRuntimeException() {
+
+      super("Missing message string");
+
+      this.msgID = null;
+      this.originalException = null;
+   }
+
+   /**
+    * Constructor XMLSecurityRuntimeException
+    *
+    * @param _msgID
+    */
+   public XMLSecurityRuntimeException(String _msgID) {
+
+      super(I18n.getExceptionMessage(_msgID));
+
+      this.msgID = _msgID;
+      this.originalException = null;
+   }
+
+   /**
+    * Constructor XMLSecurityRuntimeException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public XMLSecurityRuntimeException(String _msgID, Object exArgs[]) {
+
+      super(MessageFormat.format(I18n.getExceptionMessage(_msgID), exArgs));
+
+      this.msgID = _msgID;
+      this.originalException = null;
+   }
+
+   /**
+    * Constructor XMLSecurityRuntimeException
+    *
+    * @param _originalException
+    */
+   public XMLSecurityRuntimeException(Exception _originalException) {
+
+      super("Missing message ID to locate message string in resource bundle \""
+            + Constants.exceptionMessagesResourceBundleBase
+            + "\". Original Exception was a "
+            + _originalException.getClass().getName() + " and message "
+            + _originalException.getMessage());
+
+      this.originalException = _originalException;
+   }
+
+   /**
+    * Constructor XMLSecurityRuntimeException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public XMLSecurityRuntimeException(String _msgID, Exception _originalException) {
+
+      super(I18n.getExceptionMessage(_msgID, _originalException));
+
+      this.msgID = _msgID;
+      this.originalException = _originalException;
+   }
+
+   /**
+    * Constructor XMLSecurityRuntimeException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public XMLSecurityRuntimeException(String _msgID, Object exArgs[],
+                               Exception _originalException) {
+
+      super(MessageFormat.format(I18n.getExceptionMessage(_msgID), exArgs));
+
+      this.msgID = _msgID;
+      this.originalException = _originalException;
+   }
+
+   /**
+    * Method getMsgID
+    *
+    * @return the messageId
+    */
+   public String getMsgID() {
+
+      if (msgID == null) {
+         return "Missing message ID";
+      } 
+      return msgID;      
+   }
+
+   /** @inheritDoc */
+   public String toString() {
+
+      String s = this.getClass().getName();
+      String message = super.getLocalizedMessage();
+
+      if (message != null) {
+         message = s + ": " + message;
+      } else {
+         message = s;
+      }
+
+      if (originalException != null) {
+         message = message + "\nOriginal Exception was "
+                   + originalException.toString();
+      }
+
+      return message;
+   }
+
+   /**
+    * Method printStackTrace
+    *
+    */
+   public void printStackTrace() {
+
+      synchronized (System.err) {
+         super.printStackTrace(System.err);
+
+         if (this.originalException != null) {
+            this.originalException.printStackTrace(System.err);
+         }
+      }
+   }
+
+   /**
+    * Method printStackTrace
+    *
+    * @param printwriter
+    */
+   public void printStackTrace(PrintWriter printwriter) {
+
+      super.printStackTrace(printwriter);
+
+      if (this.originalException != null) {
+         this.originalException.printStackTrace(printwriter);
+      }
+   }
+
+   /**
+    * Method printStackTrace
+    *
+    * @param printstream
+    */
+   public void printStackTrace(PrintStream printstream) {
+
+      super.printStackTrace(printstream);
+
+      if (this.originalException != null) {
+         this.originalException.printStackTrace(printstream);
+      }
+   }
+
+   /**
+    * Method getOriginalException
+    *
+    * @return the original exception
+    */
+   public Exception getOriginalException() {
+      return originalException;
+   }
+}
\ No newline at end of file
diff --git a/src/org/apache/xml/security/exceptions/package.html b/src/org/apache/xml/security/exceptions/package.html
new file mode 100644
index 0000000..4cb114d
--- /dev/null
+++ b/src/org/apache/xml/security/exceptions/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+general exceptions used by this library.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/keys/ContentHandlerAlreadyRegisteredException.java b/src/org/apache/xml/security/keys/ContentHandlerAlreadyRegisteredException.java
new file mode 100644
index 0000000..03a6ba0
--- /dev/null
+++ b/src/org/apache/xml/security/keys/ContentHandlerAlreadyRegisteredException.java
@@ -0,0 +1,87 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class ContentHandlerAlreadyRegisteredException
+        extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor ContentHandlerAlreadyRegisteredException
+    *
+    */
+   public ContentHandlerAlreadyRegisteredException() {
+      super();
+   }
+
+   /**
+    * Constructor ContentHandlerAlreadyRegisteredException
+    *
+    * @param _msgID
+    */
+   public ContentHandlerAlreadyRegisteredException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor ContentHandlerAlreadyRegisteredException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public ContentHandlerAlreadyRegisteredException(String _msgID,
+           Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor ContentHandlerAlreadyRegisteredException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public ContentHandlerAlreadyRegisteredException(String _msgID,
+           Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor ContentHandlerAlreadyRegisteredException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public ContentHandlerAlreadyRegisteredException(String _msgID,
+           Object exArgs[], Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/keys/KeyInfo.java b/src/org/apache/xml/security/keys/KeyInfo.java
new file mode 100644
index 0000000..5312637
--- /dev/null
+++ b/src/org/apache/xml/security/keys/KeyInfo.java
@@ -0,0 +1,1225 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.crypto.SecretKey;
+
+import org.apache.xml.security.encryption.EncryptedKey;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.encryption.XMLEncryptionException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.KeyName;
+import org.apache.xml.security.keys.content.KeyValue;
+import org.apache.xml.security.keys.content.MgmtData;
+import org.apache.xml.security.keys.content.PGPData;
+import org.apache.xml.security.keys.content.RetrievalMethod;
+import org.apache.xml.security.keys.content.SPKIData;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.keys.content.keyvalues.DSAKeyValue;
+import org.apache.xml.security.keys.content.keyvalues.RSAKeyValue;
+import org.apache.xml.security.keys.keyresolver.KeyResolver;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.EncryptionConstants;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * This class stand for KeyInfo Element that may contain keys, names,
+ * certificates and other public key management information,
+ * such as in-band key distribution or key agreement data.
+ * <BR />
+ * KeyInfo Element has two basic functions:
+ * One is KeyResolve for getting the public key in signature validation processing.
+ * the other one is toElement for getting the element in signature generation processing.
+ * <BR />
+ * The <CODE>lengthXXX()</CODE> methods provide access to the internal Key
+ * objects:
+ * <UL>
+ * <LI>If the <CODE>KeyInfo</CODE> was constructed from an Element
+ * (Signature verification), the <CODE>lengthXXX()</CODE> methods searches
+ * for child elements of <CODE>ds:KeyInfo</CODE> for known types. </LI>
+ * <LI>If the <CODE>KeyInfo</CODE> was constructed from scratch (during
+ * Signature generation), the <CODE>lengthXXX()</CODE> methods return the number
+ * of <CODE>XXXs</CODE> objects already passed to the KeyInfo</LI>
+ * </UL>
+ * <BR />
+ * The <CODE>addXXX()</CODE> methods are used for adding Objects of the
+ * appropriate type to the <CODE>KeyInfo</CODE>. This is used during signature
+ * generation.
+ * <BR />
+ * The <CODE>itemXXX(int i)</CODE> methods return the i'th object of the
+ * corresponding type.
+ * <BR />
+ * The <CODE>containsXXX()</CODE> methods return <I>whether</I> the KeyInfo
+ * contains the corresponding type.
+ *
+ * @author $Author$
+ */
+public class KeyInfo extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(KeyInfo.class.getName());
+
+
+
+   /**
+    * Constructor KeyInfo
+    * @param doc
+    */
+   public KeyInfo(Document doc) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+
+   }
+
+   /**
+    * Constructor KeyInfo
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public KeyInfo(Element element, String BaseURI) throws XMLSecurityException {
+
+      super(element, BaseURI);
+
+   }
+
+   /**
+    * Sets the <code>Id</code> attribute
+    *
+    * @param Id ID
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute
+    *
+    * @return the <code>Id</code> attribute
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Method addKeyName
+    *
+    * @param keynameString
+    */
+   public void addKeyName(String keynameString) {
+      this.add(new KeyName(this._doc, keynameString));
+   }
+
+   /**
+    * Method add
+    *
+    * @param keyname
+    */
+   public void add(KeyName keyname) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(keyname.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addKeyValue
+    *
+    * @param pk
+    */
+   public void addKeyValue(PublicKey pk) {
+      this.add(new KeyValue(this._doc, pk));
+   }
+
+   /**
+    * Method addKeyValue
+    *
+    * @param unknownKeyValueElement
+    */
+   public void addKeyValue(Element unknownKeyValueElement) {
+      this.add(new KeyValue(this._doc, unknownKeyValueElement));
+   }
+
+   /**
+    * Method add
+    *
+    * @param dsakeyvalue
+    */
+   public void add(DSAKeyValue dsakeyvalue) {
+      this.add(new KeyValue(this._doc, dsakeyvalue));
+   }
+
+   /**
+    * Method add
+    *
+    * @param rsakeyvalue
+    */
+   public void add(RSAKeyValue rsakeyvalue) {
+      this.add(new KeyValue(this._doc, rsakeyvalue));
+   }
+
+   /**
+    * Method add
+    *
+    * @param pk
+    */
+   public void add(PublicKey pk) {
+      this.add(new KeyValue(this._doc, pk));
+   }
+
+   /**
+    * Method add
+    *
+    * @param keyvalue
+    */
+   public void add(KeyValue keyvalue) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(keyvalue.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addMgmtData
+    *
+    * @param mgmtdata
+    */
+   public void addMgmtData(String mgmtdata) {
+      this.add(new MgmtData(this._doc, mgmtdata));
+   }
+
+   /**
+    * Method add
+    *
+    * @param mgmtdata
+    */
+   public void add(MgmtData mgmtdata) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(mgmtdata.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addPGPData
+    *
+    * @param pgpdata
+    */
+   public void add(PGPData pgpdata) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(pgpdata.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addRetrievalMethod
+    *
+    * @param URI
+    * @param transforms
+    * @param Type
+    */
+   public void addRetrievalMethod(String URI, Transforms transforms,
+                                  String Type) {
+      this.add(new RetrievalMethod(this._doc, URI, transforms, Type));
+   }
+
+   /**
+    * Method add
+    *
+    * @param retrievalmethod
+    */
+   public void add(RetrievalMethod retrievalmethod) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(retrievalmethod.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method add
+    *
+    * @param spkidata
+    */
+   public void add(SPKIData spkidata) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(spkidata.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addX509Data
+    *
+    * @param x509data
+    */
+   public void add(X509Data x509data) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(x509data.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+	/**
+	 * Method addEncryptedKey
+	 *
+	 * @param encryptedKey
+	 * @throws XMLEncryptionException
+	 */
+
+	public void add(EncryptedKey encryptedKey) 
+		throws XMLEncryptionException {
+
+		if (this._state == MODE_SIGN) {
+			XMLCipher cipher = XMLCipher.getInstance();
+			this._constructionElement.appendChild(cipher.martial(encryptedKey));
+		}
+
+	}
+
+   /**
+    * Method addUnknownElement
+    *
+    * @param element
+    */
+   public void addUnknownElement(Element element) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(element);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method lengthKeyName
+    *
+    * @return the number of the KeyName tags
+    */
+   public int lengthKeyName() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_KEYNAME);
+   }
+
+   /**
+    * Method lengthKeyValue
+    *
+    *@return the number of the KeyValue tags
+    */
+   public int lengthKeyValue() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_KEYVALUE);
+   }
+
+   /**
+    * Method lengthMgmtData
+    *
+    *@return the number of the MgmtData tags
+    */
+   public int lengthMgmtData() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_MGMTDATA);
+   }
+
+   /**
+    * Method lengthPGPData
+    *
+    *@return the number of the PGPDat. tags
+    */
+   public int lengthPGPData() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_PGPDATA);
+   }
+
+   /**
+    * Method lengthRetrievalMethod
+    *
+    *@return the number of the RetrievalMethod tags
+    */
+   public int lengthRetrievalMethod() {
+      return this.length(Constants.SignatureSpecNS,
+                         Constants._TAG_RETRIEVALMETHOD);
+   }
+
+   /**
+    * Method lengthSPKIData
+    *
+    *@return the number of the SPKIData tags
+    */
+   public int lengthSPKIData() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_SPKIDATA);
+   }
+
+   /**
+    * Method lengthX509Data
+    *
+    *@return the number of the X509Data tags
+    */
+   public int lengthX509Data() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_X509DATA);
+   }
+
+   /**
+    * Method lengthUnknownElement
+    * NOTE posibly buggy.
+    *@return the number of the UnknownElement tags
+    */
+   public int lengthUnknownElement() {
+
+      int res = 0;
+      NodeList nl = this._constructionElement.getChildNodes();
+
+      for (int i = 0; i < nl.getLength(); i++) {
+         Node current = nl.item(i);
+
+         /**
+          * $todo$ using this method, we don't see unknown Elements
+          *  from Signature NS; revisit
+          */
+         if ((current.getNodeType() == Node.ELEMENT_NODE)
+                 && current.getNamespaceURI()
+                    .equals(Constants.SignatureSpecNS)) {
+            res++;
+         }
+      }
+
+      return res;
+   }
+
+   /**
+    * Method itemKeyName
+    *
+    * @param i
+    * @return the asked KeyName element, null if the index is too big
+    * @throws XMLSecurityException
+    */
+   public KeyName itemKeyName(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_KEYNAME,i);
+
+      if (e != null) {
+         return new KeyName(e, this._baseURI);
+      } 
+      return null;      
+   }
+
+   /**
+    * Method itemKeyValue
+    *
+    * @param i
+    * @return the asked KeyValue element, null if the index is too big
+    * @throws XMLSecurityException
+    */
+   public KeyValue itemKeyValue(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_KEYVALUE,i);
+
+      if (e != null) {
+         return new KeyValue(e, this._baseURI);
+      } 
+      return null;      
+   }
+
+   /**
+    * Method itemMgmtData
+    *
+    * @param i
+    *@return the asked MgmtData element, null if the index is too big
+    * @throws XMLSecurityException
+    */
+   public MgmtData itemMgmtData(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_MGMTDATA,i);
+
+      if (e != null) {
+         return new MgmtData(e, this._baseURI);
+      } 
+       return null;      
+   }
+
+   /**
+    * Method itemPGPData
+    *
+    * @param i
+    *@return the asked PGPData element, null if the index is too big
+    * @throws XMLSecurityException
+    */
+   public PGPData itemPGPData(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_PGPDATA,i);
+
+      if (e != null) {
+         return new PGPData(e, this._baseURI);
+      } 
+      return null;      
+   }
+
+   /**
+    * Method itemRetrievalMethod
+    *
+    * @param i
+    *@return the asked RetrievalMethod element, null if the index is too big
+    * @throws XMLSecurityException
+    */
+   public RetrievalMethod itemRetrievalMethod(int i)
+           throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_RETRIEVALMETHOD,i);
+
+      if (e != null) {
+         return new RetrievalMethod(e, this._baseURI);
+      } 
+      return null;
+   }
+
+   /**
+    * Method itemSPKIData
+    *
+    * @param i
+    *@return the asked SPKIData element, null if the index is too big
+    * @throws XMLSecurityException
+    */
+   public SPKIData itemSPKIData(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_SPKIDATA,i);
+
+      if (e != null) {
+         return new SPKIData(e, this._baseURI);
+      } 
+      return null;     
+   }
+
+   /**
+    * Method itemX509Data
+    *@return the asked X509Data element, null if the index is too big
+    * @param i
+    *
+    * @throws XMLSecurityException
+    */
+   public X509Data itemX509Data(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_X509DATA,i);
+
+      if (e != null) {
+         return new X509Data(e, this._baseURI);
+      } 
+      return null;
+   }
+
+   /**
+	* Method itemEncryptedKey
+	*
+	* @param i
+	* @return the asked EncryptedKey element, null if the index is too big
+	* @throws XMLSecurityException
+	*/
+
+	public EncryptedKey itemEncryptedKey(int i) throws XMLSecurityException {
+
+		Element e = 
+			XMLUtils.selectXencNode(this._constructionElement.getFirstChild(),
+										  EncryptionConstants._TAG_ENCRYPTEDKEY,i);
+
+		if (e != null) {
+			XMLCipher cipher = XMLCipher.getInstance();
+			cipher.init(XMLCipher.UNWRAP_MODE, null);
+			return cipher.loadEncryptedKey(e);
+		}
+		return null;
+   }
+
+   /**
+    * Method itemUnknownElement
+    *
+    * @param i index
+    * @return the element number of the unknown elemens
+    */
+   public Element itemUnknownElement(int i) {
+
+      NodeList nl = this._constructionElement.getChildNodes();
+      int res = 0;
+
+      for (int j = 0; j < nl.getLength(); j++) {
+         Node current = nl.item(j);
+
+         /**
+          * $todo$ using this method, we don't see unknown Elements
+          *  from Signature NS; revisit
+          */
+         if ((current.getNodeType() == Node.ELEMENT_NODE)
+                 && current.getNamespaceURI()
+                    .equals(Constants.SignatureSpecNS)) {
+            res++;
+
+            if (res == i) {
+               return (Element) current;
+            }
+         }
+      }
+
+      return null;
+   }
+
+   /**
+    * Method isEmpty
+    *
+    * @return true if the element has no descedants.
+    */
+   public boolean isEmpty() {
+      return this._constructionElement.getFirstChild()==null;
+   }
+
+   /**
+    * Method containsKeyName
+    *
+    * @return If the KeyInfo contains a KeyName node
+    */
+   public boolean containsKeyName() {
+      return this.lengthKeyName() > 0;
+   }
+
+   /**
+    * Method containsKeyValue
+    *
+    * @return If the KeyInfo contains a KeyValue node
+    */
+   public boolean containsKeyValue() {
+      return this.lengthKeyValue() > 0;
+   }
+
+   /**
+    * Method containsMgmtData
+    *
+    * @return If the KeyInfo contains a MgmtData node
+    */
+   public boolean containsMgmtData() {
+      return this.lengthMgmtData() > 0;
+   }
+
+   /**
+    * Method containsPGPData
+    *
+    * @return If the KeyInfo contains a PGPData node
+    */
+   public boolean containsPGPData() {
+      return this.lengthPGPData() > 0;
+   }
+
+   /**
+    * Method containsRetrievalMethod
+    *
+    * @return If the KeyInfo contains a RetrievalMethod node
+    */
+   public boolean containsRetrievalMethod() {
+      return this.lengthRetrievalMethod() > 0;
+   }
+
+   /**
+    * Method containsSPKIData
+    *
+    * @return If the KeyInfo contains a SPKIData node
+    */
+   public boolean containsSPKIData() {
+      return this.lengthSPKIData() > 0;
+   }
+
+   /**
+    * Method containsUnknownElement
+    *
+    * @return If the KeyInfo contains a UnknownElement node
+    */
+   public boolean containsUnknownElement() {
+      return this.lengthUnknownElement() > 0;
+   }
+
+   /**
+    * Method containsX509Data
+    *
+    * @return If the KeyInfo contains a X509Data node
+    */
+   public boolean containsX509Data() {
+      return this.lengthX509Data() > 0;
+   }
+
+   /**
+    * This method returns the public key.
+    *
+    * @return If the KeyInfo contains a PublicKey node
+    * @throws KeyResolverException
+    */
+
+   public PublicKey getPublicKey() throws KeyResolverException {
+
+      PublicKey pk = this.getPublicKeyFromInternalResolvers();
+
+      if (pk != null) {
+         log.debug("I could find a key using the per-KeyInfo key resolvers");
+
+         return pk;
+      } 
+      log.debug("I couldn't find a key using the per-KeyInfo key resolvers");      
+
+      pk = this.getPublicKeyFromStaticResolvers();
+
+      if (pk != null) {
+         log.debug("I could find a key using the system-wide key resolvers");
+
+         return pk;
+      }
+      log.debug("I couldn't find a key using the system-wide key resolvers");      
+
+      return null;
+   }
+
+   /**
+    * Searches the library wide keyresolvers for public keys
+    *
+    * @return The publick contained in this Node.
+    * @throws KeyResolverException
+    */
+   PublicKey getPublicKeyFromStaticResolvers() throws KeyResolverException {
+
+      for (int i = 0; i < KeyResolver.length(); i++) {
+         KeyResolver keyResolver = KeyResolver.item(i);
+         Node currentChild=this._constructionElement.getFirstChild();
+         while (currentChild!=null)      {       
+            if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+               if (this._storageResolvers.size() == 0) {
+
+                  // if we do not have storage resolvers, we verify with null
+                  StorageResolver storage = null;
+
+                  if (keyResolver.canResolve((Element) currentChild,
+                                             this.getBaseURI(), storage)) {
+                     PublicKey pk =
+                        keyResolver.resolvePublicKey((Element) currentChild,
+                                                     this.getBaseURI(),
+                                                     storage);
+
+                     if (pk != null) {
+                        return pk;
+                     }
+                  }
+               } else {
+                  for (int k = 0; k < this._storageResolvers.size(); k++) {
+                     StorageResolver storage =
+                        (StorageResolver) this._storageResolvers.get(k);
+
+                     if (keyResolver.canResolve((Element) currentChild,
+                                                this.getBaseURI(), storage)) {
+                        PublicKey pk =
+                           keyResolver.resolvePublicKey((Element) currentChild,
+                                                        this.getBaseURI(),
+                                                        storage);
+
+                        if (pk != null) {
+                           return pk;
+                        }
+                     }
+                  }
+               }               
+            }
+            currentChild=currentChild.getNextSibling();
+         }      
+      }
+      return null;
+   }
+
+   /**
+    * Searches the per-KeyInfo keyresolvers for public keys
+    *
+    * @return The publick contained in this Node.
+    * @throws KeyResolverException
+    */
+   PublicKey getPublicKeyFromInternalResolvers() throws KeyResolverException {
+
+      for (int i = 0; i < this.lengthInternalKeyResolver(); i++) {
+         KeyResolverSpi keyResolver = this.itemInternalKeyResolver(i);
+         if (log.isDebugEnabled())
+         	log.debug("Try " + keyResolver.getClass().getName());
+
+         Node currentChild=this._constructionElement.getFirstChild();
+         while (currentChild!=null)      {    
+            if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+               if (this._storageResolvers.size() == 0) {
+
+                  // if we do not have storage resolvers, we verify with null
+                  StorageResolver storage = null;
+
+                  if (keyResolver.engineCanResolve((Element) currentChild,
+                                                   this.getBaseURI(),
+                                                   storage)) {
+                     PublicKey pk =
+                        keyResolver
+                           .engineResolvePublicKey((Element) currentChild, this
+                              .getBaseURI(), storage);
+
+                     if (pk != null) {
+                        return pk;
+                     }
+                  }
+               } else {
+                  for (int k = 0; k < this._storageResolvers.size(); k++) {
+                     StorageResolver storage =
+                        (StorageResolver) this._storageResolvers.get(k);
+
+                     if (keyResolver.engineCanResolve((Element) currentChild,
+                                                      this.getBaseURI(),
+                                                      storage)) {
+                        PublicKey pk = keyResolver
+                           .engineResolvePublicKey((Element) currentChild, this
+                              .getBaseURI(), storage);
+
+                        if (pk != null) {
+                           return pk;
+                        }
+                     }
+                  }
+               }
+            }
+            currentChild=currentChild.getNextSibling();
+         }
+      }
+
+      return null;
+   }
+
+   /**
+    * Method getX509Certificate
+    *
+    * @return The certificate contined in this KeyInfo
+    * @throws KeyResolverException
+    */
+   public X509Certificate getX509Certificate() throws KeyResolverException {
+
+      // First search using the individual resolvers from the user
+      X509Certificate cert = this.getX509CertificateFromInternalResolvers();
+
+      if (cert != null) {
+         log.debug(
+            "I could find a X509Certificate using the per-KeyInfo key resolvers");
+
+         return cert;
+      } 
+      log.debug(
+            "I couldn't find a X509Certificate using the per-KeyInfo key resolvers");
+      
+
+      // Then use the system-wide Resolvers
+      cert = this.getX509CertificateFromStaticResolvers();
+
+      if (cert != null) {
+         log.debug(
+            "I could find a X509Certificate using the system-wide key resolvers");
+
+         return cert;
+      } 
+      log.debug(
+            "I couldn't find a X509Certificate using the system-wide key resolvers");
+      
+
+      return null;
+   }
+
+   /**
+    * This method uses each System-wide {@link KeyResolver} to search the
+    * child elements. Each combination of {@link KeyResolver} and child element
+    * is checked against all {@link StorageResolver}s.
+    *
+    * @return The certificate contined in this KeyInfo
+    * @throws KeyResolverException
+    */
+   X509Certificate getX509CertificateFromStaticResolvers()
+           throws KeyResolverException {
+      if (log.isDebugEnabled())
+      	log.debug("Start getX509CertificateFromStaticResolvers() with "
+                + KeyResolver.length() + " resolvers");
+
+      for (int i = 0; i < KeyResolver.length(); i++) {
+         KeyResolver keyResolver = KeyResolver.item(i);
+         Node currentChild=this._constructionElement.getFirstChild();
+         while (currentChild!=null)      {       
+            if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+               if (this._storageResolvers.size() == 0) {
+
+                  // if we do not have storage resolvers, we verify with null
+                  StorageResolver storage = null;
+
+                  if (keyResolver.canResolve((Element) currentChild,
+                                             this.getBaseURI(), storage)) {
+                     X509Certificate cert =
+                        keyResolver
+                           .resolveX509Certificate((Element) currentChild, this
+                              .getBaseURI(), storage);
+
+                     if (cert != null) {
+                        return cert;
+                     }
+                  }
+               } else {
+                  for (int k = 0; k < this._storageResolvers.size(); k++) {
+                     StorageResolver storage =
+                        (StorageResolver) this._storageResolvers.get(k);
+
+                     if (keyResolver.canResolve((Element) currentChild,
+                                                this.getBaseURI(), storage)) {
+                        X509Certificate cert = keyResolver
+                           .resolveX509Certificate((Element) currentChild, this
+                              .getBaseURI(), storage);
+
+                        if (cert != null) {
+                           return cert;
+                        }
+                     }
+                  }
+               }               
+            }
+            currentChild=currentChild.getNextSibling();
+         }      
+      }
+      return null;
+   }
+
+   /**
+    * Method getX509CertificateFromInternalResolvers
+    *
+    * @return The certificate contined in this KeyInfo
+    * @throws KeyResolverException
+    */
+   X509Certificate getX509CertificateFromInternalResolvers()
+           throws KeyResolverException {
+      if (log.isDebugEnabled())
+      	log.debug("Start getX509CertificateFromInternalResolvers() with "
+                + this.lengthInternalKeyResolver() + " resolvers");
+
+      for (int i = 0; i < this.lengthInternalKeyResolver(); i++) {
+         KeyResolverSpi keyResolver = this.itemInternalKeyResolver(i);
+         if (log.isDebugEnabled())
+         	log.debug("Try " + keyResolver.getClass().getName());
+
+         Node currentChild=this._constructionElement.getFirstChild();
+         while (currentChild!=null)      {    
+            if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+               if (this._storageResolvers.size() == 0) {
+
+                  // if we do not have storage resolvers, we verify with null
+                  StorageResolver storage = null;
+
+                  if (keyResolver.engineCanResolve((Element) currentChild,
+                                                   this.getBaseURI(),
+                                                   storage)) {
+                     X509Certificate cert =
+                        keyResolver.engineResolveX509Certificate(
+                           (Element) currentChild, this.getBaseURI(), storage);
+
+                     if (cert != null) {
+                        return cert;
+                     }
+                  }
+               } else {
+                  for (int k = 0; k < this._storageResolvers.size(); k++) {
+                     StorageResolver storage =
+                        (StorageResolver) this._storageResolvers.get(k);
+
+                     if (keyResolver.engineCanResolve((Element) currentChild,
+                                                      this.getBaseURI(),
+                                                      storage)) {
+                        X509Certificate cert =
+                           keyResolver.engineResolveX509Certificate(
+                              (Element) currentChild, this.getBaseURI(),
+                              storage);
+
+                        if (cert != null) {
+                           return cert;
+                        }
+                     }
+                  }
+               }
+            }
+            currentChild=currentChild.getNextSibling();
+         }
+      }
+
+      return null;
+   }
+
+   /**
+    * This method returns a secret (symmetric) key. This is for XML Encryption.
+    * @return the secret key contained in this KeyInfo
+    * @throws KeyResolverException
+    */
+   public SecretKey getSecretKey() throws KeyResolverException {
+      SecretKey sk = this.getSecretKeyFromInternalResolvers();
+
+      if (sk != null) {
+         log.debug("I could find a secret key using the per-KeyInfo key resolvers");
+
+         return sk;
+      } 
+      log.debug("I couldn't find a secret key using the per-KeyInfo key resolvers");
+      
+
+      sk = this.getSecretKeyFromStaticResolvers();
+
+      if (sk != null) {
+         log.debug("I could find a secret key using the system-wide key resolvers");
+
+         return sk;
+      } 
+      log.debug("I couldn't find a secret key using the system-wide key resolvers");
+      
+
+      return null;
+   }
+
+   /**
+    * Searches the library wide keyresolvers for Secret keys
+    *
+    * @return the secret key contained in this KeyInfo
+    * @throws KeyResolverException
+    */
+
+   SecretKey getSecretKeyFromStaticResolvers() throws KeyResolverException {
+
+      for (int i = 0; i < KeyResolver.length(); i++) {
+         KeyResolver keyResolver = KeyResolver.item(i);
+
+         Node currentChild=this._constructionElement.getFirstChild();
+         while (currentChild!=null)      {    
+            if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+               if (this._storageResolvers.size() == 0) {
+
+                  // if we do not have storage resolvers, we verify with null
+                  StorageResolver storage = null;
+
+                  if (keyResolver.canResolve((Element) currentChild,
+                                             this.getBaseURI(), storage)) {
+                     SecretKey sk  =
+                        keyResolver.resolveSecretKey((Element) currentChild,
+                                                     this.getBaseURI(),
+                                                     storage);
+
+                     if (sk != null) {
+                        return sk;
+                     }
+                  }
+               } else {
+                  for (int k = 0; k < this._storageResolvers.size(); k++) {
+                     StorageResolver storage =
+                        (StorageResolver) this._storageResolvers.get(k);
+
+                     if (keyResolver.canResolve((Element) currentChild,
+                                                this.getBaseURI(), storage)) {
+                        SecretKey sk =
+                           keyResolver.resolveSecretKey((Element) currentChild,
+                                                        this.getBaseURI(),
+                                                        storage);
+
+                        if (sk != null) {
+                           return sk;
+                        }
+                     }
+                  }
+               }
+            }
+            currentChild=currentChild.getNextSibling();
+         }
+      }
+      return null;
+   }
+
+   /**
+    * Searches the per-KeyInfo keyresolvers for secret keys
+    *
+    * @return the secret key contained in this KeyInfo
+    * @throws KeyResolverException
+    */
+
+   SecretKey getSecretKeyFromInternalResolvers() throws KeyResolverException {
+
+      for (int i = 0; i < this.lengthInternalKeyResolver(); i++) {
+         KeyResolverSpi keyResolver = this.itemInternalKeyResolver(i);
+         if (log.isDebugEnabled())
+         	log.debug("Try " + keyResolver.getClass().getName());
+
+         Node currentChild=this._constructionElement.getFirstChild();
+         while (currentChild!=null)      {    
+            if (currentChild.getNodeType() == Node.ELEMENT_NODE) {
+               if (this._storageResolvers.size() == 0) {
+
+                  // if we do not have storage resolvers, we verify with null
+                  StorageResolver storage = null;
+
+                  if (keyResolver.engineCanResolve((Element) currentChild,
+                                                   this.getBaseURI(),
+                                                   storage)) {
+                     SecretKey sk =
+                        keyResolver
+                           .engineResolveSecretKey((Element) currentChild, this
+                              .getBaseURI(), storage);
+
+                     if (sk != null) {
+                        return sk;
+                     }
+                  }
+               } else {
+                  for (int k = 0; k < this._storageResolvers.size(); k++) {
+                     StorageResolver storage =
+                        (StorageResolver) this._storageResolvers.get(k);
+
+                     if (keyResolver.engineCanResolve((Element) currentChild,
+                                                      this.getBaseURI(),
+                                                      storage)) {
+                        SecretKey sk = keyResolver
+                           .engineResolveSecretKey((Element) currentChild, this
+                              .getBaseURI(), storage);
+
+                        if (sk != null) {
+                           return sk;
+                        }
+                     }
+                  }
+               }
+            }
+            currentChild=currentChild.getNextSibling();
+         }
+      }
+
+      return null;
+   }
+
+   /**
+    * Stores the individual (per-KeyInfo) {@link KeyResolver}s
+    */
+   List _internalKeyResolvers = new ArrayList();
+
+   /**
+    * This method is used to add a custom {@link KeyResolverSpi} to a KeyInfo
+    * object.
+    *
+    * @param realKeyResolver
+    */
+   public void registerInternalKeyResolver(KeyResolverSpi realKeyResolver) {
+      this._internalKeyResolvers.add(realKeyResolver);
+   }
+
+   /**
+    * Method lengthInternalKeyResolver
+    * @return the length of the key
+    */
+   int lengthInternalKeyResolver() {
+      return this._internalKeyResolvers.size();
+   }
+
+   /**
+    * Method itemInternalKeyResolver
+    *
+    * @param i the index
+    * @return the KeyResolverSpi for the index.
+    */
+   KeyResolverSpi itemInternalKeyResolver(int i) {
+      return (KeyResolverSpi) this._internalKeyResolvers.get(i);
+   }
+
+   /** Field _storageResolvers */
+   List _storageResolvers = new ArrayList();
+
+   /**
+    * Method addStorageResolver
+    *
+    * @param storageResolver
+    */
+   public void addStorageResolver(StorageResolver storageResolver) {
+
+      if (storageResolver != null) {
+         this._storageResolvers.add(storageResolver);
+      }
+   }
+
+   /**
+    * Method getStorageResolvers
+    *
+    * @return the internalStorages
+    */
+   List getStorageResolvers() {
+      return this._storageResolvers;
+   }
+
+   //J-
+   static boolean _alreadyInitialized = false;
+   /** init the keyinfo (Still needed?)*/
+   public static void init() {
+
+      if (!KeyInfo._alreadyInitialized) {
+         if (KeyInfo.log == null) {
+
+            /**
+             * $todo$ why the hell does the static initialization from the
+             *  start not work ?
+             */
+            KeyInfo.log =
+                    org.apache.commons.logging.LogFactory.getLog(KeyInfo.class.getName());
+
+            log.error("Had to assign log in the init() function");
+         }
+
+         // KeyInfo._contentHandlerHash = new HashMap(10);
+         KeyInfo._alreadyInitialized = true;
+      }
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_KEYINFO;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/KeyUtils.java b/src/org/apache/xml/security/keys/KeyUtils.java
new file mode 100644
index 0000000..f0f3786
--- /dev/null
+++ b/src/org/apache/xml/security/keys/KeyUtils.java
@@ -0,0 +1,84 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys;
+
+
+
+import java.io.PrintStream;
+import java.security.PublicKey;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.KeyName;
+import org.apache.xml.security.keys.content.KeyValue;
+import org.apache.xml.security.keys.content.MgmtData;
+import org.apache.xml.security.keys.content.X509Data;
+
+
+/**
+ * Utility class for for <CODE>org.apache.xml.security.keys</CODE> package.
+ *
+ * @author $Author$
+ */
+public class KeyUtils {
+
+   private KeyUtils() {
+      // no instantiation
+   }
+
+   /**
+    * Method prinoutKeyInfo
+    *
+    * @param ki
+    * @param os
+    * @throws XMLSecurityException
+    */
+   public static void prinoutKeyInfo(KeyInfo ki, PrintStream os)
+           throws XMLSecurityException {
+
+      for (int i = 0; i < ki.lengthKeyName(); i++) {
+         KeyName x = ki.itemKeyName(i);
+
+         os.println("KeyName(" + i + ")=\"" + x.getKeyName() + "\"");
+      }
+
+      for (int i = 0; i < ki.lengthKeyValue(); i++) {
+         KeyValue x = ki.itemKeyValue(i);
+         PublicKey pk = x.getPublicKey();
+
+         os.println("KeyValue Nr. " + i);
+         os.println(pk);
+      }
+
+      for (int i = 0; i < ki.lengthMgmtData(); i++) {
+         MgmtData x = ki.itemMgmtData(i);
+
+         os.println("MgmtData(" + i + ")=\"" + x.getMgmtData() + "\"");
+      }
+
+      for (int i = 0; i < ki.lengthX509Data(); i++) {
+         X509Data x = ki.itemX509Data(i);
+
+         os.println("X509Data(" + i + ")=\"" + (x.containsCertificate()
+                                                ? "Certificate "
+                                                : "") + (x
+                                                   .containsIssuerSerial()
+                                                         ? "IssuerSerial "
+                                                         : "") + "\"");
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/KeyInfoContent.java b/src/org/apache/xml/security/keys/content/KeyInfoContent.java
new file mode 100644
index 0000000..2e663ff
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/KeyInfoContent.java
@@ -0,0 +1,30 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+
+
+/**
+ * Empty interface just to identify Elements that can be cildren of ds:KeyInfo.
+ *
+ * @author $Author$
+ */
+public interface KeyInfoContent {
+}
diff --git a/src/org/apache/xml/security/keys/content/KeyName.java b/src/org/apache/xml/security/keys/content/KeyName.java
new file mode 100644
index 0000000..9a478ca
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/KeyName.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class KeyName extends SignatureElementProxy implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(KeyName.class.getName());
+
+   /**
+    * Constructor KeyName
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public KeyName(Element element, String BaseURI) throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor KeyName
+    *
+    * @param doc
+    * @param keyName
+    */
+   public KeyName(Document doc, String keyName) {
+
+      super(doc);
+
+      this.addText(keyName);
+   }
+
+   /**
+    * Method getKeyName
+    *
+    * @return key name
+    */
+   public String getKeyName() {
+      return this.getTextFromTextChild();
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_KEYNAME;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/KeyValue.java b/src/org/apache/xml/security/keys/content/KeyValue.java
new file mode 100644
index 0000000..7553ce5
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/KeyValue.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+import java.security.PublicKey;
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.keyvalues.DSAKeyValue;
+import org.apache.xml.security.keys.content.keyvalues.RSAKeyValue;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * The KeyValue element contains a single public key that may be useful in
+ * validating the signature. Structured formats for defining DSA (REQUIRED)
+ * and RSA (RECOMMENDED) public keys are defined in Signature Algorithms
+ * (section 6.4). The KeyValue element may include externally defined public
+ * keys values represented as PCDATA or element types from an external namespace.
+ *
+ * @author $Author$
+ */
+public class KeyValue extends SignatureElementProxy implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(KeyValue.class.getName());
+
+   /**
+    * Constructor KeyValue
+    *
+    * @param doc
+    * @param dsaKeyValue
+    */
+   public KeyValue(Document doc, DSAKeyValue dsaKeyValue) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this._constructionElement.appendChild(dsaKeyValue.getElement());
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Constructor KeyValue
+    *
+    * @param doc
+    * @param rsaKeyValue
+    */
+   public KeyValue(Document doc, RSAKeyValue rsaKeyValue) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this._constructionElement.appendChild(rsaKeyValue.getElement());
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Constructor KeyValue
+    *
+    * @param doc
+    * @param unknownKeyValue
+    */
+   public KeyValue(Document doc, Element unknownKeyValue) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this._constructionElement.appendChild(unknownKeyValue);
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Constructor KeyValue
+    *
+    * @param doc
+    * @param pk
+    */
+   public KeyValue(Document doc, PublicKey pk) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      if (pk instanceof java.security.interfaces.DSAPublicKey) {
+         DSAKeyValue dsa = new DSAKeyValue(this._doc, pk);
+
+         this._constructionElement.appendChild(dsa.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      } else if (pk instanceof java.security.interfaces.RSAPublicKey) {
+         RSAKeyValue rsa = new RSAKeyValue(this._doc, pk);
+
+         this._constructionElement.appendChild(rsa.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Constructor KeyValue
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public KeyValue(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Method getPublicKey
+    *
+    * @return the public key
+    * @throws XMLSecurityException
+    */
+   public PublicKey getPublicKey() throws XMLSecurityException {
+
+      
+         Element rsa = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+         				Constants._TAG_RSAKEYVALUE,0);
+         
+         if (rsa != null) {
+            RSAKeyValue kv = new RSAKeyValue(rsa,
+                                             this._baseURI);
+
+            return kv.getPublicKey();
+         }
+
+         Element dsa = XMLUtils.selectDsNode(this._constructionElement,
+         		 Constants._TAG_DSAKEYVALUE,0);
+            
+
+         if (dsa != null) {
+            DSAKeyValue kv = new DSAKeyValue(dsa,
+                                             this._baseURI);
+
+            return kv.getPublicKey();
+         }
+      
+
+      return null;
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_KEYVALUE;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/MgmtData.java b/src/org/apache/xml/security/keys/content/MgmtData.java
new file mode 100644
index 0000000..dd991bd
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/MgmtData.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class MgmtData extends SignatureElementProxy implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(MgmtData.class.getName());
+
+   /**
+    * Constructor MgmtData
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public MgmtData(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor MgmtData
+    *
+    * @param doc
+    * @param mgmtData
+    */
+   public MgmtData(Document doc, String mgmtData) {
+
+      super(doc);
+
+      this.addText(mgmtData);
+   }
+
+   /**
+    * Method getMgmtData
+    *
+    * @return the managment data
+    */
+   public String getMgmtData() {
+      return this.getTextFromTextChild();
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_MGMTDATA;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/PGPData.java b/src/org/apache/xml/security/keys/content/PGPData.java
new file mode 100644
index 0000000..8a8cc1f
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/PGPData.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ * $todo$ Implement
+ */
+public class PGPData extends SignatureElementProxy implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(PGPData.class.getName());
+
+   /**
+    * Constructor PGPData
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public PGPData(Element element, String BaseURI) throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_PGPDATA;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/RetrievalMethod.java b/src/org/apache/xml/security/keys/content/RetrievalMethod.java
new file mode 100644
index 0000000..df12843
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/RetrievalMethod.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class RetrievalMethod extends SignatureElementProxy
+        implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(RetrievalMethod.class.getName());
+   //J-
+    /** DSA retrieval */
+   public static final String TYPE_DSA     = Constants.SignatureSpecNS + "DSAKeyValue";
+   /** RSA retrieval */
+   public static final String TYPE_RSA     = Constants.SignatureSpecNS + "RSAKeyValue";
+   /** PGP retrieval */
+   public static final String TYPE_PGP     = Constants.SignatureSpecNS + "PGPData";
+   /** SPKI retrieval */
+   public static final String TYPE_SPKI    = Constants.SignatureSpecNS + "SPKIData";
+   /** MGMT retrieval */
+   public static final String TYPE_MGMT    = Constants.SignatureSpecNS + "MgmtData";
+   /** X509 retrieval */
+   public static final String TYPE_X509    = Constants.SignatureSpecNS + "X509Data";
+   /** RAWX509 retrieval */
+   public static final String TYPE_RAWX509 = Constants.SignatureSpecNS + "rawX509Certificate";
+   //J+
+
+   /**
+    * Constructor RetrievalMethod
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public RetrievalMethod(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor RetrievalMethod
+    *
+    * @param doc
+    * @param URI
+    * @param transforms
+    * @param Type
+    */
+   public RetrievalMethod(Document doc, String URI, Transforms transforms,
+                          String Type) {
+
+      super(doc);
+
+      this._constructionElement.setAttributeNS(null, Constants._ATT_URI, URI);
+
+      if (Type != null) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_TYPE, Type);
+      }
+
+      if (transforms != null) {
+         this._constructionElement.appendChild(transforms.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method getURIAttr
+    *
+    * @return the URI attribute
+    */
+   public Attr getURIAttr() {
+      return this._constructionElement.getAttributeNodeNS(null, Constants._ATT_URI);
+   }
+
+   /**
+    * Method getURI
+    *
+    * 
+    * @return URI string
+    */
+   public String getURI() {
+      return this.getURIAttr().getNodeValue();
+   }
+
+   /** @return the type*/
+   public String getType() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_TYPE);
+   }
+
+   /**
+    * Method getTransforms
+    *
+    *
+    * @throws XMLSecurityException
+    * @return the transforamitons
+    */
+   public Transforms getTransforms() throws XMLSecurityException {
+
+      try {
+       Element transformsElem =
+             XMLUtils.selectDsNode(this._constructionElement,                                                
+                                                Constants
+                                                   ._TAG_TRANSFORMS, 0);
+
+         if (transformsElem != null) {
+            return new Transforms(transformsElem, this._baseURI);
+         }
+
+         return null;
+      } catch (XMLSignatureException ex) {
+         throw new XMLSecurityException("empty", ex);
+      }
+   }
+   
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_RETRIEVALMETHOD;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/SPKIData.java b/src/org/apache/xml/security/keys/content/SPKIData.java
new file mode 100644
index 0000000..3d27969
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/SPKIData.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ * $todo$ implement
+ */
+public class SPKIData extends SignatureElementProxy implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(SPKIData.class.getName());
+
+   /**
+    * Constructor SPKIData
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public SPKIData(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_SPKIDATA;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/X509Data.java b/src/org/apache/xml/security/keys/content/X509Data.java
new file mode 100644
index 0000000..3b5f486
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/X509Data.java
@@ -0,0 +1,540 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content;
+
+
+
+import java.math.BigInteger;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.x509.XMLX509CRL;
+import org.apache.xml.security.keys.content.x509.XMLX509Certificate;
+import org.apache.xml.security.keys.content.x509.XMLX509IssuerSerial;
+import org.apache.xml.security.keys.content.x509.XMLX509SKI;
+import org.apache.xml.security.keys.content.x509.XMLX509SubjectName;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class X509Data extends SignatureElementProxy implements KeyInfoContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(X509Data.class.getName());
+
+   /**
+    * Constructor X509Data
+    *
+    * @param doc
+    */
+   public X509Data(Document doc) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Constructor X509Data
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public X509Data(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+      
+      boolean noElements=true;
+      Node sibling=this._constructionElement.getFirstChild();
+      while (sibling!=null) {
+      	 if (sibling.getNodeType()!=Node.ELEMENT_NODE) {
+      	 	sibling=sibling.getNextSibling();
+            continue;
+         }
+        noElements=false;
+         Element currentElem = (Element) sibling;
+         sibling=sibling.getNextSibling();
+         String localname = currentElem.getLocalName();
+
+         if (currentElem.getNamespaceURI().equals(Constants.SignatureSpecNS)) {
+            if (localname.equals(Constants._TAG_X509ISSUERSERIAL)) {
+               XMLX509IssuerSerial is = new XMLX509IssuerSerial(currentElem,
+                                           BaseURI);
+
+               this.add(is);
+            } else if (localname.equals(Constants._TAG_X509SKI)) {
+               XMLX509SKI ski = new XMLX509SKI(currentElem, BaseURI);
+
+               this.add(ski);
+            } else if (localname.equals(Constants._TAG_X509SUBJECTNAME)) {
+               XMLX509SubjectName sn = new XMLX509SubjectName(currentElem,
+                                          BaseURI);
+
+               this.add(sn);
+            } else if (localname.equals(Constants._TAG_X509CERTIFICATE)) {
+               XMLX509Certificate cert = new XMLX509Certificate(currentElem,
+                                            BaseURI);
+
+               this.add(cert);
+            } else if (localname.equals(Constants._TAG_X509CRL)) {
+               XMLX509CRL crl = new XMLX509CRL(currentElem, BaseURI);
+
+               this.add(crl);
+            } else {
+               log.warn("Found a " + currentElem.getTagName() + " element in "
+                        + Constants._TAG_X509DATA);
+               this.addUnknownElement(currentElem);
+            }
+         } else {
+            log.warn("Found a " + currentElem.getTagName() + " element in "
+                     + Constants._TAG_X509DATA);
+            this.addUnknownElement(currentElem);
+         }
+      }
+      if (noElements) {
+        Object exArgs[] = { "Elements", Constants._TAG_X509DATA };
+
+        throw new XMLSecurityException("xml.WrongContent", exArgs);
+     }
+
+   }
+
+   /**
+    * Method addIssuerSerial
+    *
+    * @param X509IssuerName
+    * @param X509SerialNumber
+    */
+   public void addIssuerSerial(String X509IssuerName,
+                               BigInteger X509SerialNumber) {
+      this.add(new XMLX509IssuerSerial(this._doc, X509IssuerName,
+                                       X509SerialNumber));
+   }
+
+   /**
+    * Method addIssuerSerial
+    *
+    * @param X509IssuerName
+    * @param X509SerialNumber
+    */
+   public void addIssuerSerial(String X509IssuerName, String X509SerialNumber) {
+      this.add(new XMLX509IssuerSerial(this._doc, X509IssuerName,
+                                       X509SerialNumber));
+   }
+
+   /**
+    * Method addIssuerSerial
+    *
+    * @param X509IssuerName
+    * @param X509SerialNumber
+    */
+   public void addIssuerSerial(String X509IssuerName, int X509SerialNumber) {
+      this.add(new XMLX509IssuerSerial(this._doc, X509IssuerName,
+                                       X509SerialNumber));
+   }
+
+   /**
+    * Method add
+    *
+    * @param xmlX509IssuerSerial
+    */
+   public void add(XMLX509IssuerSerial xmlX509IssuerSerial) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement
+            .appendChild(xmlX509IssuerSerial.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addSKI
+    *
+    * @param skiBytes
+    */
+   public void addSKI(byte[] skiBytes) {
+      this.add(new XMLX509SKI(this._doc, skiBytes));
+   }
+
+   /**
+    * Method addSKI
+    *
+    * @param x509certificate
+    * @throws XMLSecurityException
+    */
+   public void addSKI(X509Certificate x509certificate)
+           throws XMLSecurityException {
+      this.add(new XMLX509SKI(this._doc, x509certificate));
+   }
+
+   /**
+    * Method add
+    *
+    * @param xmlX509SKI
+    */
+   public void add(XMLX509SKI xmlX509SKI) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(xmlX509SKI.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addSubjectName
+    *
+    * @param subjectName
+    */
+   public void addSubjectName(String subjectName) {
+      this.add(new XMLX509SubjectName(this._doc, subjectName));
+   }
+
+   /**
+    * Method addSubjectName
+    *
+    * @param x509certificate
+    */
+   public void addSubjectName(X509Certificate x509certificate) {
+      this.add(new XMLX509SubjectName(this._doc, x509certificate));
+   }
+
+   /**
+    * Method add
+    *
+    * @param xmlX509SubjectName
+    */
+   public void add(XMLX509SubjectName xmlX509SubjectName) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(xmlX509SubjectName.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addCertificate
+    *
+    * @param x509certificate
+    * @throws XMLSecurityException
+    */
+   public void addCertificate(X509Certificate x509certificate)
+           throws XMLSecurityException {
+      this.add(new XMLX509Certificate(this._doc, x509certificate));
+   }
+
+   /**
+    * Method addCertificate
+    *
+    * @param x509certificateBytes
+    */
+   public void addCertificate(byte[] x509certificateBytes) {
+      this.add(new XMLX509Certificate(this._doc, x509certificateBytes));
+   }
+
+   /**
+    * Method add
+    *
+    * @param xmlX509Certificate
+    */
+   public void add(XMLX509Certificate xmlX509Certificate) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(xmlX509Certificate.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addCRL
+    *
+    * @param crlBytes
+    */
+   public void addCRL(byte[] crlBytes) {
+      this.add(new XMLX509CRL(this._doc, crlBytes));
+   }
+
+   /**
+    * Method add
+    *
+    * @param xmlX509CRL
+    */
+   public void add(XMLX509CRL xmlX509CRL) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(xmlX509CRL.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addUnknownElement
+    *
+    * @param element
+    */
+   public void addUnknownElement(Element element) {
+
+      if (this._state == MODE_SIGN) {
+         this._constructionElement.appendChild(element);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method lengthIssuerSerial
+    *
+    * @return the number of IssuerSerial elements in this X509Data
+    */
+   public int lengthIssuerSerial() {
+      return this.length(Constants.SignatureSpecNS,
+                         Constants._TAG_X509ISSUERSERIAL);
+   }
+
+   /**
+    * Method lengthSKI
+    *
+    * @return the number of SKI elements in this X509Data
+    */
+   public int lengthSKI() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_X509SKI);
+   }
+
+   /**
+    * Method lengthSubjectName
+    *
+    * @return the number of SubjectName elements in this X509Data
+    */
+   public int lengthSubjectName() {
+      return this.length(Constants.SignatureSpecNS,
+                         Constants._TAG_X509SUBJECTNAME);
+   }
+
+   /**
+    * Method lengthCertificate
+    *
+    * @return the number of Certificate elements in this X509Data
+    */
+   public int lengthCertificate() {
+      return this.length(Constants.SignatureSpecNS,
+                         Constants._TAG_X509CERTIFICATE);
+   }
+
+   /**
+    * Method lengthCRL
+    *
+    * @return the number of CRL elements in this X509Data
+    */
+   public int lengthCRL() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_X509CRL);
+   }
+
+   /**
+    * Method lengthUnknownElement
+    *
+    * @return the number of UnknownElement elements in this X509Data
+    */
+   public int lengthUnknownElement() {
+      
+      int result = 0;
+      Node n=this._constructionElement.getFirstChild();
+      while (n!=null){         
+
+         if ((n.getNodeType() == Node.ELEMENT_NODE)
+                 &&!n.getNamespaceURI().equals(Constants.SignatureSpecNS)) {
+            result += 1;
+         }
+         n=n.getNextSibling();
+      }
+      
+      return result;
+   }
+
+   /**
+    * Method itemIssuerSerial
+    *
+    * @param i
+    * @return the X509IssuerSerial, null if not present
+    * @throws XMLSecurityException
+    */
+   public XMLX509IssuerSerial itemIssuerSerial(int i)
+           throws XMLSecurityException {
+
+      Element e =
+        XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                       Constants._TAG_X509ISSUERSERIAL,i);
+
+      if (e != null) {
+         return new XMLX509IssuerSerial(e, this._baseURI);
+      } 
+      return null;
+   }
+
+   /**
+    * Method itemSKI
+    *
+    * @param i
+    * @return the X509SKI, null if not present
+    * @throws XMLSecurityException
+    */
+   public XMLX509SKI itemSKI(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_X509SKI,i);
+
+      if (e != null) {
+         return new XMLX509SKI(e, this._baseURI);
+      }
+      return null;
+   }
+
+   /**
+    * Method itemSubjectName
+    *
+    * @param i
+    * @return the X509SubjectName, null if not present
+    * @throws XMLSecurityException
+    */
+   public XMLX509SubjectName itemSubjectName(int i)
+           throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_X509SUBJECTNAME,i);
+
+      if (e != null) {
+         return new XMLX509SubjectName(e, this._baseURI);
+      } 
+       return null;
+   }
+
+   /**
+    * Method itemCertificate
+    *
+    * @param i
+    * @return the X509Certifacte, null if not present
+    * @throws XMLSecurityException
+    */
+   public XMLX509Certificate itemCertificate(int i)
+           throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_X509CERTIFICATE,i);
+
+      if (e != null) {
+         return new XMLX509Certificate(e, this._baseURI);
+      } 
+       return null;
+   }
+
+   /**
+    * Method itemCRL
+    *
+    * @param i
+    * @return the X509CRL, null if not present
+    * @throws XMLSecurityException
+    */
+   public XMLX509CRL itemCRL(int i) throws XMLSecurityException {
+
+      Element e = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                                Constants._TAG_X509CRL,i);
+
+      if (e != null) {
+         return new XMLX509CRL(e, this._baseURI);
+      } 
+       return null;
+   }
+
+   /**
+    * Method itemUnknownElement
+    *
+    * @param i
+    * @return the Unknown Element at i
+    * TODO implement
+    **/
+   public Element itemUnknownElement(int i) {
+	  log.debug("itemUnknownElement not implemented:"+i);
+      return null;
+   }
+
+   /**
+    * Method containsIssuerSerial
+    *
+    * @return true if this X509Data contains a IssuerSerial
+    */
+   public boolean containsIssuerSerial() {
+      return this.lengthIssuerSerial() > 0;
+   }
+
+   /**
+    * Method containsSKI
+    *
+    * @return true if this X509Data contains a SKI
+    */
+   public boolean containsSKI() {
+      return this.lengthSKI() > 0;
+   }
+
+   /**
+    * Method containsSubjectName
+    *
+    * @return true if this X509Data contains a SubjectName
+    */
+   public boolean containsSubjectName() {
+      return this.lengthSubjectName() > 0;
+   }
+
+   /**
+    * Method containsCertificate
+    *
+    * @return true if this X509Data contains a Certificate
+    */
+   public boolean containsCertificate() {
+      return this.lengthCertificate() > 0;
+   }
+
+   /**
+    * Method containsCRL
+    *
+    * @return true if this X509Data contains a CRL
+    */
+   public boolean containsCRL() {
+      return this.lengthCRL() > 0;
+   }
+
+   /**
+    * Method containsUnknownElement
+    *
+    * @return true if this X509Data contains an UnknownElement
+    */
+   public boolean containsUnknownElement() {
+      return this.lengthUnknownElement() > 0;
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_X509DATA;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/keyvalues/DSAKeyValue.java b/src/org/apache/xml/security/keys/content/keyvalues/DSAKeyValue.java
new file mode 100644
index 0000000..c2a5840
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/keyvalues/DSAKeyValue.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.keyvalues;
+
+
+
+import java.math.BigInteger;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
+import java.security.interfaces.DSAPublicKey;
+import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.InvalidKeySpecException;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.I18n;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class DSAKeyValue extends SignatureElementProxy
+        implements KeyValueContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(DSAKeyValue.class.getName());
+
+   /**
+    * Constructor DSAKeyValue
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public DSAKeyValue(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor DSAKeyValue
+    *
+    * @param doc
+    * @param P
+    * @param Q
+    * @param G
+    * @param Y
+    */
+   public DSAKeyValue(Document doc, BigInteger P, BigInteger Q, BigInteger G,
+                      BigInteger Y) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this.addBigIntegerElement(P, Constants._TAG_P);
+      this.addBigIntegerElement(Q, Constants._TAG_Q);
+      this.addBigIntegerElement(G, Constants._TAG_G);
+      this.addBigIntegerElement(Y, Constants._TAG_Y);
+   }
+
+   /**
+    * Constructor DSAKeyValue
+    *
+    * @param doc
+    * @param key
+    * @throws IllegalArgumentException
+    */
+   public DSAKeyValue(Document doc, Key key) throws IllegalArgumentException {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      if (key instanceof java.security.interfaces.DSAPublicKey) {
+         this.addBigIntegerElement(((DSAPublicKey) key).getParams().getP(),
+                                   Constants._TAG_P);
+         this.addBigIntegerElement(((DSAPublicKey) key).getParams().getQ(),
+                                   Constants._TAG_Q);
+         this.addBigIntegerElement(((DSAPublicKey) key).getParams().getG(),
+                                   Constants._TAG_G);
+         this.addBigIntegerElement(((DSAPublicKey) key).getY(),
+                                   Constants._TAG_Y);
+      } else {
+         Object exArgs[] = { Constants._TAG_DSAKEYVALUE,
+                             key.getClass().getName() };
+
+         throw new IllegalArgumentException(I18n
+            .translate("KeyValue.IllegalArgument", exArgs));
+      }
+   }
+
+   /** @inheritDoc */
+   public PublicKey getPublicKey() throws XMLSecurityException {
+
+      try {
+         DSAPublicKeySpec pkspec =
+            new DSAPublicKeySpec(this
+               .getBigIntegerFromChildElement(Constants._TAG_Y, Constants
+               .SignatureSpecNS), this
+                  .getBigIntegerFromChildElement(Constants._TAG_P, Constants
+                  .SignatureSpecNS), this
+                     .getBigIntegerFromChildElement(Constants._TAG_Q, Constants
+                     .SignatureSpecNS), this
+                        .getBigIntegerFromChildElement(Constants
+                           ._TAG_G, Constants.SignatureSpecNS));
+         KeyFactory dsaFactory = KeyFactory.getInstance("DSA");
+         PublicKey pk = dsaFactory.generatePublic(pkspec);
+
+         return pk;
+      } catch (NoSuchAlgorithmException ex) {
+         throw new XMLSecurityException("empty", ex);
+      } catch (InvalidKeySpecException ex) {
+         throw new XMLSecurityException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_DSAKEYVALUE;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/keyvalues/KeyValueContent.java b/src/org/apache/xml/security/keys/content/keyvalues/KeyValueContent.java
new file mode 100644
index 0000000..7d1ab71
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/keyvalues/KeyValueContent.java
@@ -0,0 +1,44 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.keyvalues;
+
+
+
+import java.security.PublicKey;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+/**
+ *
+ *
+ *
+ *
+ * @author $Author$
+ *
+ */
+public interface KeyValueContent {
+
+   /**
+    * Method getPublicKey
+    *
+    * @return the public key
+    * @throws XMLSecurityException
+    */
+   public PublicKey getPublicKey()
+      throws XMLSecurityException;
+}
diff --git a/src/org/apache/xml/security/keys/content/keyvalues/RSAKeyValue.java b/src/org/apache/xml/security/keys/content/keyvalues/RSAKeyValue.java
new file mode 100644
index 0000000..996e3e3
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/keyvalues/RSAKeyValue.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.keyvalues;
+
+
+
+import java.math.BigInteger;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.RSAPublicKeySpec;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.I18n;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class RSAKeyValue extends SignatureElementProxy
+        implements KeyValueContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+			RSAKeyValue.class.getName());
+
+   /**
+    * Constructor RSAKeyValue
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public RSAKeyValue(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor RSAKeyValue
+    *
+    * @param doc
+    * @param modulus
+    * @param exponent
+    */
+   public RSAKeyValue(Document doc, BigInteger modulus, BigInteger exponent) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this.addBigIntegerElement(modulus, Constants._TAG_MODULUS);
+      this.addBigIntegerElement(exponent, Constants._TAG_EXPONENT);
+   }
+
+   /**
+    * Constructor RSAKeyValue
+    *
+    * @param doc
+    * @param key
+    * @throws IllegalArgumentException
+    */
+   public RSAKeyValue(Document doc, Key key) throws IllegalArgumentException {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      if (key instanceof java.security.interfaces.RSAPublicKey ) {
+         this.addBigIntegerElement(((RSAPublicKey) key).getModulus(),
+                                   Constants._TAG_MODULUS);
+         this.addBigIntegerElement(((RSAPublicKey) key).getPublicExponent(),
+                                   Constants._TAG_EXPONENT);
+      } else {
+         Object exArgs[] = { Constants._TAG_RSAKEYVALUE,
+                             key.getClass().getName() };
+
+         throw new IllegalArgumentException(I18n
+            .translate("KeyValue.IllegalArgument", exArgs));
+      }
+   }
+
+   /** @inheritDoc */
+   public PublicKey getPublicKey() throws XMLSecurityException {
+
+      try {
+         KeyFactory rsaFactory = KeyFactory.getInstance("RSA");
+
+         // KeyFactory rsaFactory = KeyFactory.getInstance(JCE_RSA);
+         RSAPublicKeySpec rsaKeyspec =
+            new RSAPublicKeySpec(this
+               .getBigIntegerFromChildElement(Constants._TAG_MODULUS, Constants
+               .SignatureSpecNS), this
+                  .getBigIntegerFromChildElement(Constants
+                     ._TAG_EXPONENT, Constants.SignatureSpecNS));
+         PublicKey pk = rsaFactory.generatePublic(rsaKeyspec);
+
+         return pk;
+      } catch (NoSuchAlgorithmException ex) {
+         throw new XMLSecurityException("empty", ex);
+      } catch (InvalidKeySpecException ex) {
+         throw new XMLSecurityException("empty", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_RSAKEYVALUE;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/keyvalues/package.html b/src/org/apache/xml/security/keys/content/keyvalues/package.html
new file mode 100644
index 0000000..b570dab
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/keyvalues/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+basic handlers for elements that can occur inside <CODE>ds:KeyValue</CODE>.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/keys/content/package.html b/src/org/apache/xml/security/keys/content/package.html
new file mode 100644
index 0000000..3850a83
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+basic handlers for elements that can occur inside <CODE>ds:KeyInfo</CODE>.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/keys/content/x509/XMLX509CRL.java b/src/org/apache/xml/security/keys/content/x509/XMLX509CRL.java
new file mode 100644
index 0000000..65ba891
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/XMLX509CRL.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.x509;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ *
+ *
+ *
+ * @author $Author$
+ *
+ */
+public class XMLX509CRL extends SignatureElementProxy
+        implements XMLX509DataContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLX509CRL.class.getName());
+
+   /**
+    * Constructor XMLX509CRL
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public XMLX509CRL(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor X509CRL
+    *
+    * @param doc
+    * @param crlBytes
+    */
+   public XMLX509CRL(Document doc, byte[] crlBytes) {
+
+      super(doc);
+
+      this.addBase64Text(crlBytes);
+   }
+
+   /**
+    * Method getCRLBytes
+    *
+    * @return the CRL bytes
+    * @throws XMLSecurityException
+    */
+   public byte[] getCRLBytes() throws XMLSecurityException {
+      return this.getBytesFromTextChild();
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_X509CRL;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/x509/XMLX509Certificate.java b/src/org/apache/xml/security/keys/content/x509/XMLX509Certificate.java
new file mode 100644
index 0000000..3d43fff
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/XMLX509Certificate.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.x509;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.security.PublicKey;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class XMLX509Certificate extends SignatureElementProxy
+        implements XMLX509DataContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLX509Certificate.class.getName());
+
+   /** Field JCA_CERT_ID */
+   public static final String JCA_CERT_ID = "X.509";
+
+   /**
+    * Constructor X509Certificate
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public XMLX509Certificate(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor X509Certificate
+    *
+    * @param doc
+    * @param certificateBytes
+    */
+   public XMLX509Certificate(Document doc, byte[] certificateBytes) {
+
+      super(doc);
+
+      this.addBase64Text(certificateBytes);
+   }
+
+   /**
+    * Constructor XMLX509Certificate
+    *
+    * @param doc
+    * @param x509certificate
+    * @throws XMLSecurityException
+    */
+   public XMLX509Certificate(Document doc, X509Certificate x509certificate)
+           throws XMLSecurityException {
+
+      super(doc);
+
+      try {
+         this.addBase64Text(x509certificate.getEncoded());
+      } catch (java.security.cert.CertificateEncodingException ex) {
+         throw new XMLSecurityException("empty", ex);
+      }
+   }
+
+   /**
+    * Method getCertificateBytes
+    *
+    * @return the certificate bytes
+    * @throws XMLSecurityException
+    */
+   public byte[] getCertificateBytes() throws XMLSecurityException {
+      return this.getBytesFromTextChild();
+   }
+
+   /**
+    * Method getX509Certificate
+    *
+    * @return the x509 certificate
+    * @throws XMLSecurityException
+    */
+   public X509Certificate getX509Certificate() throws XMLSecurityException {
+
+      try {
+         byte certbytes[] = this.getCertificateBytes();
+         CertificateFactory certFact =
+            CertificateFactory.getInstance(XMLX509Certificate.JCA_CERT_ID);
+         X509Certificate cert =
+            (X509Certificate) certFact
+               .generateCertificate(new ByteArrayInputStream(certbytes));
+
+         if (cert != null) {
+            return cert;
+         }
+
+         return null;
+      } catch (CertificateException ex) {
+         throw new XMLSecurityException("empty", ex);
+      }
+   }
+
+   /**
+    * Method getPublicKey
+    *
+    * @return teh publickey
+    * @throws XMLSecurityException
+    */
+   public PublicKey getPublicKey() throws XMLSecurityException {
+
+      X509Certificate cert = this.getX509Certificate();
+
+      if (cert != null) {
+         return cert.getPublicKey();
+      }
+
+      return null;
+   }
+
+   /** @inheritDoc */
+   public boolean equals(Object obj) {
+
+      try {
+         if (!obj.getClass().getName().equals(this.getClass().getName())) {
+            return false;
+         }
+
+         XMLX509Certificate other = (XMLX509Certificate) obj;
+
+         /** $todo$ or should be create X509Certificates and use the equals() from the Certs */
+         return java.security.MessageDigest.isEqual(other.getCertificateBytes(),
+                                        this.getCertificateBytes());
+      } catch (XMLSecurityException ex) {
+         return false;
+      }
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_X509CERTIFICATE;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/x509/XMLX509DataContent.java b/src/org/apache/xml/security/keys/content/x509/XMLX509DataContent.java
new file mode 100644
index 0000000..8d138fb
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/XMLX509DataContent.java
@@ -0,0 +1,30 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.x509;
+
+
+
+
+
+/**
+ * Just used for tagging contents that are allowed inside a ds:X509Data Element.
+ *
+ * @author $Author$
+ */
+public interface XMLX509DataContent {
+}
diff --git a/src/org/apache/xml/security/keys/content/x509/XMLX509IssuerSerial.java b/src/org/apache/xml/security/keys/content/x509/XMLX509IssuerSerial.java
new file mode 100644
index 0000000..af3e6fd
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/XMLX509IssuerSerial.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.x509;
+
+
+
+import java.math.BigInteger;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.RFC2253Parser;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class XMLX509IssuerSerial extends SignatureElementProxy
+        implements XMLX509DataContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    XMLX509IssuerSerial.class.getName());
+
+   /**
+    * Constructor XMLX509IssuerSerial
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public XMLX509IssuerSerial(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor XMLX509IssuerSerial
+    *
+    * @param doc
+    * @param X509IssuerName
+    * @param X509SerialNumber
+    */
+   public XMLX509IssuerSerial(Document doc, String X509IssuerName,
+                              BigInteger X509SerialNumber) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this.addTextElement(X509IssuerName, Constants._TAG_X509ISSUERNAME);
+      XMLUtils.addReturnToElement(this._constructionElement);
+      this.addTextElement(X509SerialNumber.toString(), Constants._TAG_X509SERIALNUMBER);
+   }
+
+   /**
+    * Constructor XMLX509IssuerSerial
+    *
+    * @param doc
+    * @param X509IssuerName
+    * @param X509SerialNumber
+    */
+   public XMLX509IssuerSerial(Document doc, String X509IssuerName,
+                              String X509SerialNumber) {
+      this(doc, X509IssuerName, new BigInteger(X509SerialNumber));
+   }
+
+   /**
+    * Constructor XMLX509IssuerSerial
+    *
+    * @param doc
+    * @param X509IssuerName
+    * @param X509SerialNumber
+    */
+   public XMLX509IssuerSerial(Document doc, String X509IssuerName,
+                              int X509SerialNumber) {
+      this(doc, X509IssuerName,
+           new BigInteger(Integer.toString(X509SerialNumber)));
+   }
+
+   /**
+    * Constructor XMLX509IssuerSerial
+    *
+    * @param doc
+    * @param x509certificate
+    */
+   public XMLX509IssuerSerial(Document doc, X509Certificate x509certificate) {
+
+      this(doc,
+           RFC2253Parser.normalize(x509certificate.getIssuerDN().getName()),
+           x509certificate.getSerialNumber());
+   }
+
+   /**
+    * Method getSerialNumber
+    *
+    *
+    * @return the serial number
+    */
+   public BigInteger getSerialNumber() {
+
+      String text =
+         this.getTextFromChildElement(Constants._TAG_X509SERIALNUMBER,
+                                      Constants.SignatureSpecNS);
+      if (log.isDebugEnabled())
+      	log.debug("In dem X509SerialNumber wurde gefunden: " + text);
+
+      return new BigInteger(text);
+   }
+
+   /**
+    * Method getSerialNumberInteger
+    *
+    *
+    * @return the serial number as plain int
+    */
+   public int getSerialNumberInteger() {
+      return this.getSerialNumber().intValue();
+   }
+
+   /**
+    * Method getIssuerName
+    *
+    *
+    * @return the issuer name
+    */
+   public String getIssuerName()  {
+
+      return RFC2253Parser
+         .normalize(this
+            .getTextFromChildElement(Constants._TAG_X509ISSUERNAME,
+                                     Constants.SignatureSpecNS));
+   }
+
+   /** @inheritDoc */
+   public boolean equals(Object obj) {
+
+      if (!obj.getClass().getName().equals(this.getClass().getName())) {
+         return false;
+      }
+
+      XMLX509IssuerSerial other = (XMLX509IssuerSerial) obj;
+
+
+      if (other.getSerialNumber().equals(this.getSerialNumber())
+                 && other.getIssuerName().equals(this.getIssuerName())) {
+           return true;
+      }
+
+       return false;      
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_X509ISSUERSERIAL;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/x509/XMLX509SKI.java b/src/org/apache/xml/security/keys/content/x509/XMLX509SKI.java
new file mode 100644
index 0000000..7f155b5
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/XMLX509SKI.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.x509;
+
+
+
+import java.io.IOException;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.security.cert.X509Certificate;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import sun.security.util.DerValue;
+
+
+/**
+ * Handles SubjectKeyIdentifier (SKI) for X.509v3.
+ *
+ * @author $Author$
+ * @see <A HREF="http://java.sun.com/products/jdk/1.2/docs/api/java/security/cert/X509Extension.html">Interface X509Extension</A>
+ */
+public class XMLX509SKI extends SignatureElementProxy
+        implements XMLX509DataContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLX509SKI.class.getName());
+
+   /**
+    * <CODE>SubjectKeyIdentifier (id-ce-subjectKeyIdentifier) (2.5.29.14)</CODE>:
+    * This extension identifies the public key being certified. It enables
+    * distinct keys used by the same subject to be differentiated
+    * (e.g., as key updating occurs).
+    * <BR />
+    * A key identifer shall be unique with respect to all key identifiers
+    * for the subject with which it is used. This extension is always non-critical.
+    */
+   public static final String SKI_OID = "2.5.29.14";
+
+   /**
+    * Constructor X509SKI
+    *
+    * @param doc
+    * @param skiBytes
+    */
+   public XMLX509SKI(Document doc, byte[] skiBytes) {
+
+      super(doc);
+
+      this.addBase64Text(skiBytes);
+   }
+
+   /**
+    * Constructor XMLX509SKI
+    *
+    * @param doc
+    * @param x509certificate
+    * @throws XMLSecurityException
+    */
+   public XMLX509SKI(Document doc, X509Certificate x509certificate)
+           throws XMLSecurityException {
+
+      super(doc);
+
+      this.addBase64Text(XMLX509SKI.getSKIBytesFromCert(x509certificate));
+   }
+
+   /**
+    * Constructor XMLX509SKI
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public XMLX509SKI(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Method getSKIBytes
+    *
+    * @return the skibytes
+    * @throws XMLSecurityException
+    */
+   public byte[] getSKIBytes() throws XMLSecurityException {
+      return this.getBytesFromTextChild();
+   }
+
+   /**
+    * Method getSKIBytesFromCert
+    *
+    * @param cert
+    * @return sky bytes from the given certificate
+    *
+    * @throws XMLSecurityException
+    * @see java.security.cert.X509Extension#getExtensionValue(java.lang.String)
+    */
+   public static byte[] getSKIBytesFromCert(X509Certificate cert)
+           throws XMLSecurityException {
+
+      try {
+
+         /*
+          * Gets the DER-encoded OCTET string for the extension value (extnValue)
+          * identified by the passed-in oid String. The oid string is
+          * represented by a set of positive whole numbers separated by periods.
+          */
+         byte[] derEncodedValue = cert.getExtensionValue(XMLX509SKI.SKI_OID);
+
+         if (cert.getVersion() < 3) {
+            Object exArgs[] = { new Integer(cert.getVersion()) };
+
+            throw new XMLSecurityException("certificate.noSki.lowVersion",
+                                           exArgs);
+         }
+
+          byte[] extensionValue = null;
+          
+          /**
+           * Use sun.security.util.DerValue if it is present.
+           */ 
+          try {              
+                  DerValue dervalue = new DerValue(derEncodedValue);
+                  if (dervalue == null) {
+                      throw new XMLSecurityException("certificate.noSki.null");
+                  }
+                  if (dervalue.tag != DerValue.tag_OctetString) {
+                      throw new XMLSecurityException("certificate.noSki.notOctetString");
+                  }
+                  extensionValue = dervalue.getOctetString();              
+          } catch (NoClassDefFoundError e) {
+          }
+          
+          /**
+           * Fall back to org.bouncycastle.asn1.DERInputStream
+           */ 
+          if (extensionValue == null) {
+              try {
+                  Class clazz = Class.forName("org.bouncycastle.asn1.DERInputStream");
+                  if (clazz != null) {
+                      Constructor constructor = clazz.getConstructor(new Class[]{InputStream.class});
+                      InputStream is = (InputStream) constructor.newInstance(new Object[]{new ByteArrayInputStream(derEncodedValue)});
+                      Method method = clazz.getMethod("readObject", new Class[]{});
+                      Object obj = method.invoke(is, new Object[]{});
+                      if (obj == null) {
+                          throw new XMLSecurityException("certificate.noSki.null");
+                      }
+                      Class clazz2 = Class.forName("org.bouncycastle.asn1.ASN1OctetString");
+                      if (!clazz2.isInstance(obj)) {
+                          throw new XMLSecurityException("certificate.noSki.notOctetString");
+                      }
+                      Method method2 = clazz2.getMethod("getOctets", new Class[]{});
+                      extensionValue = (byte[]) method2.invoke(obj, new Object[]{});
+                  }
+              } catch (Throwable t) {
+              }
+          }
+
+         /**
+          * Strip away first two bytes from the DerValue (tag and length)
+          */
+         byte abyte0[] = new byte[extensionValue.length - 2];
+
+         System.arraycopy(extensionValue, 2, abyte0, 0, abyte0.length);
+
+         /*
+         byte abyte0[] = new byte[derEncodedValue.length - 4];
+         System.arraycopy(derEncodedValue, 4, abyte0, 0, abyte0.length);
+         */
+         if (log.isDebugEnabled())
+         	log.debug("Base64 of SKI is " + Base64.encode(abyte0));
+
+         return abyte0;
+      } catch (IOException ex) {
+         throw new XMLSecurityException("generic.EmptyMessage", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   public boolean equals(Object obj) {
+
+      if (!obj.getClass().getName().equals(this.getClass().getName())) {
+         return false;
+      }
+
+      XMLX509SKI other = (XMLX509SKI) obj;
+
+      try {
+         return java.security.MessageDigest.isEqual(other.getSKIBytes(),
+                                        this.getSKIBytes());
+      } catch (XMLSecurityException ex) {
+         return false;
+      }
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_X509SKI;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/x509/XMLX509SubjectName.java b/src/org/apache/xml/security/keys/content/x509/XMLX509SubjectName.java
new file mode 100644
index 0000000..6d937dc
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/XMLX509SubjectName.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.content.x509;
+
+
+
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.RFC2253Parser;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author $Author$
+ */
+public class XMLX509SubjectName extends SignatureElementProxy
+        implements XMLX509DataContent {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLX509SubjectName.class.getName());
+
+   /**
+    * Constructor X509SubjectName
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public XMLX509SubjectName(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Constructor X509SubjectName
+    *
+    * @param doc
+    * @param X509SubjectNameString
+    */
+   public XMLX509SubjectName(Document doc, String X509SubjectNameString) {
+
+      super(doc);
+
+      this.addText(X509SubjectNameString);
+   }
+
+   /**
+    * Constructor XMLX509SubjectName
+    *
+    * @param doc
+    * @param x509certificate
+    */
+   public XMLX509SubjectName(Document doc, X509Certificate x509certificate) {
+      this(doc,
+           RFC2253Parser.normalize(x509certificate.getSubjectDN().getName()));
+   }
+
+   /**
+    * Method getSubjectName
+    *
+    *
+    * @return the subject name
+    */
+   public String getSubjectName() {
+      return RFC2253Parser.normalize(this.getTextFromTextChild());
+   }
+
+   /** @inheritDoc */
+   public boolean equals(Object obj) {
+
+      if (!obj.getClass().getName().equals(this.getClass().getName())) {
+         return false;
+      }
+
+      XMLX509SubjectName other = (XMLX509SubjectName) obj;
+      String otherSubject = other.getSubjectName();
+      String thisSubject = this.getSubjectName();
+
+      if (otherSubject.equals(thisSubject)) {
+            return true;
+      }
+
+       return false;
+      
+   }
+   
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_X509SUBJECTNAME;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/content/x509/package.html b/src/org/apache/xml/security/keys/content/x509/package.html
new file mode 100644
index 0000000..7b21358
--- /dev/null
+++ b/src/org/apache/xml/security/keys/content/x509/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+basic handlers for elements that can occur inside <CODE>ds:X509Data</CODE>.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/keys/keyresolver/InvalidKeyResolverException.java b/src/org/apache/xml/security/keys/keyresolver/InvalidKeyResolverException.java
new file mode 100644
index 0000000..8949e74
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/InvalidKeyResolverException.java
@@ -0,0 +1,86 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ *
+ * @author $Author$
+ */
+public class InvalidKeyResolverException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor InvalidKeyResolverException
+    *
+    */
+   public InvalidKeyResolverException() {
+      super();
+   }
+
+   /**
+    * Constructor InvalidKeyResolverException
+    *
+    * @param _msgID
+    */
+   public InvalidKeyResolverException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor InvalidKeyResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public InvalidKeyResolverException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor InvalidKeyResolverException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public InvalidKeyResolverException(String _msgID,
+                                      Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor InvalidKeyResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public InvalidKeyResolverException(String _msgID, Object exArgs[],
+                                      Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java b/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java
new file mode 100644
index 0000000..a6f4087
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/KeyResolver.java
@@ -0,0 +1,317 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.crypto.SecretKey;
+
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * KeyResolver is factory class for subclass of KeyResolverSpi that
+ * represent child element of KeyInfo.
+ *
+ * @author $Author$
+ * @version %I%, %G%
+ */
+public class KeyResolver {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(KeyResolver.class.getName());
+
+   /** Field _alreadyInitialized */
+   static boolean _alreadyInitialized = false;
+
+   /** Field _resolverVector */
+   static List _resolverVector = null;
+
+   /** Field _resolverSpi */
+   protected KeyResolverSpi _resolverSpi = null;
+
+   /** Field _storage */
+   protected StorageResolver _storage = null;
+
+   /**
+    * Constructor ResourceResolver
+    *
+    * @param className
+    * @throws ClassNotFoundException
+    * @throws IllegalAccessException
+    * @throws InstantiationException
+    */
+   private KeyResolver(String className)
+           throws ClassNotFoundException, IllegalAccessException,
+                  InstantiationException {
+      this._resolverSpi =
+         (KeyResolverSpi) Class.forName(className).newInstance();
+   }
+
+   /**
+    * Method length
+    *
+    * @return the length of resolvers registed
+    */
+   public static int length() {
+      return KeyResolver._resolverVector.size();
+   }
+
+   /**
+    * Method item
+    *
+    * @param i
+    * @return the number i resolver registerd
+    * @throws KeyResolverException
+    */
+   public static KeyResolver item(int i) throws KeyResolverException {
+
+	   KeyResolver resolver = (KeyResolver) KeyResolver._resolverVector.get(i);
+      if (resolver==null) {
+         throw new KeyResolverException("utils.resolver.noClass");
+      }
+
+      return resolver;
+   }
+
+   /**
+    * Method getInstance
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return the instance that happends to implement the thing.
+    * 
+    * @throws KeyResolverException
+    */
+   public static final KeyResolver getInstance(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      for (int i = 0; i < KeyResolver._resolverVector.size(); i++) {
+		  KeyResolver resolver=
+            (KeyResolver) KeyResolver._resolverVector.get(i);
+
+		  if (resolver==null) {
+            Object exArgs[] = {
+               (((element != null)
+                 && (element.getNodeType() == Node.ELEMENT_NODE))
+                ? element.getTagName()
+                : "null") };
+
+            throw new KeyResolverException("utils.resolver.noClass", exArgs);
+         }
+         if (log.isDebugEnabled())
+         	log.debug("check resolvability by class " + resolver.getClass());
+
+         if (resolver.canResolve(element, BaseURI, storage)) {
+            return resolver;
+         }
+      }
+
+      Object exArgs[] = {
+         (((element != null) && (element.getNodeType() == Node.ELEMENT_NODE))
+          ? element.getTagName()
+          : "null") };
+
+      throw new KeyResolverException("utils.resolver.noClass", exArgs);
+   }
+
+   /**
+    * The init() function is called by org.apache.xml.security.Init.init()
+    */
+   public static void init() {
+
+      if (!KeyResolver._alreadyInitialized) {
+         KeyResolver._resolverVector = new ArrayList(10);
+         _alreadyInitialized = true;
+      }
+   }
+
+   /**
+    * This method is used for registering {@link KeyResolverSpi}s which are
+    * available to <I>all</I> {@link org.apache.xml.security.keys.KeyInfo} objects. This means that
+    * personalized {@link KeyResolverSpi}s should only be registered directly
+    * to the {@link org.apache.xml.security.keys.KeyInfo} using 
+    * {@link org.apache.xml.security.keys.KeyInfo#registerInternalKeyResolver}.
+    *
+    * @param className
+ * @throws InstantiationException 
+ * @throws IllegalAccessException 
+ * @throws ClassNotFoundException 
+    */
+   public static void register(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
+      KeyResolver._resolverVector.add(new KeyResolver(className));
+   }
+
+   /**
+    * This method is used for registering {@link KeyResolverSpi}s which are
+    * available to <I>all</I> {@link org.apache.xml.security.keys.KeyInfo} objects. This means that
+    * personalized {@link KeyResolverSpi}s should only be registered directly
+    * to the {@link org.apache.xml.security.keys.KeyInfo} using {@link org.apache.xml.security.keys.KeyInfo#registerInternalKeyResolver}.
+    *
+    * @param className
+    */
+   public static void registerAtStart(String className) {
+      KeyResolver._resolverVector.add(0, className);
+   }
+
+   /*
+    * Method resolve
+    *
+    * @param element
+    *
+    * @throws KeyResolverException
+    */
+
+   /**
+    * Method resolveStatic
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return resolve from the static register an element
+    * 
+    * @throws KeyResolverException
+    */
+   public static PublicKey resolveStatic(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      KeyResolver myResolver = KeyResolver.getInstance(element, BaseURI,
+                                  storage);
+
+      return myResolver.resolvePublicKey(element, BaseURI, storage);
+   }
+
+   /**
+    * Method resolve
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage 
+    * @return resolved public key from the registered from the elements
+    * 
+    * @throws KeyResolverException
+    */
+   public PublicKey resolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+      return this._resolverSpi.engineResolvePublicKey(element, BaseURI, storage);
+   }
+
+   /**
+    * Method resolveX509Certificate
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return resolved X509certificate key from the registered from the elements
+    * 
+    * @throws KeyResolverException
+    */
+   public X509Certificate resolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+      return this._resolverSpi.engineResolveX509Certificate(element, BaseURI,
+              storage);
+   }
+
+   /**
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return resolved SecretKey key from the registered from the elements
+    * @throws KeyResolverException
+    */
+   public SecretKey resolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+      return this._resolverSpi.engineResolveSecretKey(element, BaseURI,
+              storage);
+   }
+
+   /**
+    * Method setProperty
+    *
+    * @param key
+    * @param value
+    */
+   public void setProperty(String key, String value) {
+      this._resolverSpi.engineSetProperty(key, value);
+   }
+
+   /**
+    * Method getProperty
+    *
+    * @param key
+    * @return the property setted for this resolver
+    */
+   public String getProperty(String key) {
+      return this._resolverSpi.engineGetProperty(key);
+   }
+
+   /**
+    * Method getPropertyKeys
+    *
+    * @return the properties key registerd in this resolver
+    */
+   public String[] getPropertyKeys() {
+      return this._resolverSpi.engineGetPropertyKeys();
+   }
+
+   /**
+    * Method understandsProperty
+    *
+    * @param propertyToTest
+    * @return true if the resolver understands property propertyToTest
+    */
+   public boolean understandsProperty(String propertyToTest) {
+      return this._resolverSpi.understandsProperty(propertyToTest);
+   }
+
+   /**
+    * Method canResolve
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return true if can resolve the key in the element
+    */
+   public boolean canResolve(Element element, String BaseURI,
+                             StorageResolver storage) {
+      return this._resolverSpi.engineCanResolve(element, BaseURI, storage);
+   }
+
+   /**
+    * Method resolverClassName
+    *
+    * @return the name of the resolver.
+    */
+   public String resolverClassName() {
+      return this._resolverSpi.getClass().getName();
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/KeyResolverException.java b/src/org/apache/xml/security/keys/keyresolver/KeyResolverException.java
new file mode 100644
index 0000000..464dbe1
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/KeyResolverException.java
@@ -0,0 +1,88 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ *
+ *
+ *
+ * @author $Author$
+ *
+ */
+public class KeyResolverException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor KeyResolverException
+    *
+    */
+   public KeyResolverException() {
+      super();
+   }
+
+   /**
+    * Constructor KeyResolverException
+    *
+    * @param _msgID
+    */
+   public KeyResolverException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor KeyResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public KeyResolverException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor KeyResolverException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public KeyResolverException(String _msgID, Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor KeyResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public KeyResolverException(String _msgID, Object exArgs[],
+                               Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java b/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java
new file mode 100644
index 0000000..b9020b5
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/KeyResolverSpi.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.crypto.SecretKey;
+
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.w3c.dom.Element;
+
+
+/**
+ * This class is abstract class for a child KeyInfo Elemnet.
+ *
+ * If you want the your KeyResolver, at firstly you must extand this class, and register
+ * as following in config.xml
+ * <PRE>
+ *  &lt;KeyResolver URI="http://www.w3.org/2000/09/xmldsig#KeyValue"
+ *   JAVACLASS="MyPackage.MyKeyValueImpl"//gt;
+ * </PRE>
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public abstract class KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(KeyResolverSpi.class.getName());
+
+   /**
+    * This method helps the {@link org.apache.xml.security.utils.resolver.ResourceResolver} to decide whether a
+    * {@link org.apache.xml.security.utils.resolver.ResourceResolverSpi} is able to perform the requested action.
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return true if can resolve the key in the element
+    */
+   abstract public boolean engineCanResolve(Element element, String BaseURI,
+                                            StorageResolver storage);
+
+   /**
+    * Method engineResolvePublicKey
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return resolved public key from the registered from the element.
+    * 
+    * @throws KeyResolverException
+    */
+   abstract public PublicKey engineResolvePublicKey(
+      Element element, String BaseURI, StorageResolver storage)
+         throws KeyResolverException;
+
+   /**
+    * Method engineResolveCertificate
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return resolved X509Certificate key from the registered from the elements
+    *
+    * @throws KeyResolverException
+    */
+   abstract public X509Certificate engineResolveX509Certificate(
+      Element element, String BaseURI, StorageResolver storage)
+         throws KeyResolverException;
+
+   /**
+    * Method engineResolveSecretKey
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return resolved SecretKey key from the registered from the elements
+    *
+    * @throws KeyResolverException
+    */
+   abstract public SecretKey engineResolveSecretKey(
+      Element element, String BaseURI, StorageResolver storage)
+         throws KeyResolverException;
+
+   /** Field _properties */
+   protected java.util.Map _properties = new java.util.HashMap(10);
+
+   /**
+    * Method engineSetProperty
+    *
+    * @param key
+    * @param value
+    */
+   public void engineSetProperty(String key, String value) {
+
+      java.util.Iterator i = this._properties.keySet().iterator();
+
+      while (i.hasNext()) {
+         String c = (String) i.next();
+
+         if (c.equals(key)) {
+            key = c;
+
+            break;
+         }
+      }
+
+      this._properties.put(key, value);
+   }
+
+   /**
+    * Method engineGetProperty
+    *
+    * @param key
+    * @return obtain the property appointed by key
+    */
+   public String engineGetProperty(String key) {
+
+      java.util.Iterator i = this._properties.keySet().iterator();
+
+      while (i.hasNext()) {
+         String c = (String) i.next();
+
+         if (c.equals(key)) {
+            key = c;
+
+            break;
+         }
+      }
+
+      return (String) this._properties.get(key);
+   }
+
+   /**
+    * Method engineGetPropertyKeys
+    *
+    * @return the keys of properties known by this resolver
+    */
+   public String[] engineGetPropertyKeys() {
+      return new String[0];
+   }
+
+   /**
+    * Method understandsProperty
+    *
+    * @param propertyToTest
+    * @return true if understood the property
+    */
+   public boolean understandsProperty(String propertyToTest) {
+
+      String[] understood = this.engineGetPropertyKeys();
+
+      if (understood != null) {
+         for (int i = 0; i < understood.length; i++) {
+            if (understood[i].equals(propertyToTest)) {
+               return true;
+            }
+         }
+      }
+
+      return false;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java
new file mode 100644
index 0000000..24db858
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/DSAKeyValueResolver.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.keyvalues.DSAKeyValue;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class DSAKeyValueResolver extends KeyResolverSpi {
+
+   /** Field _dsaKeyElement */
+   private Element _dsaKeyElement = null;
+
+   /** @inheritDoc */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+
+      if (element == null) {
+         return false;
+      }
+
+      boolean isKeyValue = XMLUtils.elementIsInSignatureSpace(element,
+                              Constants._TAG_KEYVALUE);
+      boolean isDSAKeyValue = XMLUtils.elementIsInSignatureSpace(element,
+                                 Constants._TAG_DSAKEYVALUE);
+
+      if (isKeyValue) {         
+     
+            this._dsaKeyElement =
+            	XMLUtils.selectDsNode(element.getFirstChild(),Constants._TAG_DSAKEYVALUE,0);                    
+
+            if (this._dsaKeyElement != null) {
+               return true;
+            }         
+      } else if (isDSAKeyValue) {
+
+         // this trick is needed to allow the RetrievalMethodResolver to eat a
+         // ds:DSAKeyValue directly (without KeyValue)
+         this._dsaKeyElement = element;
+
+         return true;
+      }
+
+      return false;
+   }
+
+   /**
+    * Method engineResolvePublicKey
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return null if no {@link PublicKey} could be obtained
+    */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage) {
+
+      if (this._dsaKeyElement == null) {
+         boolean weCanResolve = this.engineCanResolve(element, BaseURI,
+                                   storage);
+
+         if (!weCanResolve || (this._dsaKeyElement == null)) {
+            return null;
+         }
+      }
+
+      try {
+         DSAKeyValue dsaKeyValue = new DSAKeyValue(this._dsaKeyElement,
+                                                   BaseURI);
+         PublicKey pk = dsaKeyValue.getPublicKey();
+
+         return pk;
+      } catch (XMLSecurityException ex) {
+		//do nothing
+      }
+
+      return null;
+   }
+
+   
+   /** @inheritDoc */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage) {
+      return null;
+   }
+
+   /** @inheritDoc */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage){
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java
new file mode 100644
index 0000000..3923283
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/EncryptedKeyResolver.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+import java.security.Key;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.crypto.SecretKey;
+
+import org.apache.xml.security.encryption.EncryptedKey;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.EncryptionConstants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * The <code>EncryptedKeyResolver</code> is not a generic resolver.  It can 
+ * only be for specific instantiations, as the key being unwrapped will 
+ * always be of a particular type and will always have been wrapped by 
+ * another key which needs to be recursively resolved.
+ *
+ * The <code>EncryptedKeyResolver</code> can therefore only be instantiated
+ * with an algorithm.  It can also be instantiated with a key (the KEK) or 
+ * will search the static KeyResolvers to find the appropriate key.
+ *
+ * @author Berin Lautenbach
+ */
+
+public class EncryptedKeyResolver extends KeyResolverSpi {
+
+	/** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                        RSAKeyValueResolver.class.getName());
+
+	
+	Key _key;
+	Key _kek;
+	String _algorithm;
+
+	/**
+	 * Constructor for use when a KEK needs to be derived from a KeyInfo
+	 * list
+	 * @param algorithm
+	 */
+	public EncryptedKeyResolver(String algorithm) {
+		_key = null;
+		_kek = null;
+        _algorithm=algorithm;
+	}
+
+	/**
+	 * Constructor used for when a KEK has been set
+	 * @param algorithm
+	 * @param kek
+	 */
+
+	public EncryptedKeyResolver(String algorithm, Key kek) {
+		_key = null;
+		_algorithm = algorithm;
+		_kek = kek;
+
+	}
+
+	/**
+	 * Method engineCanResolve
+	 *
+	 * @param element
+	 * @param BaseURI
+	 * @param storage
+	 * @return true if can resolve the key in the element
+	 *
+	 */
+
+	public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+	  if (log.isDebugEnabled())
+	  	log.debug("EncryptedKeyResolver - Can I resolve " + element.getTagName());
+
+      if (element == null) {
+         return false;
+      }
+
+      boolean isEncryptedKey = XMLUtils.elementIsInEncryptionSpace(element,
+                              EncryptionConstants._TAG_ENCRYPTEDKEY);
+
+      if (isEncryptedKey) {
+		  log.debug("Passed an Encrypted Key");
+		  try {
+			  XMLCipher cipher = XMLCipher.getInstance();
+			  cipher.init(XMLCipher.UNWRAP_MODE, _kek);
+			  EncryptedKey ek = cipher.loadEncryptedKey(element);
+			  _key = cipher.decryptKey(ek, _algorithm);
+		  }
+		  catch (Exception e) {}
+      }
+	  
+      return (_key != null);
+   }
+
+    /** @inheritDoc */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage) {
+
+	   return null;
+   }
+
+   /** @inheritDoc */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage) {
+      return null;
+   }
+
+   /** @inheritDoc */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage) {
+      return (SecretKey) _key;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java
new file mode 100644
index 0000000..75b9e5b
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/RSAKeyValueResolver.java
@@ -0,0 +1,119 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.keyvalues.RSAKeyValue;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class RSAKeyValueResolver extends KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                        RSAKeyValueResolver.class.getName());
+
+   /** Field _rsaKeyElement */
+   private Element _rsaKeyElement = null;
+
+   /** @inheritDoc */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+   	  if (log.isDebugEnabled())
+   	  	log.debug("Can I resolve " + element.getTagName());
+
+      if (element == null) {
+         return false;
+      }
+
+      boolean isKeyValue = XMLUtils.elementIsInSignatureSpace(element,
+                              Constants._TAG_KEYVALUE);
+      boolean isRSAKeyValue = XMLUtils.elementIsInSignatureSpace(element,
+                                 Constants._TAG_RSAKEYVALUE);
+
+      if (isKeyValue) {                  
+            this._rsaKeyElement = XMLUtils.selectDsNode(element.getFirstChild(),
+                    Constants._TAG_RSAKEYVALUE, 0);
+
+            if (this._rsaKeyElement != null) {
+               return true;
+            }         
+      } else if (isRSAKeyValue) {
+
+         // this trick is needed to allow the RetrievalMethodResolver to eat a
+         // ds:RSAKeyValue directly (without KeyValue)
+         this._rsaKeyElement = element;
+
+         return true;
+      }
+
+      return false;
+   }
+
+   /** @inheritDoc */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage) {
+
+      if (this._rsaKeyElement == null) {
+         boolean weCanResolve = this.engineCanResolve(element, BaseURI,
+                                   storage);
+
+         if (!weCanResolve || (this._rsaKeyElement == null)) {
+            return null;
+         }
+      }
+
+      try {
+         RSAKeyValue rsaKeyValue = new RSAKeyValue(this._rsaKeyElement,
+                                                   BaseURI);
+
+         return rsaKeyValue.getPublicKey();
+      } catch (XMLSecurityException ex) {
+         log.debug("XMLSecurityException", ex);
+      }
+
+      return null;
+   }
+
+   /** @inheritDoc */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage) {
+      return null;
+   }
+
+   /** @inheritDoc */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage) {
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
new file mode 100644
index 0000000..c214449
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
@@ -0,0 +1,307 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.PublicKey;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.RetrievalMethod;
+import org.apache.xml.security.keys.content.x509.XMLX509Certificate;
+import org.apache.xml.security.keys.keyresolver.KeyResolver;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * The RetrievalMethodResolver can retrieve public keys and certificates from
+ * other locations. The location is specified using the ds:RetrievalMethod
+ * element which points to the location. This includes the handling of raw
+ * (binary) X.509 certificate which are not encapsulated in an XML structure.
+ * If the retrieval process encounters an element which the
+ * RetrievalMethodResolver cannot handle itself, resolving of the extracted
+ * element is delegated back to the KeyResolver mechanism.
+ *
+ * @author $Author$
+ */
+public class RetrievalMethodResolver extends KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                        RetrievalMethodResolver.class.getName());
+
+   /**
+    * Method engineCanResolve
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+
+      if 
+         (!XMLUtils.elementIsInSignatureSpace(element,
+                 Constants._TAG_RETRIEVALMETHOD)) {      
+         return false;
+      }
+
+      return true;
+   }
+
+   /**
+    * Method engineResolvePublicKey
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage)
+              {
+
+      try {
+         RetrievalMethod rm = new RetrievalMethod(element, BaseURI);
+         Attr uri = rm.getURIAttr();
+
+         // type can be null because it's optional
+         String type = rm.getType();
+         Transforms transforms = rm.getTransforms();
+         ResourceResolver resRes = ResourceResolver.getInstance(uri, BaseURI);
+
+         if (resRes != null) {
+            XMLSignatureInput resource = resRes.resolve(uri, BaseURI);
+            if (log.isDebugEnabled())
+            	log.debug("Before applying Transforms, resource has "
+                      + resource.getBytes().length + "bytes");
+
+            if (transforms != null) {
+               log.debug("We have Transforms");
+
+               resource = transforms.performTransforms(resource);
+            }
+            if (log.isDebugEnabled()) {
+            	log.debug("After applying Transforms, resource has "
+                      + resource.getBytes().length + "bytes");
+            	log.debug("Resolved to resource " + resource.getSourceURI());
+            }
+
+            byte inputBytes[] = resource.getBytes();
+
+            if ((type != null) && type.equals(RetrievalMethod.TYPE_RAWX509)) {
+
+               // if the resource stores a raw certificate, we have to handle it
+               CertificateFactory certFact =
+                  CertificateFactory
+                     .getInstance(XMLX509Certificate.JCA_CERT_ID);
+               X509Certificate cert =
+                  (X509Certificate) certFact
+                     .generateCertificate(new ByteArrayInputStream(inputBytes));
+
+               if (cert != null) {
+                  return cert.getPublicKey();
+               }
+            } else {
+
+               // otherwise, we parse the resource, create an Element and delegate
+                if (log.isDebugEnabled())
+                	log.debug("we have to parse " + inputBytes.length + " bytes");
+
+               Element e = this.getDocFromBytes(inputBytes);
+               if (log.isDebugEnabled())
+               	    log.debug("Now we have a {" + e.getNamespaceURI() + "}"
+                         + e.getLocalName() + " Element");
+
+               if (e != null) {
+                  KeyResolver newKeyResolver = KeyResolver.getInstance(getFirstElementChild(e),
+                                                  BaseURI, storage);
+
+                  if (newKeyResolver != null) {
+                     return newKeyResolver.resolvePublicKey(getFirstElementChild(e), BaseURI,
+                                                            storage);
+                  }
+               }
+            }
+         }
+      } catch (XMLSecurityException ex) {
+         log.debug("XMLSecurityException", ex);
+      } catch (CertificateException ex) {
+         log.debug("CertificateException", ex);
+      } catch (IOException ex) {
+         log.debug("IOException", ex);
+      }
+
+      return null;
+   }
+
+   /**
+    * Method engineResolveX509Certificate
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage)
+              {
+
+      try {
+         RetrievalMethod rm = new RetrievalMethod(element, BaseURI);
+         Attr uri = rm.getURIAttr();
+         Transforms transforms = rm.getTransforms();
+         if (log.isDebugEnabled())
+         	log.debug("Asked to resolve URI " + uri);
+
+         ResourceResolver resRes = ResourceResolver.getInstance(uri, BaseURI);
+
+         if (resRes != null) {
+            XMLSignatureInput resource = resRes.resolve(uri, BaseURI);
+            if (log.isDebugEnabled())
+            	log.debug("Before applying Transforms, resource has "
+                      + resource.getBytes().length + "bytes");
+
+            if (transforms != null) {
+               log.debug("We have Transforms");
+
+               resource = transforms.performTransforms(resource);
+            }
+            
+            if (log.isDebugEnabled()) {
+            	log.debug("After applying Transforms, resource has "
+                      + resource.getBytes().length + "bytes");
+            	log.debug("Resolved to resource " + resource.getSourceURI());
+            }
+
+            byte inputBytes[] = resource.getBytes();
+
+            if ((rm.getType() != null)
+                    && rm.getType().equals(RetrievalMethod.TYPE_RAWX509)) {
+
+               // if the resource stores a raw certificate, we have to handle it
+               CertificateFactory certFact =
+                  CertificateFactory
+                     .getInstance(XMLX509Certificate.JCA_CERT_ID);
+               X509Certificate cert =
+                  (X509Certificate) certFact
+                     .generateCertificate(new ByteArrayInputStream(inputBytes));
+
+               if (cert != null) {
+                  return cert;
+               }
+            } else {
+
+               // otherwise, we parse the resource, create an Element and delegate
+                if (log.isDebugEnabled())
+                	log.debug("we have to parse " + inputBytes.length + " bytes");
+
+               Element e = this.getDocFromBytes(inputBytes);
+
+               if (log.isDebugEnabled())
+               	    log.debug("Now we have a {" + e.getNamespaceURI() + "}"
+                         + e.getLocalName() + " Element");
+
+               if (e != null) {
+                  KeyResolver newKeyResolver = KeyResolver.getInstance(getFirstElementChild(e),
+                                                  BaseURI, storage);
+
+                  if (newKeyResolver != null) {
+                     return newKeyResolver.resolveX509Certificate(getFirstElementChild(e), BaseURI,
+                             storage);
+                  }
+               }
+            }
+         }
+      } catch (XMLSecurityException ex) {
+         log.debug("XMLSecurityException", ex);
+      } catch (CertificateException ex) {
+         log.debug("CertificateException", ex);
+      } catch (IOException ex) {
+         log.debug("IOException", ex);
+      }
+
+      return null;
+   }
+
+   /**
+    * Parses a byte array and returns the parsed Element.
+    *
+    * @param bytes
+    * @return the Document Element after parsing bytes 
+    * @throws KeyResolverException if something goes wrong
+    */
+   Element getDocFromBytes(byte[] bytes) throws KeyResolverException {
+
+      try {
+         javax.xml.parsers.DocumentBuilderFactory dbf =
+            javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+         dbf.setNamespaceAware(true);
+
+         javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+         org.w3c.dom.Document doc =
+            db.parse(new java.io.ByteArrayInputStream(bytes));
+
+         return doc.getDocumentElement();
+      } catch (org.xml.sax.SAXException ex) {
+         throw new KeyResolverException("empty", ex);
+      } catch (java.io.IOException ex) {
+         throw new KeyResolverException("empty", ex);
+      } catch (javax.xml.parsers.ParserConfigurationException ex) {
+         throw new KeyResolverException("empty", ex);
+      }
+   }
+
+   /**
+    * Method engineResolveSecretKey
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage)
+   {
+      return null;
+   }
+   static Element getFirstElementChild(Element e){
+   	    Node n=e.getFirstChild();
+   	    while (n!=null && n.getNodeType()!=Node.ELEMENT_NODE) {
+   	    	n=n.getNextSibling();
+   	    }
+   		return (Element)n;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
new file mode 100644
index 0000000..fd5b8a6
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
@@ -0,0 +1,177 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.x509.XMLX509Certificate;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * Resolves Certificates which are directly contained inside a
+ * <CODE>ds:X509Certificate</CODE> Element.
+ *
+ * @author $Author$
+ */
+public class X509CertificateResolver extends KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(X509CertificateResolver.class.getName());
+
+   /** Field _dsaKeyElement */
+   Element[] _x509CertKeyElements = null;
+
+   /**
+    * Method engineCanResolve
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+   	  if (log.isDebugEnabled())
+   	  	log.debug("Can I resolve " + element.getTagName() + "?");
+
+      if (!XMLUtils.elementIsInSignatureSpace(element,
+                 Constants._TAG_X509DATA)) {
+         log.debug("I can't");
+
+         return false;
+      }
+         
+
+         this._x509CertKeyElements = XMLUtils.selectDsNodes(element.getFirstChild(),
+                 Constants._TAG_X509CERTIFICATE);
+
+         if ((this._x509CertKeyElements != null)
+                 && (this._x509CertKeyElements.length > 0)) {
+            log.debug("Yes Sir, I can");
+
+            return true;
+         }
+
+      log.debug("I can't");
+
+      return false;
+   }
+
+   /** Field _x509certObject[] */
+   XMLX509Certificate _x509certObject[] = null;
+
+   /**
+    * Method engineResolvePublicKey
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    * @throws KeyResolverException
+    */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      X509Certificate cert = this.engineResolveX509Certificate(element,
+                                BaseURI, storage);
+
+      if (cert != null) {
+         return cert.getPublicKey();
+      }
+
+      return null;
+   }
+
+   /**
+    * Method engineResolveX509Certificate
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    * @throws KeyResolverException
+    */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      try {
+         if ((this._x509CertKeyElements == null)
+                 || (this._x509CertKeyElements.length == 0)) {
+            boolean weCanResolve = this.engineCanResolve(element, BaseURI,
+                                      storage);
+
+            if (!weCanResolve || (this._x509CertKeyElements == null)
+                    || (this._x509CertKeyElements.length == 0)) {
+               return null;
+            }
+         }
+
+         this._x509certObject =
+            new XMLX509Certificate[this._x509CertKeyElements.length];
+
+         // populate Object array
+         for (int i = 0; i < this._x509CertKeyElements.length; i++) {
+            this._x509certObject[i] =
+               new XMLX509Certificate(this._x509CertKeyElements[i]
+                  , BaseURI);
+         }
+
+         for (int i = 0; i < this._x509certObject.length; i++) {
+            X509Certificate cert = this._x509certObject[i].getX509Certificate();
+
+            if (cert != null) {
+               return cert;
+            }
+         }
+
+         return null;
+      } catch (XMLSecurityException ex) {
+         log.debug("XMLSecurityException", ex);
+
+         throw new KeyResolverException("generic.EmptyMessage", ex);
+      }
+   }
+
+   /**
+    * Method engineResolveSecretKey
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage)
+   {
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java
new file mode 100644
index 0000000..b5fd1d0
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/X509IssuerSerialResolver.java
@@ -0,0 +1,156 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.keys.content.x509.XMLX509IssuerSerial;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class X509IssuerSerialResolver extends KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    X509IssuerSerialResolver.class.getName());
+
+    /** @inheritDoc */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+      if (log.isDebugEnabled())
+      	log.debug("Can I resolve " + element.getTagName() + "?");
+
+      X509Data x509data = null;
+      try {
+         x509data = new X509Data(element, BaseURI);
+      } catch (XMLSignatureException ex) {
+         log.debug("I can't");
+
+         return false;
+      } catch (XMLSecurityException ex) {
+         log.debug("I can't");
+
+         return false;
+      }
+
+      if (x509data == null) {
+         log.debug("I can't");
+         return false;
+      }
+
+      if (x509data.containsIssuerSerial()) {
+            return true;
+      }
+
+      log.debug("I can't");
+      return false;
+   }
+
+   /** @inheritDoc */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      X509Certificate cert = this.engineResolveX509Certificate(element,
+                                BaseURI, storage);
+
+      if (cert != null) {
+         return cert.getPublicKey();
+      }
+
+      return null;
+   }
+
+   /** @inheritDoc */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      try {
+         if (storage == null) {
+            Object exArgs[] = { Constants._TAG_X509ISSUERSERIAL };
+            KeyResolverException ex =
+               new KeyResolverException("KeyResolver.needStorageResolver",
+                                        exArgs);
+
+            log.info("", ex);
+            throw ex;
+         }
+
+         X509Data x509data = new X509Data(element, BaseURI);
+         int noOfISS = x509data.lengthIssuerSerial();
+
+         while (storage.hasNext()) {
+            X509Certificate cert = storage.next();
+            XMLX509IssuerSerial certSerial = new XMLX509IssuerSerial(element.getOwnerDocument(), cert);
+
+            if (log.isDebugEnabled()) {
+            	log.debug("Found Certificate Issuer: "
+                      + certSerial.getIssuerName());
+            	log.debug("Found Certificate Serial: "
+                      + certSerial.getSerialNumber().toString());
+            }
+
+            for (int i=0; i<noOfISS; i++) {
+               XMLX509IssuerSerial xmliss = x509data.itemIssuerSerial(i);
+
+               if (log.isDebugEnabled()) {
+               	    log.debug("Found Element Issuer:     "
+                         + xmliss.getIssuerName());
+               	    log.debug("Found Element Serial:     "
+                         + xmliss.getSerialNumber().toString());
+               }
+
+               if (certSerial.equals(xmliss)) {
+                  log.debug("match !!! ");
+
+                  return cert;
+               } 
+                log.debug("no match...");               
+            }
+         }
+
+         return null;
+      } catch (XMLSecurityException ex) {
+         log.debug("XMLSecurityException", ex);
+
+         throw new KeyResolverException("generic.EmptyMessage", ex);
+      }
+   }
+
+   /** @inheritDoc */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage) {
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java
new file mode 100644
index 0000000..a9d73b9
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/X509SKIResolver.java
@@ -0,0 +1,190 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.x509.XMLX509SKI;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ *
+ * @author $Author$
+ */
+public class X509SKIResolver extends KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(X509SKIResolver.class.getName());
+
+   /** Field _x509childNodes */
+   private Element _x509childNodes[] = null;
+
+   /** Field _x509childObject[] */
+   private XMLX509SKI _x509childObject[] = null;
+
+   /**
+    * Method engineCanResolve
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+      if (log.isDebugEnabled()) {
+      	log.debug("Can I resolve " + element.getTagName() + "?");
+      }
+      
+         if (!XMLUtils.elementIsInSignatureSpace(element,
+                 Constants._TAG_X509DATA)) {
+         log.debug("I can't");
+
+         return false;
+      }
+
+      
+ 
+
+         this._x509childNodes = XMLUtils.selectDsNodes(element,
+                  Constants._TAG_X509SKI);
+
+         if ((this._x509childNodes != null)
+                 && (this._x509childNodes.length > 0)) {
+            log.debug("Yes Sir, I can");
+
+            return true;
+         }
+      
+      log.debug("I can't");
+
+      return false;
+   }
+
+   /**
+    * Method engineResolvePublicKey
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return null if no {@link PublicKey} could be obtained
+    * @throws KeyResolverException
+    */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      X509Certificate cert = this.engineResolveX509Certificate(element,
+                                BaseURI, storage);
+
+      if (cert != null) {
+         return cert.getPublicKey();
+      }
+
+      return null;
+   }
+
+   /**
+    * Method engineResolveX509Certificate
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    * @throws KeyResolverException
+    */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      try {
+         if (this._x509childNodes == null) {
+            boolean weCanResolve = this.engineCanResolve(element, BaseURI,
+                                      storage);
+
+            if (!weCanResolve || (this._x509childNodes == null)) {
+               return null;
+            }
+         }
+
+         if (storage == null) {
+            Object exArgs[] = { Constants._TAG_X509SKI };
+            KeyResolverException ex =
+               new KeyResolverException("KeyResolver.needStorageResolver",
+                                        exArgs);
+
+            log.info("", ex);
+
+            throw ex;
+         }
+
+         this._x509childObject =
+            new XMLX509SKI[this._x509childNodes.length];
+
+         for (int i = 0; i < this._x509childNodes.length; i++) {
+            this._x509childObject[i] =
+               new XMLX509SKI(this._x509childNodes[i], BaseURI);
+         }
+
+         while (storage.hasNext()) {
+            X509Certificate cert = storage.next();
+            XMLX509SKI certSKI = new XMLX509SKI(element.getOwnerDocument(), cert);
+
+            for (int i = 0; i < this._x509childObject.length; i++) {
+               if (certSKI.equals(this._x509childObject[i])) {
+                  log.debug("Return PublicKey from "
+                            + cert.getSubjectDN().getName());
+
+                  return cert;
+               }
+            }
+         }
+      } catch (XMLSecurityException ex) {
+         throw new KeyResolverException("empty", ex);
+      }
+
+      return null;
+   }
+
+   /**
+    * Method engineResolveSecretKey
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage)
+    {
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java b/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java
new file mode 100644
index 0000000..e5bb2c7
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/X509SubjectNameResolver.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.keyresolver.implementations;
+
+
+
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.content.x509.XMLX509SubjectName;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class X509SubjectNameResolver extends KeyResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    X509SubjectNameResolver.class.getName());
+
+   /** Field _x509childNodes */
+   private Element[] _x509childNodes = null;
+
+   /** Field _x509childObject[] */
+   private XMLX509SubjectName _x509childObject[] = null;
+
+   /**
+    * Method engineCanResolve
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public boolean engineCanResolve(Element element, String BaseURI,
+                                   StorageResolver storage) {
+      if (log.isDebugEnabled())
+      	log.debug("Can I resolve " + element.getTagName() + "?");
+
+      
+       if (!XMLUtils.elementIsInSignatureSpace(element,
+                 Constants._TAG_X509DATA) ) {      
+         log.debug("I can't");
+
+         return false;
+      }
+
+
+         
+         this._x509childNodes = XMLUtils.selectDsNodes(element,
+                 Constants._TAG_X509SUBJECTNAME);
+
+         if ((this._x509childNodes != null)
+                 && (this._x509childNodes.length > 0)) {
+            log.debug("Yes Sir, I can");
+
+            return true;
+         }
+     
+
+      log.debug("I can't");
+
+      return false;
+   }
+
+   /**
+    * Method engineResolvePublicKey
+    *
+    * @param element
+    * @param BaseURI
+    * @param storage
+    * @return null if no {@link PublicKey} could be obtained
+    * @throws KeyResolverException
+    */
+   public PublicKey engineResolvePublicKey(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      X509Certificate cert = this.engineResolveX509Certificate(element,
+                                BaseURI, storage);
+
+      if (cert != null) {
+         return cert.getPublicKey();
+      }
+
+      return null;
+   }
+
+   /**
+    * Method engineResolveX509Certificate
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    * @throws KeyResolverException
+    */
+   public X509Certificate engineResolveX509Certificate(
+           Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+      try {
+         if (this._x509childNodes == null) {
+            boolean weCanResolve = this.engineCanResolve(element, BaseURI,
+                                      storage);
+
+            if (!weCanResolve || (this._x509childNodes == null)) {
+               return null;
+            }
+         }
+
+         if (storage == null) {
+            Object exArgs[] = { Constants._TAG_X509SUBJECTNAME };
+            KeyResolverException ex =
+               new KeyResolverException("KeyResolver.needStorageResolver",
+                                        exArgs);
+
+            log.info("", ex);
+
+            throw ex;
+         }
+
+         this._x509childObject =
+            new XMLX509SubjectName[this._x509childNodes.length];
+
+         for (int i = 0; i < this._x509childNodes.length; i++) {
+            this._x509childObject[i] =
+               new XMLX509SubjectName(this._x509childNodes[i],
+                                      BaseURI);
+         }
+
+         while (storage.hasNext()) {
+            X509Certificate cert = storage.next();
+            XMLX509SubjectName certSN =
+               new XMLX509SubjectName(element.getOwnerDocument(), cert);
+
+            log.debug("Found Certificate SN: " + certSN.getSubjectName());
+
+            for (int i = 0; i < this._x509childObject.length; i++) {
+               log.debug("Found Element SN:     "
+                         + this._x509childObject[i].getSubjectName());
+
+               if (certSN.equals(this._x509childObject[i])) {
+                  log.debug("match !!! ");
+
+                  return cert;
+               } 
+               log.debug("no match...");               
+            }
+         }
+
+         return null;
+      } catch (XMLSecurityException ex) {
+         log.debug("XMLSecurityException", ex);
+
+         throw new KeyResolverException("generic.EmptyMessage", ex);
+      }
+   }
+
+   /**
+    * Method engineResolveSecretKey
+    * @inheritDoc
+    * @param element
+    * @param BaseURI
+    * @param storage
+    *
+    */
+   public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage)
+   {
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/keys/keyresolver/implementations/package.html b/src/org/apache/xml/security/keys/keyresolver/implementations/package.html
new file mode 100644
index 0000000..bd91ff7
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/implementations/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+implementations for retrieval of certificates and public keys from elements.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/keys/keyresolver/package.html b/src/org/apache/xml/security/keys/keyresolver/package.html
new file mode 100644
index 0000000..52f5131
--- /dev/null
+++ b/src/org/apache/xml/security/keys/keyresolver/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+the resolver framework for retrieval of certificates and public keys from elements.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/keys/package.html b/src/org/apache/xml/security/keys/package.html
new file mode 100644
index 0000000..dbadeb7
--- /dev/null
+++ b/src/org/apache/xml/security/keys/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+general key related material.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/keys/storage/StorageResolver.java b/src/org/apache/xml/security/keys/storage/StorageResolver.java
new file mode 100644
index 0000000..ac08648
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/StorageResolver.java
@@ -0,0 +1,196 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.storage;
+
+
+
+import java.security.KeyStore;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.xml.security.keys.storage.implementations.KeyStoreResolver;
+import org.apache.xml.security.keys.storage.implementations.SingleCertificateResolver;
+
+
+/**
+ * This class collects customized resolvers for Certificates.
+ *
+ * @author $Author$
+ */
+public class StorageResolver {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(StorageResolver.class.getName());
+
+   /** Field _storageResolvers */
+   List _storageResolvers = new ArrayList();
+
+   /** Field _iterator */
+   Iterator _iterator = null;
+
+   /**
+    * Constructor StorageResolver
+    *
+    */
+   public StorageResolver() {}
+
+   /**
+    * Constructor StorageResolver
+    *
+    * @param resolver
+    */
+   public StorageResolver(StorageResolverSpi resolver) {
+      this.add(resolver);
+   }
+
+   /**
+    * Method addResolver
+    *
+    * @param resolver
+    */
+   public void add(StorageResolverSpi resolver) {
+
+      this._storageResolvers.add(resolver);
+
+      this._iterator = null;
+   }
+
+   /**
+    * Constructor StorageResolver
+    *
+    * @param keyStore
+    */
+   public StorageResolver(KeyStore keyStore) {
+      this.add(keyStore);
+   }
+
+   /**
+    * Method addKeyStore
+    *
+    * @param keyStore
+    */
+   public void add(KeyStore keyStore) {
+
+      try {
+         this.add(new KeyStoreResolver(keyStore));
+      } catch (StorageResolverException ex) {
+         log.error("Could not add KeyStore because of: ", ex);
+      }
+   }
+
+   /**
+    * Constructor StorageResolver
+    *
+    * @param x509certificate
+    */
+   public StorageResolver(X509Certificate x509certificate) {
+      this.add(x509certificate);
+   }
+
+   /**
+    * Method addCertificate
+    *
+    * @param x509certificate
+    */
+   public void add(X509Certificate x509certificate) {
+      this.add(new SingleCertificateResolver(x509certificate));
+   }
+
+   /**
+    * Method getIterator
+    * @return the iterator for the resolvers.
+    *
+    */
+   public Iterator getIterator() {
+
+      if (this._iterator == null) {
+         this._iterator = new StorageResolverIterator(this._storageResolvers.iterator());
+      }
+
+      return this._iterator;
+   }
+
+   /**
+    * Method hasNext
+    *
+    * @return true if there is more elements.
+    */
+   public boolean hasNext() {
+
+      if (this._iterator == null) {
+         this._iterator = new StorageResolverIterator(this._storageResolvers.iterator());
+      }
+
+      return this._iterator.hasNext();
+   }
+
+   /**
+    * Method next
+    *
+    * @return the next element
+    */
+   public X509Certificate next() {
+      return (X509Certificate) this._iterator.next();
+   }
+
+   /**
+    * Class StorageResolverIterator
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   class StorageResolverIterator implements Iterator {
+
+      /** Field _resolvers */
+	   Iterator _resolvers = null;
+
+      /** Field _currentResolver */
+      int _currentResolver = 0;
+
+      /**
+       * Constructor FilesystemIterator
+       *
+       * @param resolvers
+       */
+      public StorageResolverIterator(Iterator resolvers) {
+         this._resolvers = resolvers;
+      }
+
+      /** @inheritDoc */
+      public boolean hasNext() {
+		  return _resolvers.hasNext();
+      }
+
+      /** @inheritDoc */
+      public Object next() {
+		  return _resolvers.next();
+      }
+
+      /**
+       * Method remove
+       *
+       */
+      public void remove() {
+         throw new UnsupportedOperationException(
+            "Can't remove keys from KeyStore");
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/keys/storage/StorageResolverException.java b/src/org/apache/xml/security/keys/storage/StorageResolverException.java
new file mode 100644
index 0000000..7f6416d
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/StorageResolverException.java
@@ -0,0 +1,84 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.storage;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class StorageResolverException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor StorageResolverException
+    *
+    */
+   public StorageResolverException() {
+      super();
+   }
+
+   /**
+    * Constructor StorageResolverException
+    *
+    * @param _msgID
+    */
+   public StorageResolverException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor StorageResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public StorageResolverException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor StorageResolverException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public StorageResolverException(String _msgID, Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor StorageResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public StorageResolverException(String _msgID, Object exArgs[],
+                                   Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/keys/storage/StorageResolverSpi.java b/src/org/apache/xml/security/keys/storage/StorageResolverSpi.java
new file mode 100644
index 0000000..5c4272e
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/StorageResolverSpi.java
@@ -0,0 +1,37 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.storage;
+
+
+
+import java.util.Iterator;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public abstract class StorageResolverSpi {
+
+   /**
+    * Method getIterator
+    *
+    * @return the iterator for the storage
+    */
+   public abstract Iterator getIterator();
+}
diff --git a/src/org/apache/xml/security/keys/storage/implementations/CertsInFilesystemDirectoryResolver.java b/src/org/apache/xml/security/keys/storage/implementations/CertsInFilesystemDirectoryResolver.java
new file mode 100644
index 0000000..d40b8cb
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/implementations/CertsInFilesystemDirectoryResolver.java
@@ -0,0 +1,226 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.storage.implementations;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateExpiredException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.CertificateNotYetValidException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.xml.security.keys.storage.StorageResolverException;
+import org.apache.xml.security.keys.storage.StorageResolverSpi;
+import org.apache.xml.security.utils.Base64;
+
+
+/**
+ * This {@link StorageResolverSpi} makes all raw (binary) {@link X509Certificate}s
+ * which reside as files in a single directory available to the {@link org.apache.xml.security.keys.storage.StorageResolver}.
+ *
+ * @author $Author$
+ */
+public class CertsInFilesystemDirectoryResolver extends StorageResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    CertsInFilesystemDirectoryResolver.class.getName());
+
+   /** Field _merlinsCertificatesDir */
+   String _merlinsCertificatesDir = null;
+
+   /** Field _certs */
+   private List _certs = new ArrayList();
+
+   /** Field _iterator */
+   Iterator _iterator = null;
+
+   /**
+    *
+    *
+    * @param directoryName
+    * @throws StorageResolverException
+    */
+   public CertsInFilesystemDirectoryResolver(String directoryName)
+           throws StorageResolverException {
+
+      this._merlinsCertificatesDir = directoryName;
+
+      this.readCertsFromHarddrive();
+
+      this._iterator = new FilesystemIterator(this._certs);
+   }
+
+   /**
+    * Method readCertsFromHarddrive
+    *
+    * @throws StorageResolverException
+    */
+   private void readCertsFromHarddrive() throws StorageResolverException {
+
+      File certDir = new File(this._merlinsCertificatesDir);
+      ArrayList al = new ArrayList();
+      String[] names = certDir.list();
+
+      for (int i = 0; i < names.length; i++) {
+         String currentFileName = names[i];
+
+         if (currentFileName.endsWith(".crt")) {
+            al.add(names[i]);
+         }
+      }
+
+      CertificateFactory cf = null;
+
+      try {
+         cf = CertificateFactory.getInstance("X.509");
+      } catch (CertificateException ex) {
+         throw new StorageResolverException("empty", ex);
+      }
+
+      if (cf == null) {
+         throw new StorageResolverException("empty");
+      }
+
+      for (int i = 0; i < al.size(); i++) {
+         String filename = certDir.getAbsolutePath() + File.separator
+                           + (String) al.get(i);
+         File file = new File(filename);
+         boolean added = false;
+         String dn = null;
+
+         try {
+            FileInputStream fis = new FileInputStream(file);
+            X509Certificate cert =
+               (X509Certificate) cf.generateCertificate(fis);
+
+            fis.close();
+
+            //add to ArrayList
+            cert.checkValidity();
+            this._certs.add(cert);
+
+            dn = cert.getSubjectDN().getName();
+            added = true;
+         } catch (FileNotFoundException ex) {
+            log.debug("Could not add certificate from file " + filename, ex);
+         } catch (IOException ex) {
+            log.debug("Could not add certificate from file " + filename, ex);
+         } catch (CertificateNotYetValidException ex) {
+            log.debug("Could not add certificate from file " + filename, ex);
+         } catch (CertificateExpiredException ex) {
+            log.debug("Could not add certificate from file " + filename, ex);
+         } catch (CertificateException ex) {
+            log.debug("Could not add certificate from file " + filename, ex);
+         }
+
+         if (added) {
+            if (log.isDebugEnabled())
+            	log.debug("Added certificate: " + dn);
+         }
+      }
+   }
+
+   /** @inheritDoc */
+   public Iterator getIterator() {
+      return this._iterator;
+   }
+
+   /**
+    * Class FilesystemIterator
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   class FilesystemIterator implements Iterator {
+
+      /** Field _certs */
+      List _certs = null;
+
+      /** Field _i */
+      int _i;
+
+      /**
+       * Constructor FilesystemIterator
+       *
+       * @param certs
+       */
+      public FilesystemIterator(List certs) {
+         this._certs = certs;
+         this._i = 0;
+      }
+
+      /** @inheritDoc */
+      public boolean hasNext() {
+         return (this._i < this._certs.size());
+      }
+
+      /** @inheritDoc */
+      public Object next() {
+         return this._certs.get(this._i++);
+      }
+
+      /**
+       * Method remove
+       *
+       */
+      public void remove() {
+         throw new UnsupportedOperationException(
+            "Can't remove keys from KeyStore");
+      }
+   }
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      CertsInFilesystemDirectoryResolver krs =
+         new CertsInFilesystemDirectoryResolver(
+            "data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/certs");
+
+      for (Iterator i = krs.getIterator(); i.hasNext(); ) {
+         X509Certificate cert = (X509Certificate) i.next();
+         byte[] ski =
+            org.apache.xml.security.keys.content.x509.XMLX509SKI
+               .getSKIBytesFromCert(cert);
+
+         System.out.println();
+         System.out.println("Base64(SKI())=                 \""
+                            + Base64.encode(ski) + "\"");
+         System.out.println("cert.getSerialNumber()=        \""
+                            + cert.getSerialNumber().toString() + "\"");
+         System.out.println("cert.getSubjectDN().getName()= \""
+                            + cert.getSubjectDN().getName() + "\"");
+         System.out.println("cert.getIssuerDN().getName()=  \""
+                            + cert.getIssuerDN().getName() + "\"");
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/keys/storage/implementations/KeyStoreResolver.java b/src/org/apache/xml/security/keys/storage/implementations/KeyStoreResolver.java
new file mode 100644
index 0000000..17e978b
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/implementations/KeyStoreResolver.java
@@ -0,0 +1,146 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.storage.implementations;
+
+
+
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.cert.X509Certificate;
+import java.util.Enumeration;
+import java.util.Iterator;
+
+import org.apache.xml.security.keys.storage.StorageResolverException;
+import org.apache.xml.security.keys.storage.StorageResolverSpi;
+
+
+/**
+ * Makes the Certificates from a JAVA {@link KeyStore} object available to the
+ * {@link org.apache.xml.security.keys.storage.StorageResolver}.
+ *
+ * @author $Author$
+ */
+public class KeyStoreResolver extends StorageResolverSpi {
+
+   /** Field _keyStore */
+   KeyStore _keyStore = null;
+
+   /** Field _iterator */
+   Iterator _iterator = null;
+
+   /**
+    * Constructor KeyStoreResolver
+    *
+    * @param keyStore is the keystore which contains the Certificates
+    * @throws StorageResolverException
+    */
+   public KeyStoreResolver(KeyStore keyStore) throws StorageResolverException {
+      this._keyStore = keyStore;
+      this._iterator = new KeyStoreIterator(this._keyStore);
+   }
+
+   /** @inheritDoc */
+   public Iterator getIterator() {
+      return this._iterator;
+   }
+
+   /**
+    * Class KeyStoreIterator
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   class KeyStoreIterator implements Iterator {
+
+      /** Field _keyStore */
+      KeyStore _keyStore = null;
+
+      /** Field _aliases */
+      Enumeration _aliases = null;
+
+      /**
+       * Constructor KeyStoreIterator
+       *
+       * @param keyStore
+       * @throws StorageResolverException
+       */
+      public KeyStoreIterator(KeyStore keyStore)
+              throws StorageResolverException {
+
+         try {
+            this._keyStore = keyStore;
+            this._aliases = this._keyStore.aliases();
+         } catch (KeyStoreException ex) {
+            throw new StorageResolverException("generic.EmptyMessage", ex);
+         }
+      }
+
+      /** @inheritDoc */
+      public boolean hasNext() {
+         return this._aliases.hasMoreElements();
+      }
+
+      /** @inheritDoc */
+      public Object next() {
+
+         String alias = (String) this._aliases.nextElement();
+
+         try {
+            return this._keyStore.getCertificate(alias);
+         } catch (KeyStoreException ex) {
+            return null;
+         }
+      }
+
+      /**
+       * Method remove
+       *
+       */
+      public void remove() {
+         throw new UnsupportedOperationException(
+            "Can't remove keys from KeyStore");
+      }
+   }
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+
+      ks.load(
+         new java.io.FileInputStream(
+         "data/org/apache/xml/security/samples/input/keystore.jks"),
+            "xmlsecurity".toCharArray());
+
+      KeyStoreResolver krs = new KeyStoreResolver(ks);
+
+      for (Iterator i = krs.getIterator(); i.hasNext(); ) {
+         X509Certificate cert = (X509Certificate) i.next();
+         byte[] ski =
+            org.apache.xml.security.keys.content.x509.XMLX509SKI
+               .getSKIBytesFromCert(cert);
+
+         System.out.println(org.apache.xml.security.utils.Base64.encode(ski));
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/keys/storage/implementations/SingleCertificateResolver.java b/src/org/apache/xml/security/keys/storage/implementations/SingleCertificateResolver.java
new file mode 100644
index 0000000..60ffbe3
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/implementations/SingleCertificateResolver.java
@@ -0,0 +1,102 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.keys.storage.implementations;
+
+
+
+import java.security.cert.X509Certificate;
+import java.util.Iterator;
+
+import org.apache.xml.security.keys.storage.StorageResolverSpi;
+
+
+/**
+ * This {@link StorageResolverSpi} makes a single {@link X509Certificate}
+ * available to the {@link org.apache.xml.security.keys.storage.StorageResolver}.
+ *
+ * @author $Author$
+ */
+public class SingleCertificateResolver extends StorageResolverSpi {
+
+   /** Field _certificate */
+   X509Certificate _certificate = null;
+
+   /** Field _iterator */
+   Iterator _iterator = null;
+
+   /**
+    *
+    *
+    * @param x509cert the single {@link X509Certificate}
+    */
+   public SingleCertificateResolver(X509Certificate x509cert) {
+      this._certificate = x509cert;
+      this._iterator = new InternalIterator(this._certificate);
+   }
+
+   /** @inheritDoc */
+   public Iterator getIterator() {
+      return this._iterator;
+   }
+
+   /**
+    * Class InternalIterator
+    *
+    * @author $Author$
+    * @version $Revision$
+    */
+   class InternalIterator implements Iterator {
+
+      /** Field _alreadyReturned */
+      boolean _alreadyReturned = false;
+
+      /** Field _certificate */
+      X509Certificate _certificate = null;
+
+      /**
+       * Constructor InternalIterator
+       *
+       * @param x509cert
+       */
+      public InternalIterator(X509Certificate x509cert) {
+         this._certificate = x509cert;
+      }
+
+      /** @inheritDoc */
+      public boolean hasNext() {
+         return (!this._alreadyReturned);
+      }
+
+      /** @inheritDoc */
+      public Object next() {
+
+         this._alreadyReturned = true;
+
+         return this._certificate;
+      }
+
+      /**
+       * Method remove
+       *
+       */
+      public void remove() {
+         throw new UnsupportedOperationException(
+            "Can't remove keys from KeyStore");
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/keys/storage/implementations/package.html b/src/org/apache/xml/security/keys/storage/implementations/package.html
new file mode 100644
index 0000000..675e42d
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/implementations/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+implementations of resolvers for retrieval for certificates and public keys from user-specified locations.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/keys/storage/package.html b/src/org/apache/xml/security/keys/storage/package.html
new file mode 100644
index 0000000..f12ded5
--- /dev/null
+++ b/src/org/apache/xml/security/keys/storage/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+a resolver framework for certificates and public keys from user-specified locations.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/package.html b/src/org/apache/xml/security/package.html
new file mode 100644
index 0000000..9942a43
--- /dev/null
+++ b/src/org/apache/xml/security/package.html
@@ -0,0 +1,36 @@
+<HTML>
+  <HEAD> 
+	 <TITLE>org.apache.xml.security</TITLE> 
+  </HEAD> 
+  <BODY> 
+	 <H1>Canonical XML and XML Signature Implementation</H1> 
+	 <H2>Needs the following packages</H2> 
+	 <UL> 
+		<LI>Xerces v2.0.0 <A HREF="http://xml.apache.org/dist/xerces-j/">http://xml.apache.org/dist/xerces-j/</A></LI>
+		<LI>Xalan 2.2.0 <A HREF="http://xml.apache.org/dist/xalan-j/">http://xml.apache.org/dist/xalan-j/</A></LI>
+		<LI>JUnit 3.7 <A HREF="http://download.sourceforge.net/junit/junit3.7.zip">http://download.sourceforge.net/junit/junit3.5.zip</A></LI>
+		<LI>Jakarta Log4J 1.1.2 <A HREF="http://jakarta.apache.org/log4j/">http://jakarta.apache.org/log4j/</A></LI>
+		<LI>ANT <A HREF="http://jakarta.apache.org/builds/jakarta-ant/release/">http://jakarta.apache.org/builds/jakarta-ant/release/</A></LI> 
+	 </UL>
+	 <H1>Packages</H1> 
+	 <UL> 
+		<LI>{@link org.apache.xml.security.algorithms} contains algorithm factories </LI> 
+		<LI>{@link org.apache.xml.security.c14n} contains Canonicalization related material and algorithms </LI> 
+		<LI>{@link org.apache.xml.security.exceptions} contains all exceptions used by this library </LI> 
+		<LI>{@link org.apache.xml.security.keys} contains key related material </LI> 
+		<LI>{@link org.apache.xml.security.samples} contains some sample applications and non-standard transforms </LI> 
+		<LI>{@link org.apache.xml.security.signature} contains the XML Signature specific classes </LI> 
+		<LI>{@link org.apache.xml.security.transforms} XML Signature transformations </LI> 
+		<LI>{@link org.apache.xml.security.utils} contains all utility classes </LI> 
+		<LI>{@link org.apache.xml.security.test} JUnit test cases </LI> 
+		<LI>{@link org.apache.xml.security.temp} is the playground for messing around </LI> 
+	 </UL> 
+	 <H2>Support</H2> 
+	 <P>See <A HREF="http://xml.apache.org/security/">the xml-security project</A> for further assistence</P> 
+	 <H2>Author</H2> 
+	 <P>Christian Geuer-Pollmann geuer-pollmann@nue.et-inf.uni-siegen.de<BR> 
+	    University of Siegen<BR> 
+	    Institute for Data Communications Systems<BR> 
+	 </P> 
+     </BODY>
+</HTML>
diff --git a/src/org/apache/xml/security/resource/config.dtd b/src/org/apache/xml/security/resource/config.dtd
new file mode 100644
index 0000000..73fca50
--- /dev/null
+++ b/src/org/apache/xml/security/resource/config.dtd
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='UTF-8' ?>

+

+<!ELEMENT Configuration (CanonicalizationMethods , TransformAlgorithms , JCEAlgorithmMappings , Log4J , ResourceBundles , UnitTests , ResourceResolvers , KeyResolvers)>

+

+<!ATTLIST Configuration  xmlns CDATA  #FIXED 'http://www.xmlsecurity.org/NS/#configuration' 

+target        CDATA  #IMPLIED>

+<!ELEMENT CanonicalizationMethods (CanonicalizationMethod+)>

+

+<!ATTLIST CanonicalizationMethods  JAVACLASS CDATA  #FIXED 'org.apache.xml.security.c14n.Canonicalizer' >

+<!ELEMENT CanonicalizationMethod EMPTY>

+

+<!ATTLIST CanonicalizationMethod  URI       CDATA  #REQUIRED

+                                    JAVACLASS CDATA  #REQUIRED >

+<!ELEMENT TransformAlgorithms (TransformAlgorithm+)>

+

+<!ATTLIST TransformAlgorithms  JAVACLASS CDATA  #FIXED 'org.apache.xml.security.transforms.Transform' >

+<!ELEMENT TransformAlgorithm EMPTY>

+

+<!ATTLIST TransformAlgorithm  URI       CDATA  #REQUIRED

+                                JAVACLASS CDATA  #REQUIRED >

+<!ELEMENT JCEAlgorithmMappings (Providers , Algorithms)>

+

+<!ELEMENT Providers (Provider+)>

+

+<!ELEMENT Provider EMPTY>

+

+<!ATTLIST Provider  Id          ID     #REQUIRED

+                      Class       CDATA  #REQUIRED

+                      Info        CDATA  #IMPLIED

+                      ProviderURL CDATA  #IMPLIED >

+<!ELEMENT Algorithms (Algorithm+)>

+

+<!ELEMENT Algorithm (ProviderAlgo+)>

+

+<!ATTLIST Algorithm  URI            CDATA  #REQUIRED

+                       Description    CDATA  #IMPLIED

+                       AlgorithmClass CDATA  #IMPLIED >

+<!ELEMENT ProviderAlgo EMPTY>

+

+<!ATTLIST ProviderAlgo  ProviderId IDREF  #REQUIRED

+                          JCEName    CDATA  #REQUIRED

+                          JCEAlias   CDATA  #IMPLIED >

+<!ELEMENT Log4J EMPTY>

+

+<!ATTLIST Log4J  configFile CDATA  'data/log4j.xml' >

+<!ELEMENT ResourceBundles (ResourceBundle+)>

+

+<!ATTLIST ResourceBundles  defaultLanguageCode CDATA  'de'

+                             defaultCountryCode  CDATA  'DE' >

+<!ELEMENT ResourceBundle EMPTY>

+

+<!ATTLIST ResourceBundle  LanguageCode CDATA  #REQUIRED

+                            CountryCode  CDATA  #REQUIRED

+                            LOCATION     CDATA  #REQUIRED >

+<!ELEMENT UnitTests (UnitTest+)>

+

+<!ATTLIST UnitTests  JAVACLASS CDATA  #FIXED 'org.apache.xml.security.test.AllTests' >

+<!ELEMENT ResourceResolvers (Resolver+)>

+

+<!ELEMENT Resolver EMPTY>

+

+<!ATTLIST Resolver  JAVACLASS   CDATA  #REQUIRED

+                      DESCRIPTION CDATA  #IMPLIED >

+<!ELEMENT KeyResolvers (KeyResolver+)>

+<!ATTLIST KeyResolvers  JAVACLASS CDATA  #FIXED 'org.apache.xml.security.keys.KeyResolver' >

+

+<!ELEMENT KeyResolver EMPTY>

+

+<!ATTLIST KeyResolver  URI       CDATA  #REQUIRED

+                         JAVACLASS CDATA  #REQUIRED >

+<!ELEMENT UnitTest (#PCDATA)>

+

+<!ATTLIST UnitTest  JAVACLASS CDATA  #REQUIRED >

diff --git a/src/org/apache/xml/security/resource/config.xml b/src/org/apache/xml/security/resource/config.xml
new file mode 100644
index 0000000..7975105
--- /dev/null
+++ b/src/org/apache/xml/security/resource/config.xml
@@ -0,0 +1,380 @@
+<?xml version="1.0"?>

+<!--

+<!DOCTYPE Configuration SYSTEM "config.dtd">

+-->

+<!-- This configuration file is used for configuration of the org.apache.xml.security package -->

+<Configuration target="org.apache.xml.security" xmlns="http://www.xmlsecurity.org/NS/#configuration">

+   <CanonicalizationMethods>

+      <CanonicalizationMethod URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"

+                              JAVACLASS="org.apache.xml.security.c14n.implementations.Canonicalizer20010315OmitComments" />

+      <CanonicalizationMethod URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"

+                              JAVACLASS="org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithComments" />

+

+      <CanonicalizationMethod URI="http://www.w3.org/2001/10/xml-exc-c14n#"

+                              JAVACLASS="org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclOmitComments"/>

+      <CanonicalizationMethod URI="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"

+                              JAVACLASS="org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclWithComments"/>

+   </CanonicalizationMethods>

+   <TransformAlgorithms>

+      <!-- Base64 -->

+      <TransformAlgorithm URI="http://www.w3.org/2000/09/xmldsig#base64"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformBase64Decode" />

+      <!-- c14n omitting comments -->

+      <TransformAlgorithm URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformC14N" />

+      <!-- c14n with comments -->

+      <TransformAlgorithm URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformC14NWithComments" />

+      <!-- exclusive c14n omitting comments -->

+      <TransformAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformC14NExclusive" />

+      <!-- exclusive c14n with comments -->

+      <TransformAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformC14NExclusiveWithComments" />

+

+      <!-- XPath transform -->

+      <TransformAlgorithm URI="http://www.w3.org/TR/1999/REC-xpath-19991116"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformXPath" />

+      <!-- enveloped signature -->

+      <TransformAlgorithm URI="http://www.w3.org/2000/09/xmldsig#enveloped-signature"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformEnvelopedSignature" />

+      <!-- XSLT -->

+      <TransformAlgorithm URI="http://www.w3.org/TR/1999/REC-xslt-19991116"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformXSLT" />

+      <!-- XPath version 2 -->

+      <TransformAlgorithm URI="http://www.w3.org/2002/04/xmldsig-filter2"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformXPath2Filter" />

+      <!-- XPath version 2b -->

+      <TransformAlgorithm URI="http://www.w3.org/2002/06/xmldsig-filter2"

+                          JAVACLASS="org.apache.xml.security.transforms.implementations.TransformXPath2Filter" />

+   </TransformAlgorithms>

+   <SignatureAlgorithms>

+      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#dsa-sha1"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureDSA" />

+      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA1" />

+      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA1" />

+

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureBaseRSA$SignatureRSAMD5" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureBaseRSA$SignatureRSARIPEMD160" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA256" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA384" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA512" />

+

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.IntegrityHmac$IntegrityHmacMD5" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.IntegrityHmac$IntegrityHmacRIPEMD160" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA256" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA384" />

+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"

+                          JAVACLASS="org.apache.xml.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA512" />

+   </SignatureAlgorithms>

+   <JCEAlgorithmMappings>

+      <Algorithms>

+         <!-- MessageDigest Algorithms -->

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#md5"

+                    Description="MD5 message digest from RFC 1321"

+                    AlgorithmClass="MessageDigest"

+                    RequirementLevel="NOT RECOMMENDED"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="MD5"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#ripemd160"

+                    Description="RIPEMD-160 message digest"

+                    AlgorithmClass="MessageDigest"

+                    RequirementLevel="OPTIONAL"

+                    JCEName="RIPEMD160"/>

+

+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"

+                    Description="SHA-1 message digest"

+                    AlgorithmClass="MessageDigest"

+                    RequirementLevel="REQUIRED"

+                    JCEName="SHA-1"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#sha256"

+                    Description="SHA-1 message digest with 256 bit"

+                    AlgorithmClass="MessageDigest"

+                    RequirementLevel="RECOMMENDED"

+                    JCEName="SHA-256"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#sha384"

+                    Description="SHA message digest with 384 bit"

+                    AlgorithmClass="MessageDigest"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="SHA-384"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#sha512"

+                    Description="SHA-1 message digest with 512 bit"

+                    AlgorithmClass="MessageDigest"

+                    RequirementLevel="OPTIONAL"

+                    JCEName="SHA-512"/>

+

+         <!-- Signature Algorithms -->

+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#dsa-sha1"

+                    Description="Digital Signature Algorithm with SHA-1 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="REQUIRED"

+                    JCEName="SHA1withDSA"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"

+                    Description="RSA Signature with MD5 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="NOT RECOMMENDED"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="MD5withRSA"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"

+                    Description="RSA Signature with RIPEMD-160 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="RIPEMD160withRSA"/>

+

+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"

+                    Description="RSA Signature with SHA-1 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="RECOMMENDED"

+                    JCEName="SHA1withRSA"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"

+                    Description="RSA Signature with SHA-256 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="SHA256withRSA"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"

+                    Description="RSA Signature with SHA-384 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="SHA384withRSA"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"

+                    Description="RSA Signature with SHA-512 message digest"

+                    AlgorithmClass="Signature"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="SHA512withRSA"/>

+

+         <!-- MAC Algorithms -->

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"

+                    Description="Message Authentication code using MD5"

+                    AlgorithmClass="Mac"

+                    RequirementLevel="NOT RECOMMENDED"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="HmacMD5"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"

+                    Description="Message Authentication code using RIPEMD-160"

+                    AlgorithmClass="Mac"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="HMACRIPEMD160"/>

+

+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"

+                    Description="Message Authentication code using SHA1"

+                    AlgorithmClass="Mac"

+                    RequirementLevel="REQUIRED"

+                    JCEName="HmacSHA1"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"

+                    Description="Message Authentication code using SHA-256"

+                    AlgorithmClass="Mac"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="HmacSHA256"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"

+                    Description="Message Authentication code using SHA-384"

+                    AlgorithmClass="Mac"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="HmacSHA384"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"

+                    Description="Message Authentication code using SHA-512"

+                    AlgorithmClass="Mac"

+                    RequirementLevel="OPTIONAL"

+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"

+                    JCEName="HmacSHA512"/>

+

+         <!-- Block encryption Algorithms -->

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"

+                    Description="Block encryption using Triple-DES"

+                    AlgorithmClass="BlockEncryption"

+                    RequirementLevel="REQUIRED"

+                    KeyLength="192"

+                    RequiredKey="DESede"

+                    JCEName="DESede/CBC/ISO10126Padding"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes128-cbc"

+                    Description="Block encryption using AES with a key length of 128 bit"

+                    AlgorithmClass="BlockEncryption"

+                    RequirementLevel="REQUIRED"

+                    KeyLength="128"

+                    RequiredKey="AES"

+                    JCEName="AES/CBC/ISO10126Padding"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes192-cbc"

+                    Description="Block encryption using AES with a key length of 192 bit"

+                    AlgorithmClass="BlockEncryption"

+                    RequirementLevel="OPTIONAL"

+                    KeyLength="192"

+                    RequiredKey="AES"

+                    JCEName="AES/CBC/ISO10126Padding"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes256-cbc"

+                    Description="Block encryption using AES with a key length of 256 bit"

+                    AlgorithmClass="BlockEncryption"

+                    RequirementLevel="REQUIRED"

+                    KeyLength="256"

+                    RequiredKey="AES"

+                    JCEName="AES/CBC/ISO10126Padding"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"

+                    Description="Key Transport RSA-v1.5"

+                    AlgorithmClass="KeyTransport"

+                    RequirementLevel="REQUIRED"

+                    RequiredKey="RSA"

+                    JCEName="RSA/ECB/PKCS1Padding"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"

+                    Description="Key Transport RSA-OAEP"

+                    AlgorithmClass="KeyTransport"

+                    RequirementLevel="REQUIRED"

+                    RequiredKey="RSA"

+                    JCEName="RSA/ECB/OAEPWithSHA1AndMGF1Padding"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#dh"

+                    Description="Key Agreement Diffie-Hellman"

+                    AlgorithmClass="KeyAgreement"

+                    RequirementLevel="OPTIONAL"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-tripledes"

+                    Description="Symmetric Key Wrap using Triple DES"

+                    AlgorithmClass="SymmetricKeyWrap"

+                    RequirementLevel="REQUIRED"

+                    KeyLength="192"

+                    RequiredKey="DESede"

+                    JCEName="DESedeWrap"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes128"

+                    Description="Symmetric Key Wrap using AES with a key length of 128 bit"

+                    AlgorithmClass="SymmetricKeyWrap"

+                    RequirementLevel="REQUIRED"

+                    KeyLength="128"

+                    RequiredKey="AES"

+                    JCEName="AESWrap"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes192"

+                    Description="Symmetric Key Wrap using AES with a key length of 192 bit"

+                    AlgorithmClass="SymmetricKeyWrap"

+                    RequirementLevel="OPTIONAL"

+                    KeyLength="192"

+                    RequiredKey="AES"

+                    JCEName="AESWrap"/>

+

+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes256"

+                    Description="Symmetric Key Wrap using AES with a key length of 256 bit"

+                    AlgorithmClass="SymmetricKeyWrap"

+                    RequirementLevel="REQUIRED"

+                    KeyLength="256"

+                    RequiredKey="AES"

+                    JCEName="AESWrap"/>

+

+      </Algorithms>

+   </JCEAlgorithmMappings>

+   <ResourceBundles defaultLanguageCode="en" defaultCountryCode="US">

+      <ResourceBundle LanguageCode="en"

+                      CountryCode="US"

+                      LOCATION="org.apache.xml.security/resource/xmlsecurity_en.properties" />

+      <ResourceBundle LanguageCode="de"

+                      CountryCode="DE"

+                      LOCATION="org.apache.xml.security/resource/xmlsecurity_de.properties" />

+   </ResourceBundles>

+   <ResourceResolvers>

+      <Resolver JAVACLASS="org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP"

+                DESCRIPTION="A simple resolver for requests to HTTP space" />

+      <Resolver JAVACLASS="org.apache.xml.security.utils.resolver.implementations.ResolverLocalFilesystem"

+                DESCRIPTION="A simple resolver for requests to the local file system" />

+      <Resolver JAVACLASS="org.apache.xml.security.utils.resolver.implementations.ResolverFragment"

+                DESCRIPTION="A simple resolver for requests of same-document URIs" />

+      <Resolver JAVACLASS="org.apache.xml.security.utils.resolver.implementations.ResolverXPointer"

+                DESCRIPTION="A simple resolver for requests of XPointer fragents" />

+   </ResourceResolvers>

+   <!-- <defaultLocale languageCode="en" countryCode="US" /> -->

+   <KeyInfo>

+      <ContentHandler LOCALNAME="KeyName"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.KeyName" />

+      <ContentHandler LOCALNAME="KeyValue"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.KeyValue" />

+      <ContentHandler LOCALNAME="RetrievalMethod"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.RetrievalMethod" />

+      <ContentHandler LOCALNAME="X509Data"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.X509Data" />

+      <ContentHandler LOCALNAME="PGPData"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.PGPData" />

+      <ContentHandler LOCALNAME="SPKIData"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.SPKIData" />

+      <ContentHandler LOCALNAME="MgmtData"

+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"

+                      JAVACLASS="org.apache.xml.security.keys.content.MgmtData" />

+   </KeyInfo>

+   <KeyResolver>

+      <!-- This section contains a list of KeyResolvers that are available in

+           every KeyInfo object -->

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.RSAKeyValueResolver"

+                DESCRIPTION="Can extract RSA public keys" />

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.DSAKeyValueResolver"

+                DESCRIPTION="Can extract DSA public keys" />

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.X509CertificateResolver"

+                DESCRIPTION="Can extract public keys from X509 certificates" />

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.X509SKIResolver"

+                DESCRIPTION="Uses an X509v3 SubjectKeyIdentifier extension to retrieve a certificate from the storages" />

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.RetrievalMethodResolver"

+                DESCRIPTION="Resolves keys and certificates using ResourceResolvers" />

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.X509SubjectNameResolver"

+                DESCRIPTION="Uses an X509 SubjectName to retrieve a certificate from the storages" />

+      <Resolver JAVACLASS="org.apache.xml.security.keys.keyresolver.implementations.X509IssuerSerialResolver"

+                DESCRIPTION="Uses an X509 IssuerName and IssuerSerial to retrieve a certificate from the storages" />

+   </KeyResolver>

+ 

+   <PrefixMappings>

+      <!-- Many classes create Elements which are in a specific namespace;

+           here, the prefixes for these namespaces are defined. But this

+           can also be overwritten using the ElementProxy#setDefaultPrefix()

+           method. You can even set all prefixes to "" so that the corresponding

+           elements are created using the default namespace -->

+      <PrefixMapping namespace="http://www.w3.org/2000/09/xmldsig#"

+                     prefix="ds" />

+      <PrefixMapping namespace="http://www.w3.org/2001/04/xmlenc#"

+                     prefix="xenc" />

+      <PrefixMapping namespace="http://www.xmlsecurity.org/experimental#"

+                     prefix="experimental" />

+      <PrefixMapping namespace="http://www.w3.org/2002/04/xmldsig-filter2"

+                     prefix="dsig-xpath-old" />

+      <PrefixMapping namespace="http://www.w3.org/2002/06/xmldsig-filter2"

+                     prefix="dsig-xpath" />

+      <PrefixMapping namespace="http://www.w3.org/2001/10/xml-exc-c14n#"

+                     prefix="ec" />

+      <PrefixMapping namespace="http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/#xpathFilter"

+                     prefix="xx" />

+   </PrefixMappings>

+</Configuration>

diff --git a/src/org/apache/xml/security/resource/log4j.properties b/src/org/apache/xml/security/resource/log4j.properties
new file mode 100644
index 0000000..64c2a0f
--- /dev/null
+++ b/src/org/apache/xml/security/resource/log4j.properties
@@ -0,0 +1,36 @@
+# ------------------------------------------------------------------------
+#
+# Logging Configuration
+#
+# ------------------------------------------------------------------------
+#
+log4j.rootLogger=DEBUG, LOGTXT
+
+########################################################################
+#
+# Logging based on packages
+#
+########################################################################
+log4j.logger.org.apache.xml.security=DEBUG, LOGTXT
+log4j.logger.org.apache.xml.security.test.AllTests=DEBUG, LOGTXT
+
+########################################################################
+#
+# Logfile definitions 
+#
+########################################################################
+#Console Log
+log4j.appender.Console=org.apache.log4j.ConsoleAppender
+log4j.appender.Console.Threshold=DEBUG
+log4j.appender.Console.layout=org.apache.log4j.PatternLayout
+log4j.appender.Console.layout.ConversionPattern=%-5p %C{1}:%L - %m\n
+log4j.appender.Console.Target=System.err
+
+#LOGTXT Log
+log4j.appender.LOGTXT=org.apache.log4j.FileAppender
+log4j.appender.LOGTXT.File=log.txt
+log4j.appender.LOGTXT.Append=true
+log4j.appender.LOGTXT.Threshold=DEBUG
+log4j.appender.LOGTXT.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGTXT.layout.ConversionPattern=%-5p %C{1}:%L - %m\n
+
diff --git a/src/org/apache/xml/security/resource/package.html b/src/org/apache/xml/security/resource/package.html
new file mode 100644
index 0000000..f7d04d7
--- /dev/null
+++ b/src/org/apache/xml/security/resource/package.html
@@ -0,0 +1,3 @@
+<HTML> <HEAD> </HEAD> <BODY> <P>
+software configuration and internationalization ({@link org.apache.xml.security.utils.I18n}).
+</P></BODY> </HTML>
diff --git a/src/org/apache/xml/security/resource/schema/etsi.xsd b/src/org/apache/xml/security/resource/schema/etsi.xsd
new file mode 100644
index 0000000..d69852f
--- /dev/null
+++ b/src/org/apache/xml/security/resource/schema/etsi.xsd
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by XMLSpy v4 (Altova) -->

+<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" xsi:schemaLocation="http://www.w3.org/2000/09/xmldsig# xmldsig-core-schema.xsd">

+	<xsd:element name="Any" type="AnyType"/>

+	<xsd:complexType name="AnyType" mixed="true">

+		<xsd:sequence>

+			<xsd:any namespace="##any"/>

+		</xsd:sequence>

+		<xsd:anyAttribute namespace="##any"/>

+	</xsd:complexType>

+	<xsd:element name="ObjectIdentifier" type="ObjectIdentifierType"/>

+	<xsd:complexType name="ObjectIdentifierType">

+		<xsd:sequence>

+			<xsd:element name="Identifier" type="IdentifierType"/>

+			<xsd:element name="Description" type="xsd:string" minOccurs="0"/>

+			<xsd:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="IdentifierType">

+		<xsd:simpleContent>

+			<xsd:extension base="xsd:anyURI">

+				<xsd:attribute name="Qualifier" type="QualifierType" use="optional"/>

+			</xsd:extension>

+		</xsd:simpleContent>

+	</xsd:complexType>

+	<xsd:simpleType name="QualifierType">

+		<xsd:restriction base="xsd:string">

+			<xsd:enumeration value="OIDAsURI"/>

+			<xsd:enumeration value="OIDAsURN"/>

+		</xsd:restriction>

+	</xsd:simpleType>

+	<xsd:complexType name="DocumentationReferencesType">

+		<xsd:sequence maxOccurs="unbounded">

+			<xsd:element name="DocumentationReference" type="xsd:anyURI"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>

+	<xsd:complexType name="EncapsulatedPKIDataType">

+		<xsd:simpleContent>

+			<xsd:extension base="xsd:base64Binary">

+				<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+			</xsd:extension>

+		</xsd:simpleContent>

+	</xsd:complexType>

+	<xsd:element name="TimeStamp" type="TimeStampType"/>

+	<xsd:complexType name="TimeStampType">

+		<xsd:sequence>

+			<xsd:element name="HashDataInfo" type="HashDataInfoType" maxOccurs="unbounded"/>

+			<xsd:choice>

+				<xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>

+				<xsd:element name="XMLTimeStamp" type="AnyType"/>

+			</xsd:choice>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="HashDataInfoType">

+		<xsd:sequence>

+			<xsd:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="uri" type="xsd:anyURI" use="required"/>

+	</xsd:complexType>

+	<xsd:element name="QualifyingProperties" type="QualifyingPropertiesType"/>

+	<xsd:complexType name="QualifyingPropertiesType">

+		<xsd:sequence>

+			<xsd:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>

+			<xsd:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:element name="SignedProperties" type="SignedPropertiesType"/>

+	<xsd:complexType name="SignedPropertiesType">

+		<xsd:sequence>

+			<xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>

+			<xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:element name="UnsignedProperties" type="UnsignedPropertiesType"/>

+	<xsd:complexType name="UnsignedPropertiesType">

+		<xsd:sequence>

+			<xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>

+			<xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>

+	<xsd:complexType name="SignedSignaturePropertiesType">

+		<xsd:sequence>

+			<xsd:element name="SigningTime" type="xsd:dateTime"/>

+			<xsd:element name="SigningCertificate" type="CertIDListType"/>

+			<xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>

+			<xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>

+			<xsd:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>

+	<xsd:complexType name="SignedDataObjectPropertiesType">

+		<xsd:sequence>

+			<xsd:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>

+			<xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>

+			<xsd:element name="AllDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>

+			<xsd:element name="IndividualDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>

+	<xsd:complexType name="UnsignedSignaturePropertiesType">

+		<xsd:sequence>

+			<xsd:element name="CounterSignature" type="CounterSignatureType" minOccurs="0" maxOccurs="unbounded"/>

+			<xsd:element name="SignatureTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>

+			<xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType" minOccurs="0"/>

+			<xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType" minOccurs="0"/>

+			<xsd:choice>

+				<xsd:element name="SigAndRefsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>

+				<xsd:element name="RefsOnlyTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>

+			</xsd:choice>

+			<xsd:element name="CertificateValues" type="CertificateValuesType" minOccurs="0"/>

+			<xsd:element name="RevocationValues" type="RevocationValuesType" minOccurs="0"/>

+			<xsd:element name="ArchiveTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>

+	<xsd:complexType name="UnsignedDataObjectPropertiesType">

+		<xsd:sequence>

+			<xsd:element name="UnsignedDataObjectProperty" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>

+	<xsd:complexType name="QualifyingPropertiesReferenceType">

+		<xsd:sequence>

+			<xsd:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="URI" type="xsd:anyURI" use="required"/>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:element name="SigningTime" type="xsd:dateTime"/>

+	<xsd:element name="SigningCertificate" type="CertIDListType"/>

+	<xsd:complexType name="CertIDListType">

+		<xsd:sequence>

+			<xsd:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="CertIDType">

+		<xsd:sequence>

+			<xsd:element name="CertDigest" type="DigestAlgAndValueType"/>

+			<xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="DigestAlgAndValueType">

+		<xsd:sequence>

+			<xsd:element name="DigestMethod" type="ds:DigestMethodType"/>

+			<xsd:element name="DigestValue" type="ds:DigestValueType"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>

+	<xsd:complexType name="SignaturePolicyIdentifierType">

+		<xsd:choice>

+			<xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>

+			<xsd:element name="SignaturePolicyImplied"/>

+		</xsd:choice>

+	</xsd:complexType>

+	<xsd:complexType name="SignaturePolicyIdType">

+		<xsd:sequence>

+			<xsd:element name="SigPolicyId" type="ObjectIdentifierType"/>

+			<xsd:element ref="ds:Transforms" minOccurs="0"/>

+			<xsd:element name="SigPolicyHash" type="DigestAlgAndValueType"/>

+			<xsd:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="SigPolicyQualifiersListType">

+		<xsd:sequence>

+			<xsd:element name="SigPolicyQualifier" type="AnyType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="SPURI" type="xsd:anyURI"/>

+	<xsd:element name="SPUserNotice" type="SPUserNoticeType"/>

+	<xsd:complexType name="SPUserNoticeType">

+		<xsd:sequence>

+			<xsd:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>

+			<xsd:element name="ExplicitText" type="xsd:string" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="NoticeReferenceType">

+		<xsd:sequence>

+			<xsd:element name="Organization" type="xsd:string"/>

+			<xsd:element name="NoticeNumbers" type="IntegerListType"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="IntegerListType">

+		<xsd:sequence>

+			<xsd:element name="int" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="CounterSignature" type="CounterSignatureType"/>

+	<xsd:complexType name="CounterSignatureType">

+		<xsd:sequence>

+			<xsd:element ref="ds:Signature"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="DataObjectFormat" type="DataObjectFormatType"/>

+	<xsd:complexType name="DataObjectFormatType">

+		<xsd:sequence>

+			<xsd:element name="Description" type="xsd:string" minOccurs="0"/>

+			<xsd:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>

+			<xsd:element name="MimeType" type="xsd:string" minOccurs="0"/>

+			<xsd:element name="Encoding" type="xsd:anyURI" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="ObjectReference" type="xsd:anyURI" use="required"/>

+	</xsd:complexType>

+	<xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>

+	<xsd:complexType name="CommitmentTypeIndicationType">

+		<xsd:sequence>

+			<xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/>

+			<xsd:choice>

+				<xsd:element name="ObjectReference" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>

+				<xsd:element name="AllSignedDataObjects"/>

+			</xsd:choice>

+			<xsd:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="CommitmentTypeQualifiersListType">

+		<xsd:sequence>

+			<xsd:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>

+	<xsd:complexType name="SignatureProductionPlaceType">

+		<xsd:sequence>

+			<xsd:element name="City" type="xsd:string" minOccurs="0"/>

+			<xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>

+			<xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>

+			<xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="SignerRole" type="SignerRoleType"/>

+	<xsd:complexType name="SignerRoleType">

+		<xsd:sequence>

+			<xsd:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>

+			<xsd:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="ClaimedRolesListType">

+		<xsd:sequence>

+			<xsd:element name="ClaimedRole" type="AnyType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="CertifiedRolesListType">

+		<xsd:sequence>

+			<xsd:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="AllDataObjectsTimeStamp" type="TimeStampType"/>

+	<xsd:element name="IndividualDataObjectsTimeStamp" type="TimeStampType"/>

+	<xsd:element name="SignatureTimeStamp" type="TimeStampType"/>

+	<xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>

+	<xsd:complexType name="CompleteCertificateRefsType">

+		<xsd:sequence>

+			<xsd:element name="CertRefs" type="CertIDListType"/>

+		</xsd:sequence>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>

+	<xsd:complexType name="CompleteRevocationRefsType">

+		<xsd:sequence>

+			<xsd:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>

+			<xsd:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>

+			<xsd:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:complexType name="CRLRefsType">

+		<xsd:sequence>

+			<xsd:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="CRLRefType">

+		<xsd:sequence>

+			<xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>

+			<xsd:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="CRLIdentifierType">

+		<xsd:sequence>

+			<xsd:element name="Issuer" type="xsd:string"/>

+			<xsd:element name="IssueTime" type="xsd:dateTime"/>

+			<xsd:element name="Number" type="xsd:integer" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>

+	</xsd:complexType>

+	<xsd:complexType name="OCSPRefsType">

+		<xsd:sequence>

+			<xsd:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="OCSPRefType">

+		<xsd:sequence>

+			<xsd:element name="OCSPIdentifier" type="OCSPIdentifierType"/>

+			<xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="OCSPIdentifierType">

+		<xsd:sequence>

+			<xsd:element name="ResponderID" type="xsd:string"/>

+			<xsd:element name="ProducedAt" type="xsd:dateTime"/>

+		</xsd:sequence>

+		<xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>

+	</xsd:complexType>

+	<xsd:complexType name="OtherCertStatusRefsType">

+		<xsd:sequence>

+			<xsd:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="SigAndRefsTimeStamp" type="TimeStampType"/>

+	<xsd:element name="RefsOnlyTimeStamp" type="TimeStampType"/>

+	<xsd:element name="CertificateValues" type="CertificateValuesType"/>

+	<xsd:complexType name="CertificateValuesType">

+		<xsd:choice minOccurs="0" maxOccurs="unbounded">

+			<xsd:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>

+			<xsd:element name="OtherCertificate" type="AnyType"/>

+		</xsd:choice>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:element name="RevocationValues" type="RevocationValuesType"/>

+	<xsd:complexType name="RevocationValuesType">

+		<xsd:sequence>

+			<xsd:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>

+			<xsd:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>

+			<xsd:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>

+		</xsd:sequence>

+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>

+	</xsd:complexType>

+	<xsd:complexType name="CRLValuesType">

+		<xsd:sequence>

+			<xsd:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="OCSPValuesType">

+		<xsd:sequence>

+			<xsd:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:complexType name="OtherCertStatusValuesType">

+		<xsd:sequence>

+			<xsd:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>

+		</xsd:sequence>

+	</xsd:complexType>

+	<xsd:element name="ArchiveTimeStamp" type="TimeStampType"/>

+</xsd:schema>

diff --git a/src/org/apache/xml/security/resource/schema/xenc-schema.rng b/src/org/apache/xml/security/resource/schema/xenc-schema.rng
new file mode 100644
index 0000000..895e033
--- /dev/null
+++ b/src/org/apache/xml/security/resource/schema/xenc-schema.rng
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html -->
+<!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html -->
+<!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html -->
+<!-- http://lists.oasis-open.org/archives/relax-ng-comment/200206/maillist.html -->
+
+<grammar xmlns='http://relaxng.org/ns/structure/1.0'
+        xmlns:ds='http://www.w3.org/2000/09/xmldsig#'
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        ns="http://www.w3.org/2001/04/xmlenc#"
+        datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+    <include href="http://www.w3.org/Signature/Drafts/xmldsig-core/xmldsig-core-schema.rng">
+    <!-- Used for DigestMethod, KeyInfoType and anyThing -->
+    <!-- Since xmldsig-core also has a start, I have to include it
+        in the include for redefinition. -->
+        <start>
+            <choice>
+                <!-- We get to define the permissible root elements! -->
+                <element name="EncryptedData"><ref name="EncryptedDataType"/></element>
+                <element name="EncryptedKey"><ref name="EncryptedKeyType"/></element>
+            </choice>
+        </start>   
+        
+        <define name='anyThing'>
+            <zeroOrMore>
+                <choice>
+                    <text/>
+                    <element>
+                        <anyName>
+                            <except>
+                                <nsName/>
+                                <nsName ns='http://www.w3.org/2000/09/xmldsig#'/>
+                            </except>
+                        </anyName>
+                        <ref name='anyThing'/>
+                        <zeroOrMore>
+                            <attribute>
+                              <anyName/>
+                            </attribute>
+                        </zeroOrMore>
+                    </element>
+                </choice>
+            </zeroOrMore>
+            </define>
+        
+        
+    </include>
+    
+        <!-- Import definitions from the xmldsig rng -->
+
+        <define name="KeyInfoType" combine="interleave">
+            <zeroOrMore>
+                <choice>
+                    <element name="EncryptedKey"><ref name="EncryptedKeyType"/></element>
+                    <element name="AgreementMethod"><ref name="AgreementMethodType"/></element>
+                </choice>
+            </zeroOrMore>    
+        </define>
+
+        <define name="DigestMethodType" combine="choice">
+            <notAllowed/>
+         </define>
+
+        <define name="TransformType" combine="choice">
+            <notAllowed/>
+         </define>
+
+    <!-- Now redefined in the include statement
+        <define name="anyThing" combine="choice">
+            <notAllowed/>
+         </define>
+    -->
+
+    <!-- End import -->
+        
+  
+    <define name="EncryptedDataType">
+          <ref name="EncryptedType"/>
+    </define>
+  
+  
+    <define name="EncryptedKeyType">
+            <ref name="EncryptedType"/>
+            <optional><element name='ReferenceList'>
+                <ref name="ReferenceListType"/></element>
+            </optional>
+            <optional><element name='CarriedKeyName'><data type="string"/></element></optional>
+            <optional><attribute name='Recipient'> <data type="string"/></attribute></optional>
+    </define>
+
+    
+     <define name="EncryptedType">
+        <element name="EncryptionMethod"><ref name="EncryptionMethodType"/></element>
+        <optional>
+            <element name="KeyInfo" ns="http://www.w3.org/2000/09/xmldsig#">
+                <ref name="KeyInfoType"/>
+            </element>
+        </optional>
+        <optional>
+            <element name="CipherData"><ref name="CipherDataType"/></element>
+        </optional> 
+        <optional>
+             <element name="EncryptionProperties"><ref name="EncryptionPropertiesType"/></element>
+        </optional>
+        <optional><attribute name="Id"><data type="ID"/></attribute></optional>
+        <optional><attribute name="Type"><data type="anyURI"/></attribute></optional>
+        <optional><attribute name="MimeType"><data type="string"/></attribute></optional>
+        <optional><attribute name="Encoding"><data type="anyURI"/></attribute></optional>
+        <optional><attribute name='xsi:schemaLocation'/></optional>
+    </define> 
+
+    <define name="EncryptionMethodType">
+        <zeroOrMore>
+            <choice>
+                <element name="KeySize">
+                    <data type="integer"/>
+                </element>
+                <element name="OAEPparams">
+                    <data type="base64Binary"/>
+                </element>
+                <text/>
+                <element name='DigestMethod' ns="http://www.w3.org/2000/09/xmldsig#">
+                    <ref name="DigestMethodType"/>
+                </element>
+            </choice>
+        </zeroOrMore>
+        <attribute name="Algorithm"><data type="anyURI"/></attribute>
+    </define>
+
+            
+    <define name="AgreementMethodType">
+        <zeroOrMore>
+            <choice>
+                <element name="KA-Nonce">
+                    <data type="base64Binary"/>
+                </element>
+                <element name='DigestMethod' ns="http://www.w3.org/2000/09/xmldsig#">
+                    <ref name="DigestMethodType"/>
+                </element>
+                <text/>
+                <element>
+                    <nsName ns="http://www.w3.org/2000/09/xmldsig#"/>
+                    <ref name="anyThing"/>
+                </element>
+                <element name="OriginatorKeyInfo"><ref name="KeyInfoType"/></element>
+                <element name="RecipientKeyInfo"><ref name="KeyInfoType"/></element>
+            </choice>
+        </zeroOrMore>
+        <attribute name="Algorithm"><data type="anyURI"/></attribute>
+    </define>            
+            
+            
+    <define name="ReferenceListType">
+        <oneOrMore>
+            <choice>
+                <element name="DataReference">
+                    <text/>
+                    <attribute name="URI"><data type="anyURI"/></attribute>
+                </element>
+                <element name="KeyReference">
+                    <text/>
+                    <attribute name="URI"><data type="anyURI"/></attribute>
+                </element>
+            </choice>
+        </oneOrMore>
+    </define>
+    
+    
+    <define name="CipherDataType">
+        <choice>
+            <element name="CipherValue"><data type="base64Binary"/></element>
+            <element name="CipherReference">
+                <element name="Transforms">
+                  <oneOrMore>
+                      <element name='Transform' ns="http://www.w3.org/2000/09/xmldsig#">
+                          <ref name='TransformType'/>
+                        </element>
+                    </oneOrMore>
+                </element>
+                <attribute name="URI">
+                    <data type="anyURI"/>
+                </attribute>      
+            </element>
+        </choice>
+    </define>
+    
+    
+    <define name="EncryptionPropertiesType">        
+        <element name="EncryptionProperty">
+          <zeroOrMore>
+                <element>
+                    <anyName/>
+                    <text/>
+                </element>
+            </zeroOrMore>
+            <optional>
+                <attribute name="Target">
+                    <data type="anyURI"/>
+                </attribute>  
+            </optional>
+            <optional>                
+                <attribute name="Id">
+                    <data type="ID"/>
+                </attribute>    
+            </optional>
+        </element>
+        
+        <optional>
+            <attribute name="Id">
+                <data type="ID"/>
+            </attribute>    
+        </optional>
+        <zeroOrMore>
+            <attribute><nsName ns="http://www.w3.org/XML/1998/namespace"/></attribute>
+        </zeroOrMore>
+    </define>
+
+</grammar>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/resource/schema/xenc-schema.xsd b/src/org/apache/xml/security/resource/schema/xenc-schema.xsd
new file mode 100644
index 0000000..85af68b
--- /dev/null
+++ b/src/org/apache/xml/security/resource/schema/xenc-schema.xsd
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE schema  PUBLIC "-//W3C//DTD XMLSchema 200102//EN"
+ "http://www.w3.org/2001/XMLSchema.dtd"
+ [
+   <!ATTLIST schema
+     xmlns:xenc CDATA #FIXED 'http://www.w3.org/2001/04/xmlenc#'
+     xmlns:ds CDATA #FIXED 'http://www.w3.org/2000/09/xmldsig#'>
+   <!ENTITY xenc 'http://www.w3.org/2001/04/xmlenc#'>
+   <!ENTITY % p ''>
+   <!ENTITY % s ''>
+  ]>
+
+<schema xmlns='http://www.w3.org/2001/XMLSchema' version='1.0'
+        xmlns:xenc='http://www.w3.org/2001/04/xmlenc#'
+        xmlns:ds='http://www.w3.org/2000/09/xmldsig#'
+        targetNamespace='http://www.w3.org/2001/04/xmlenc#'
+        elementFormDefault='qualified'>
+
+  <import namespace='http://www.w3.org/2000/09/xmldsig#'
+          schemaLocation='http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd'/>
+
+  <complexType name='EncryptedType' abstract='true'>
+    <sequence>
+      <element name='EncryptionMethod' type='xenc:EncryptionMethodType'
+       minOccurs='0'/>
+      <element ref='ds:KeyInfo' minOccurs='0'/>
+      <element ref='xenc:CipherData'/>
+      <element ref='xenc:EncryptionProperties' minOccurs='0'/>
+    </sequence>
+    <attribute name='Id' type='ID' use='optional'/>
+    <attribute name='Type' type='anyURI' use='optional'/>
+    <attribute name='MimeType' type='string' use='optional'/>
+    <attribute name='Encoding' type='anyURI' use='optional'/>
+  </complexType>
+  
+  <complexType name='EncryptionMethodType' mixed='true'>
+    <sequence>
+      <element name='KeySize' minOccurs='0' type='xenc:KeySizeType'/>
+      <element name='OAEPparams' minOccurs='0' type='base64Binary'/>
+      <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+    </sequence>
+    <attribute name='Algorithm' type='anyURI' use='required'/>
+  </complexType>
+
+    <simpleType name='KeySizeType'>
+      <restriction base="integer"/>
+    </simpleType>
+
+  <element name='CipherData' type='xenc:CipherDataType'/>
+  <complexType name='CipherDataType'>
+     <choice>
+       <element name='CipherValue' type='base64Binary'/>
+       <element ref='xenc:CipherReference'/>
+     </choice>
+    </complexType>
+
+   <element name='CipherReference' type='xenc:CipherReferenceType'/>
+   <complexType name='CipherReferenceType'>
+       <choice>
+         <element name='Transforms' type='xenc:TransformsType' minOccurs='0'/>
+       </choice>
+       <attribute name='URI' type='anyURI' use='required'/>
+   </complexType>
+
+     <complexType name='TransformsType'>
+       <sequence>
+         <element ref='ds:Transform' maxOccurs='unbounded'/>
+       </sequence>
+     </complexType>
+
+
+  <element name='EncryptedData' type='xenc:EncryptedDataType'/>
+  <complexType name='EncryptedDataType'>
+    <complexContent>
+      <extension base='xenc:EncryptedType'>
+       </extension>
+    </complexContent>
+  </complexType>
+
+  <!-- Children of ds:KeyInfo -->
+
+  <element name='EncryptedKey' type='xenc:EncryptedKeyType'/>
+  <complexType name='EncryptedKeyType'>
+    <complexContent>
+      <extension base='xenc:EncryptedType'>
+        <sequence>
+          <element ref='xenc:ReferenceList' minOccurs='0'/>
+          <element name='CarriedKeyName' type='string' minOccurs='0'/>
+        </sequence>
+        <attribute name='Recipient' type='string'
+         use='optional'/>
+      </extension>
+    </complexContent>
+  </complexType>
+
+    <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+    <complexType name="AgreementMethodType" mixed="true">
+      <sequence>
+        <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
+        <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+        <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+        <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+        <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+      </sequence>
+      <attribute name="Algorithm" type="anyURI" use="required"/>
+    </complexType>
+
+  <!-- End Children of ds:KeyInfo -->
+
+  <element name='ReferenceList'>
+    <complexType>
+      <choice minOccurs='1' maxOccurs='unbounded'>
+        <element name='DataReference' type='xenc:ReferenceType'/>
+        <element name='KeyReference' type='xenc:ReferenceType'/>
+      </choice>
+    </complexType>
+  </element>
+
+  <complexType name='ReferenceType'>
+    <sequence>
+      <any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
+    </sequence>
+    <attribute name='URI' type='anyURI' use='required'/>
+  </complexType>
+
+
+  <element name='EncryptionProperties' type='xenc:EncryptionPropertiesType'/>
+  <complexType name='EncryptionPropertiesType'>
+    <sequence>
+      <element ref='xenc:EncryptionProperty' maxOccurs='unbounded'/>
+    </sequence>
+    <attribute name='Id' type='ID' use='optional'/>
+  </complexType>
+
+    <element name='EncryptionProperty' type='xenc:EncryptionPropertyType'/>
+    <complexType name='EncryptionPropertyType' mixed='true'>
+      <choice maxOccurs='unbounded'>
+        <any namespace='##other' processContents='lax'/>
+      </choice>
+      <attribute name='Target' type='anyURI' use='optional'/>
+      <attribute name='Id' type='ID' use='optional'/>
+      <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+    </complexType>
+
+</schema>
+
diff --git a/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.dtd b/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.dtd
new file mode 100644
index 0000000..969dbb1
--- /dev/null
+++ b/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.dtd
@@ -0,0 +1,171 @@
+<!-- DTD for XML Signatures
+    http://www.w3.org/2000/09/xmldsig#
+    Joseph Reagle $last changed 20001215$
+
+    http://www.w3.org/2000/09/xmldsig#
+    $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+    Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+    of Technology, Institut National de Recherche en Informatique et en
+    Automatique, Keio University). All Rights Reserved.
+    http://www.w3.org/Consortium/Legal/
+
+    This document is governed by the W3C Software License [1] as described
+    in the FAQ [2].
+
+    [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+    [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+
+
+<!--
+
+The following entity declarations enable external/flexible content in
+the Signature content model.
+
+#PCDATA emulates schema string; when combined with element types it
+emulates schema's mixed content type.
+
+%foo.ANY permits the user to include their own element types from
+other namespaces, for example:
+ <!ENTITY % KeyValue.ANY '| ecds:ECDSAKeyValue'>
+ ...
+ <!ELEMENT ecds:ECDSAKeyValue (#PCDATA)  >
+
+-->
+
+<!ENTITY % Object.ANY ''>
+<!ENTITY % Method.ANY ''>
+<!ENTITY % Transform.ANY ''>
+<!ENTITY % SignatureProperty.ANY ''>
+<!ENTITY % KeyInfo.ANY ''>
+<!ENTITY % KeyValue.ANY ''>
+<!ENTITY % PGPData.ANY ''>
+<!ENTITY % X509Data.ANY ''>
+<!ENTITY % SPKIData.ANY ''>
+
+
+
+<!-- Start Core Signature declarations, these should NOT be altered -->
+
+<!ELEMENT Signature (SignedInfo, SignatureValue, KeyInfo?, Object*)  >
+<!ATTLIST Signature  
+	xmlns	CDATA	#FIXED 'http://www.w3.org/2000/09/xmldsig#'
+	Id  	ID	#IMPLIED >
+
+<!ELEMENT SignatureValue (#PCDATA) >
+<!ATTLIST SignatureValue  
+         Id  ID      #IMPLIED>
+
+<!ELEMENT SignedInfo (CanonicalizationMethod, 
+	SignatureMethod,  Reference+)  >
+<!ATTLIST SignedInfo  
+	Id	 ID 	 #IMPLIED 
+>
+
+<!ELEMENT CanonicalizationMethod (#PCDATA %Method.ANY;)* > 
+<!ATTLIST CanonicalizationMethod 
+	Algorithm CDATA #REQUIRED > 
+
+<!ELEMENT SignatureMethod (#PCDATA|HMACOutputLength %Method.ANY;)* >
+<!ATTLIST SignatureMethod 
+	Algorithm CDATA #REQUIRED > 
+
+<!ELEMENT Reference (Transforms?, DigestMethod, DigestValue)  >
+<!ATTLIST Reference
+	Id	ID	#IMPLIED
+	URI	CDATA	#IMPLIED
+	Type	CDATA	#IMPLIED>
+
+
+<!ELEMENT Transforms (Transform+)>
+
+<!ELEMENT Transform (#PCDATA|XPath %Transform.ANY;)* >
+<!ATTLIST Transform 
+	Algorithm    CDATA    #REQUIRED >
+
+<!ELEMENT XPath (#PCDATA) >
+
+<!ELEMENT DigestMethod (#PCDATA %Method.ANY;)* >
+<!ATTLIST DigestMethod  
+	Algorithm		CDATA	#REQUIRED >
+
+<!ELEMENT DigestValue  (#PCDATA)  >
+
+<!ELEMENT KeyInfo	(#PCDATA|KeyName|KeyValue|RetrievalMethod|
+           X509Data|PGPData|SPKIData|MgmtData %KeyInfo.ANY;)* >
+<!ATTLIST KeyInfo
+	Id	ID	 #IMPLIED >
+
+<!-- Key Information -->
+
+<!ELEMENT KeyName (#PCDATA) >
+<!ELEMENT KeyValue (#PCDATA|DSAKeyValue|RSAKeyValue %KeyValue.ANY;)* >
+<!ELEMENT MgmtData (#PCDATA) >
+
+<!ELEMENT RetrievalMethod (Transforms?) >
+<!ATTLIST RetrievalMethod
+  URI	CDATA #REQUIRED 
+  Type	CDATA #IMPLIED > 
+
+<!-- X.509 Data -->
+
+<!ELEMENT X509Data ((X509IssuerSerial | X509SKI | X509SubjectName |
+                    X509Certificate | X509CRL )+ %X509Data.ANY;)>
+<!ELEMENT X509IssuerSerial (X509IssuerName, X509SerialNumber) >
+<!ELEMENT X509IssuerName (#PCDATA) >
+<!ELEMENT X509SubjectName (#PCDATA) >
+<!ELEMENT X509SerialNumber (#PCDATA) >
+<!ELEMENT X509SKI (#PCDATA) >
+<!ELEMENT X509Certificate (#PCDATA) >
+<!ELEMENT X509CRL (#PCDATA) >
+
+<!-- PGPData -->
+
+<!ELEMENT PGPData ((PGPKeyID, PGPKeyPacket?) | (PGPKeyPacket) %PGPData.ANY;) >
+<!ELEMENT PGPKeyPacket  (#PCDATA)  >
+<!ELEMENT PGPKeyID  (#PCDATA)  >
+
+<!-- SPKI Data -->
+
+<!ELEMENT SPKIData (SPKISexp %SPKIData.ANY;)  >
+<!ELEMENT SPKISexp  (#PCDATA)  >
+
+<!-- Extensible Content -->
+
+<!ELEMENT Object (#PCDATA|Signature|SignatureProperties|Manifest %Object.ANY;)* >
+<!ATTLIST Object  
+	Id	ID	#IMPLIED
+	MimeType	CDATA	#IMPLIED
+	Encoding	CDATA	#IMPLIED >
+
+<!ELEMENT Manifest (Reference+)  >
+<!ATTLIST Manifest  
+	Id	ID	#IMPLIED >
+
+<!ELEMENT SignatureProperties (SignatureProperty+)  >
+<!ATTLIST SignatureProperties  
+	Id	ID	 #IMPLIED  >
+
+<!ELEMENT SignatureProperty (#PCDATA %SignatureProperty.ANY;)* >
+<!ATTLIST SignatureProperty  
+	Target 	CDATA	 #REQUIRED
+	Id	ID	 #IMPLIED  >
+
+<!-- Algorithm Parameters -->
+
+<!ELEMENT HMACOutputLength (#PCDATA) >
+
+<!ELEMENT DSAKeyValue ((P, Q)?, G?, Y, J?, (Seed, PgenCounter)?) >
+<!ELEMENT P (#PCDATA) >
+<!ELEMENT Q (#PCDATA) >
+<!ELEMENT G (#PCDATA) >
+<!ELEMENT Y (#PCDATA) >
+<!ELEMENT J (#PCDATA) >
+<!ELEMENT Seed (#PCDATA) >
+<!ELEMENT PgenCounter (#PCDATA) >
+
+<!ELEMENT RSAKeyValue (Modulus, Exponent) > 
+<!ELEMENT Modulus (#PCDATA) >
+<!ELEMENT Exponent (#PCDATA) >
+
diff --git a/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.rng b/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.rng
new file mode 100644
index 0000000..03330fb
--- /dev/null
+++ b/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.rng
@@ -0,0 +1,339 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html -->
+<!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html -->
+<!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html -->
+<!-- http://lists.oasis-open.org/archives/relax-ng-comment/200206/maillist.html -->
+
+<grammar xmlns='http://relaxng.org/ns/structure/1.0'
+        xmlns:ds='http://www.w3.org/2000/09/xmldsig#'
+        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+        ns='http://www.w3.org/2000/09/xmldsig#'
+        datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'>
+
+    <start>
+            <element name='Signature'><ref name='SignatureType'/></element>
+    </start>   
+    
+    <define name='CryptoBinary'>
+        <data type='base64Binary'/>
+    </define>
+    
+    <define name='SignatureType'>
+        <element name='SignedInfo'><ref name='SignedInfoType'/></element>
+        <element name='SignatureValue'><ref name='SignatureValueType'/></element>
+        <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional>
+        <zeroOrMore><element name='Object'><ref name='ObjectType'/></element></zeroOrMore>
+        <optional><attribute name='Id'><data type='ID'/></attribute></optional>
+        <optional><attribute name='xsi:schemaLocation'/></optional>
+    </define>
+
+    <define name='SignatureValueType'>
+        <data type='base64Binary'/>
+        <optional><attribute name='Id'><data type='ID'/></attribute></optional>
+    </define>
+    
+<!-- Start SignedInfo -->
+    
+    <define name='SignedInfoType'>
+        <element name='CanonicalizationMethod'><ref name='CanonicalizationMethodType'/></element>
+        <element name='SignatureMethod'><ref name='SignatureMethodType'/></element>
+        <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional>
+        <oneOrMore><element name='Reference'><ref name='ReferenceType'/></element></oneOrMore>
+        <optional><attribute name='Id'><data type='ID'/></attribute></optional>
+    </define>    
+
+    <define name='CanonicalizationMethodType'>
+        <zeroOrMore><ref name='anyThing'/></zeroOrMore>
+        <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional>
+    </define>    
+
+
+    <define name='SignatureMethodType'>
+        <optional><element name='HMACOutputLength'><data type='integer'/></element></optional>
+        <zeroOrMore><ref name='anyThing'/></zeroOrMore>
+        <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional>
+    </define>    
+        
+<!-- Start Reference -->
+    
+    <define name='ReferenceType'>
+        <optional><element name='Transforms'><ref name='TransformsType'/></element></optional>
+        <element name='DigestMethod'><ref name='DigestMethodType'/></element>
+        <element name='DigestValue'><ref name='DigestValueType'/></element>
+        <optional><attribute name='Type'><data type='anyURI'/></attribute></optional>
+        <optional><attribute name='URI'><data type='anyURI'/></attribute></optional>
+        <optional><attribute name='Id'><data type='ID'/></attribute></optional>
+     </define>
+
+    <define name='TransformsType'>
+        <oneOrMore><element name='Transform'><ref name='TransformType'/></element></oneOrMore>
+    </define>
+
+    <define name='TransformType'>
+        <optional><element name='XPath'><data type='string'/></element></optional>
+        <zeroOrMore><ref name='anyThing'/></zeroOrMore>
+        <attribute name='Algorithm'><data type='anyURI'/></attribute>
+    </define>    
+
+<!-- End Reference -->
+
+    <define name='DigestMethodType'>
+        <zeroOrMore><ref name='anyThing'/></zeroOrMore>
+        <attribute name='Algorithm'><data type='anyURI'/></attribute>
+    </define>   
+
+    <define name='DigestValueType'>
+        <data type='base64Binary'/>
+    </define>  
+    
+<!-- End SignedInfo -->
+
+<!-- Start KeyInfo -->
+    
+    <define name='KeyInfoType'>
+        <oneOrMore>
+            <choice>
+                <element name='KeyName'><data type='string'/></element>
+                <element name='KeyValue'><ref name='KeyValueType'/></element>
+                <element name='RetrievalMethod'><ref name='RetrievalMethodType'/></element>
+                <element name='X509Data'><ref name='X509DataType'/></element>
+                <element name='PGPData'><ref name='PGPDataType'/></element>
+                <element name='SPKIData'><ref name='SPKIDataType'/></element>
+                <element name='MgmtData'><data type='string'/></element>
+                <ref name='anyThing'/>
+            </choice>
+        </oneOrMore>
+        <optional><attribute name='Id'><data type='ID'/></attribute></optional>
+</define>
+
+    <define name='KeyValueType'>
+            <choice>
+                <text/>
+                <element name='DSAKeyValue'><ref name='DSAKeyValueType'/></element>
+                <element name='RSAKeyValue'><ref name='RSAKeyValueType'/></element>
+                <ref name='anyThing'/>
+            </choice>
+    </define>
+
+    <define name='RetrievalMethodType'>
+        <optional><element name='Transforms'><ref name='TransformsType'/></element></optional>
+        <optional><attribute name='Type'><data type='anyURI'/></attribute></optional>
+        <optional><attribute name='URI'><data type='anyURI'/></attribute></optional>
+    </define>
+
+<!-- Start X509Data -->
+
+    <define name='X509DataType'>
+        <oneOrMore>
+            <choice>
+                <element name='X509IssuerSerial'>
+                    <element name='X509IssuerName'>
+                        <data type='string'/>
+                    </element>
+                    <element name='X509SerialNumber'>
+                        <data type='integer'/>
+                    </element>
+                </element>
+                <element name='X509SKI'>
+                    <data type='base64Binary'/>
+                </element>
+                <element name='X509SubjectName'>
+                    <data type='string'/>
+                </element>
+                <element name='X509Certificate'>
+                    <data type='base64Binary'/>
+                </element>
+                <element name='X509CRL'>
+                    <data type='base64Binary'/>
+                </element>
+                <ref name='anyThing'/>
+            </choice>
+        </oneOrMore>
+    </define>
+
+<!-- End X509Data -->
+
+<!-- Begin PGPData -->
+
+    <define name='PGPDataType'>
+        <choice>
+            <group>
+                <element name='PGPKeyID'>
+                    <data type='base64Binary'/>
+                </element>
+                <optional>
+                    <element name='PGPKeyPacket'>
+                        <data type='base64Binary'/>
+                    </element>
+                </optional>
+                <zeroOrMore>
+                    <ref name='anyThing'/>
+                </zeroOrMore>
+            </group>
+            <group>
+                <element name='PGPKeyPacket'>
+                    <data type='base64Binary'/>
+                </element>
+                <zeroOrMore>
+                    <ref name='anyThing'/>
+                </zeroOrMore>
+            </group>
+        </choice>
+    </define>
+
+<!-- End PGPData -->
+
+<!-- Begin SPKIData -->
+
+    <define name='SPKIDataType'>
+        <oneOrMore>
+            <element name='SPKISexp'>
+                <data type='base64Binary'/>
+            </element>
+            <optional>
+                <ref name='anyThing'/>
+            </optional>
+        </oneOrMore>
+    </define>
+    
+<!-- End SPKIData -->
+
+<!-- End KeyInfo -->
+
+
+<!-- Start Object (Manifest, SignatureProperty) -->
+
+    <define name='ObjectType'>
+        <zeroOrMore>
+            <choice>
+                <element name='Manifest'><ref name='ManifestType'/></element>
+                <element name='SignatureProperties'><ref name='SignaturePropertiesType'/></element>                
+                <ref name='anyThing'/>
+            </choice>
+        </zeroOrMore>
+        <optional>
+            <attribute name='Encoding'>
+                <data type='anyURI'/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name='MimeType'>
+                <data type='string'/>
+            </attribute>
+        </optional>
+        <optional>
+            <attribute name='Id'>
+                <data type='ID'/>
+            </attribute>
+        </optional>
+    </define>
+
+    <define name='ManifestType'>
+        <oneOrMore>
+            <element name='Reference'><ref name='ReferenceType'/></element>
+        </oneOrMore>
+        <optional><attribute name='Id'><data type='ID'/></attribute></optional>
+    </define>
+
+    <define name='SignaturePropertiesType'>
+        <oneOrMore>
+            <element name='SignatureProperty'><ref name='SignaturePropertyType'/></element>
+        </oneOrMore>
+        <optional>
+            <attribute name='Id'>
+                <data type='ID'/>
+            </attribute>
+        </optional>
+    </define>
+
+    <define name='SignaturePropertyType'>
+        <oneOrMore><ref name='anyThing'/></oneOrMore>
+        <optional>
+            <attribute name='Id'>
+                <data type='ID'/>
+            </attribute>
+        </optional>
+        <attribute name='Target'>
+            <data type='anyURI'/>
+        </attribute>
+    </define>
+
+<!-- End Object (Manifest, SignatureProperty) -->
+
+
+<!-- Start KeyValue Element-types -->
+
+    <define name='DSAKeyValueType'>
+        <optional>
+            <element name='P'>
+                <ref name='CryptoBinary'/>
+            </element>
+            <element name='Q'>
+                <ref name='CryptoBinary'/>
+            </element>
+        </optional>
+        <optional>
+            <element name='G'>
+                <ref name='CryptoBinary'/>
+            </element>
+        </optional>
+        <element name='Y'>
+            <ref name='CryptoBinary'/>
+        </element>
+        <optional>
+            <element name='J'>
+                <ref name='CryptoBinary'/>
+            </element>
+        </optional>
+        <optional>
+            <element name='Seed'>
+                <ref name='CryptoBinary'/>
+            </element>
+            <element name='PgenCounter'>
+                <ref name='CryptoBinary'/>
+            </element>
+        </optional>
+    </define>
+
+    <define name='RSAKeyValueType'>
+        <element name='Modulus'>
+            <ref name='CryptoBinary'/>
+        </element>
+        <element name='Exponent'>
+            <ref name='CryptoBinary'/>
+        </element>
+    </define>
+
+
+<!-- End KeyValue Element-types -->
+
+<!-- End Signature -->
+
+
+        <!-- This should emulate the ANY content model under lax validation -->
+        <define name='anyThing'>
+            <zeroOrMore>
+                <choice>
+                    <text/>
+                    <element>
+                        <!-- "except" provided for DTD compatibility -->
+                        <!-- [1] ns='http://www.oasis-open.org/committees/relax-ng/compatibility.html#id' -->
+                        <anyName>
+                            <except>
+                                <nsName/>
+                                <!--  <nsName ns='http://www.w3.org/2001/04/xmlenc#'/>  -->
+                            </except>
+                        </anyName>
+                        <ref name='anyThing'/>
+                        <zeroOrMore>
+                            <attribute>
+                              <anyName/>
+                            </attribute>
+                        </zeroOrMore>
+                    </element>
+                </choice>
+            </zeroOrMore>
+            </define>
+            
+
+</grammar>
\ No newline at end of file
diff --git a/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.xsd b/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.xsd
new file mode 100644
index 0000000..df126b3
--- /dev/null
+++ b/src/org/apache/xml/security/resource/schema/xmldsig-core-schema.xsd
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE schema
+  PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd"
+ [
+   <!ATTLIST schema 
+     xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
+   <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
+   <!ENTITY % p ''>
+   <!ENTITY % s ''>
+  ]>
+
+<!-- Schema for XML Signatures
+    http://www.w3.org/2000/09/xmldsig#
+    $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+    Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+    of Technology, Institut National de Recherche en Informatique et en
+    Automatique, Keio University). All Rights Reserved.
+    http://www.w3.org/Consortium/Legal/
+
+    This document is governed by the W3C Software License [1] as described
+    in the FAQ [2].
+
+    [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+    [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+        targetNamespace="http://www.w3.org/2000/09/xmldsig#"
+        version="0.1" elementFormDefault="qualified"> 
+
+<!-- Basic Types Defined for Signatures -->
+
+<simpleType name="CryptoBinary">
+  <restriction base="base64Binary">
+  </restriction>
+</simpleType>
+
+<!-- Start Signature -->
+
+<element name="Signature" type="ds:SignatureType"/>
+<complexType name="SignatureType">
+  <sequence> 
+    <element ref="ds:SignedInfo"/> 
+    <element ref="ds:SignatureValue"/> 
+    <element ref="ds:KeyInfo" minOccurs="0"/> 
+    <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> 
+  </sequence>  
+  <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+  <element name="SignatureValue" type="ds:SignatureValueType"/> 
+  <complexType name="SignatureValueType">
+    <simpleContent>
+      <extension base="base64Binary">
+        <attribute name="Id" type="ID" use="optional"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+<!-- Start SignedInfo -->
+
+<element name="SignedInfo" type="ds:SignedInfoType"/>
+<complexType name="SignedInfoType">
+  <sequence> 
+    <element ref="ds:CanonicalizationMethod"/> 
+    <element ref="ds:SignatureMethod"/> 
+    <element ref="ds:Reference" maxOccurs="unbounded"/> 
+  </sequence>  
+  <attribute name="Id" type="ID" use="optional"/> 
+</complexType>
+
+  <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> 
+  <complexType name="CanonicalizationMethodType" mixed="true">
+    <sequence>
+      <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
+      <!-- (0,unbounded) elements from (1,1) namespace -->
+    </sequence>
+    <attribute name="Algorithm" type="anyURI" use="required"/> 
+  </complexType>
+
+  <element name="SignatureMethod" type="ds:SignatureMethodType"/>
+  <complexType name="SignatureMethodType" mixed="true">
+    <sequence>
+      <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
+      <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+      <!-- (0,unbounded) elements from (1,1) external namespace -->
+    </sequence>
+    <attribute name="Algorithm" type="anyURI" use="required"/> 
+  </complexType>
+
+<!-- Start Reference -->
+
+<element name="Reference" type="ds:ReferenceType"/>
+<complexType name="ReferenceType">
+  <sequence> 
+    <element ref="ds:Transforms" minOccurs="0"/> 
+    <element ref="ds:DigestMethod"/> 
+    <element ref="ds:DigestValue"/> 
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/> 
+  <attribute name="URI" type="anyURI" use="optional"/> 
+  <attribute name="Type" type="anyURI" use="optional"/> 
+</complexType>
+
+  <element name="Transforms" type="ds:TransformsType"/>
+  <complexType name="TransformsType">
+    <sequence>
+      <element ref="ds:Transform" maxOccurs="unbounded"/>  
+    </sequence>
+  </complexType>
+
+  <element name="Transform" type="ds:TransformType"/>
+  <complexType name="TransformType" mixed="true">
+    <choice minOccurs="0" maxOccurs="unbounded"> 
+      <any namespace="##other" processContents="lax"/>
+      <!-- (1,1) elements from (0,unbounded) namespaces -->
+      <element name="XPath" type="string"/> 
+    </choice>
+    <attribute name="Algorithm" type="anyURI" use="required"/> 
+  </complexType>
+
+<!-- End Reference -->
+
+<element name="DigestMethod" type="ds:DigestMethodType"/>
+<complexType name="DigestMethodType" mixed="true"> 
+  <sequence>
+    <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+  </sequence>    
+  <attribute name="Algorithm" type="anyURI" use="required"/> 
+</complexType>
+
+<element name="DigestValue" type="ds:DigestValueType"/>
+<simpleType name="DigestValueType">
+  <restriction base="base64Binary"/>
+</simpleType>
+
+<!-- End SignedInfo -->
+
+<!-- Start KeyInfo -->
+
+<element name="KeyInfo" type="ds:KeyInfoType"/> 
+<complexType name="KeyInfoType" mixed="true">
+  <choice maxOccurs="unbounded">     
+    <element ref="ds:KeyName"/> 
+    <element ref="ds:KeyValue"/> 
+    <element ref="ds:RetrievalMethod"/> 
+    <element ref="ds:X509Data"/> 
+    <element ref="ds:PGPData"/> 
+    <element ref="ds:SPKIData"/>
+    <element ref="ds:MgmtData"/>
+    <any processContents="lax" namespace="##other"/>
+    <!-- (1,1) elements from (0,unbounded) namespaces -->
+  </choice>
+  <attribute name="Id" type="ID" use="optional"/> 
+</complexType>
+
+  <element name="KeyName" type="string"/>
+  <element name="MgmtData" type="string"/>
+
+  <element name="KeyValue" type="ds:KeyValueType"/> 
+  <complexType name="KeyValueType" mixed="true">
+   <choice>
+     <element ref="ds:DSAKeyValue"/>
+     <element ref="ds:RSAKeyValue"/>
+     <any namespace="##other" processContents="lax"/>
+   </choice>
+  </complexType>
+
+  <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> 
+  <complexType name="RetrievalMethodType">
+    <sequence>
+      <element ref="ds:Transforms" minOccurs="0"/> 
+    </sequence>  
+    <attribute name="URI" type="anyURI"/>
+    <attribute name="Type" type="anyURI" use="optional"/>
+  </complexType>
+
+<!-- Start X509Data -->
+
+<element name="X509Data" type="ds:X509DataType"/> 
+<complexType name="X509DataType">
+  <sequence maxOccurs="unbounded">
+    <choice>
+      <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
+      <element name="X509SKI" type="base64Binary"/>
+      <element name="X509SubjectName" type="string"/>
+      <element name="X509Certificate" type="base64Binary"/>
+      <element name="X509CRL" type="base64Binary"/>
+      <any namespace="##other" processContents="lax"/>
+    </choice>
+  </sequence>
+</complexType>
+
+<complexType name="X509IssuerSerialType"> 
+  <sequence> 
+    <element name="X509IssuerName" type="string"/> 
+    <element name="X509SerialNumber" type="integer"/> 
+  </sequence>
+</complexType>
+
+<!-- End X509Data -->
+
+<!-- Begin PGPData -->
+
+<element name="PGPData" type="ds:PGPDataType"/> 
+<complexType name="PGPDataType"> 
+  <choice>
+    <sequence>
+      <element name="PGPKeyID" type="base64Binary"/> 
+      <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> 
+      <any namespace="##other" processContents="lax" minOccurs="0"
+       maxOccurs="unbounded"/>
+    </sequence>
+    <sequence>
+      <element name="PGPKeyPacket" type="base64Binary"/> 
+      <any namespace="##other" processContents="lax" minOccurs="0"
+       maxOccurs="unbounded"/>
+    </sequence>
+  </choice>
+</complexType>
+
+<!-- End PGPData -->
+
+<!-- Begin SPKIData -->
+
+<element name="SPKIData" type="ds:SPKIDataType"/> 
+<complexType name="SPKIDataType">
+  <sequence maxOccurs="unbounded">
+    <element name="SPKISexp" type="base64Binary"/>
+    <any namespace="##other" processContents="lax" minOccurs="0"/>
+  </sequence>
+</complexType> 
+
+<!-- End SPKIData -->
+
+<!-- End KeyInfo -->
+
+<!-- Start Object (Manifest, SignatureProperty) -->
+
+<element name="Object" type="ds:ObjectType"/> 
+<complexType name="ObjectType" mixed="true">
+  <sequence minOccurs="0" maxOccurs="unbounded">
+    <any namespace="##any" processContents="lax"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/> 
+  <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
+  <attribute name="Encoding" type="anyURI" use="optional"/> 
+</complexType>
+
+<element name="Manifest" type="ds:ManifestType"/> 
+<complexType name="ManifestType">
+  <sequence>
+    <element ref="ds:Reference" maxOccurs="unbounded"/> 
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/> 
+</complexType>
+
+<element name="SignatureProperties" type="ds:SignaturePropertiesType"/> 
+<complexType name="SignaturePropertiesType">
+  <sequence>
+    <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> 
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/> 
+</complexType>
+
+   <element name="SignatureProperty" type="ds:SignaturePropertyType"/> 
+   <complexType name="SignaturePropertyType" mixed="true">
+     <choice maxOccurs="unbounded">
+       <any namespace="##other" processContents="lax"/>
+       <!-- (1,1) elements from (1,unbounded) namespaces -->
+     </choice>
+     <attribute name="Target" type="anyURI" use="required"/> 
+     <attribute name="Id" type="ID" use="optional"/> 
+   </complexType>
+
+<!-- End Object (Manifest, SignatureProperty) -->
+
+<!-- Start Algorithm Parameters -->
+
+<simpleType name="HMACOutputLengthType">
+  <restriction base="integer"/>
+</simpleType>
+
+<!-- Start KeyValue Element-types -->
+
+<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
+<complexType name="DSAKeyValueType">
+  <sequence>
+    <sequence minOccurs="0">
+      <element name="P" type="ds:CryptoBinary"/>
+      <element name="Q" type="ds:CryptoBinary"/>
+    </sequence>
+    <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
+    <element name="Y" type="ds:CryptoBinary"/>
+    <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
+    <sequence minOccurs="0">
+      <element name="Seed" type="ds:CryptoBinary"/>
+      <element name="PgenCounter" type="ds:CryptoBinary"/>
+    </sequence>
+  </sequence>
+</complexType>
+
+<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
+<complexType name="RSAKeyValueType">
+  <sequence>
+    <element name="Modulus" type="ds:CryptoBinary"/> 
+    <element name="Exponent" type="ds:CryptoBinary"/> 
+  </sequence>
+</complexType> 
+
+<!-- End KeyValue Element-types -->
+
+<!-- End Signature -->
+
+</schema>
diff --git a/src/org/apache/xml/security/resource/xmlsecurity_de.properties b/src/org/apache/xml/security/resource/xmlsecurity_de.properties
new file mode 100644
index 0000000..c285aa0
--- /dev/null
+++ b/src/org/apache/xml/security/resource/xmlsecurity_de.properties
@@ -0,0 +1,119 @@
+algorithm.alreadyRegistered = URI {0} wurde bereits an die Klasse {1} gebunden

+algorithm.classDoesNotExist = Kann URI {0} nicht für Klasse {1} registrieren weil sie nicht existiert

+algorithm.ClassDoesNotExist = Klasse {0} existiert nicht

+algorithm.extendsWrongClass = Kann URI {0} nicht für Klasse {1} registrieren weil sie nicht {2} extended

+algorithms.CannotUseAlgorithmParameterSpecOnDSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating DSA signatures.

+algorithms.CannotUseAlgorithmParameterSpecOnRSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating RSA signatures.

+algorithms.CannotUseSecureRandomOnMAC = Sorry, but you cannot use a SecureRandom object for creating MACs.

+algorithms.HMACOutputLengthOnlyForHMAC = A HMACOutputLength can only be specified for HMAC integrity algorithms

+algorithms.NoSuchAlgorithm = Der Algorithmus {0} ist nicht verfügbar. Original Nachricht war: {1}

+algorithms.NoSuchMap = The algorithm URI "{0}" could not be mapped to a JCE algorithm

+algorithms.NoSuchProvider = The specified Provider {0} does not exist. Original Message was: {1}

+algorithms.operationOnlyVerification = A public key can only used for verification of a signature.

+algorithms.WrongKeyForThisOperation = Sorry, you supplied the wrong key type for this operation! You supplied a {0} but a {1} is needed.

+attributeValueIllegal = The attribute {0} has value {1} but must be {2}

+c14n.Canonicalizer.Exception = Exception während Kanonisierung:  Original Nachricht war {0}

+c14n.Canonicalizer.IllegalNode = Unzulässiger NodeType {0}, NodeName lautete {1}

+c14n.Canonicalizer.NoSuchCanonicalizer = Kein Canonicalizer mit dem URI {0} gefunden

+c14n.Canonicalizer.ParserConfigurationException = ParserConfigurationException während Kanonisierung:  Original Nachricht war {0}

+c14n.Canonicalizer.RelativeNamespace = Das Element {0} hat einen relativen Namespace: {1}="{2}"

+c14n.Canonicalizer.SAXException = SAXException während Kanonisierung:  Original Nachricht war {0}

+c14n.Canonicalizer.TraversalNotSupported = Das DOM Dokument unterstützt keine Traversal {0}

+c14n.Canonicalizer.UnsupportedEncoding = Unbekannte Kodierung {0}

+c14n.Canonicalizer.UnsupportedOperation = This canonicalizer does not support this operation

+c14n.XMLUtils.circumventBug2650forgotten = The tree has not been prepared for canonicalization using XMLUtils#circumventBug2650(Document)

+certificate.noSki.lowVersion = Certificate cannot contain a SubjectKeyIdentifier because it is only X509v{0}

+certificate.noSki.notOctetString = Certificates SubjectKeyIdentifier is not a OctetString

+certificate.noSki.null = Certificate does not contain a SubjectKeyIdentifier

+defaultNamespaceCannotBeSetHere = Default namespace cannot be set here

+ElementProxy.nullElement = Kann einen ElementProxy aus einem null Argument erzeugen

+empty = {0}

+encryption.algorithmCannotBeUsedForEncryptedData = encryption.algorithmCannotBeUsedForEncryptedData {0}

+encryption.algorithmCannotEatInitParams = encryption.algorithmCannotEatInitParams

+encryption.algorithmCannotEncryptDecrypt = encryption.algorithmCannotEncryptDecrypt

+encryption.algorithmCannotWrapUnWrap = encryption.algorithmCannotWrapUnWrap

+encryption.ExplicitKeySizeMismatch = The xenc:KeySize element requests a key size of {0} bit but the algorithm implements {1} bit

+encryption.nonceLongerThanDecryptedPlaintext = The given nonce is longer than the available plaintext. I Cannot strip away this.

+encryption.RSAOAEP.dataHashWrong = data hash wrong

+encryption.RSAOAEP.dataStartWrong = data wrong start {0}

+encryption.RSAOAEP.dataTooShort = data too short

+encryption.RSAPKCS15.blockTruncated = block truncated

+encryption.RSAPKCS15.noDataInBlock = no data in block

+encryption.RSAPKCS15.unknownBlockType = unknown block type

+encryption.nokey = No Key Encryption Key loaded and cannot determine using key resolvers

+endorsed.jdk1.4.0 = Since it seems that nobody reads our installation notes, we must do it in the exception messages. Hope you read them. You did NOT use the endorsed mechanism from JDK 1.4 properly; look at <http://xml.apache.org/security/Java/installation.html> how to solve this problem.

+errorMessages.InvalidDigestValueException = Ungültige Signatur: Reference Validation fehlgeschlagen.

+errorMessages.InvalidSignatureValueException = Ungültige Signatur: Core Validation fehlgeschlagen.

+errorMessages.IOException = Datei oder Resource kann nicht gelesen werden.

+errorMessages.MissingKeyFailureException = Verifizieren fehlgeschlagen, weil der öffentliche Schlüssel (public key) nicht verfügbar ist. Resourcen via addResource() hinzufügen und erneut verifizieren.

+errorMessages.MissingResourceFailureException = Verifizieren fehlgeschlagen, weil Resourcen nicht verfügbar sind. Resourcen via addResource() hinzufügen und erneut verifizieren.

+errorMessages.NoSuchAlgorithmException = Unbekannter Algorithmus {0}

+errorMessages.NotYetImplementedException = Funktionalität noch nicht implementiert.

+errorMessages.XMLSignatureException = Verifizieren aus unbekanntem Grund fehlgeschlagen.

+decoding.divisible.four = It should be divisible by four

+decoding.general = Error while decoding

+FileKeyStorageImpl.addToDefaultFromRemoteNotImplemented = Method addToDefaultFromRemote() not yet implemented.

+FileKeyStorageImpl.NoCert.Context = Not found such a X509Certificate including context {0}

+FileKeyStorageImpl.NoCert.IssNameSerNo = Not found such a X509Certificate with IssuerName {0} and serial number {1}

+FileKeyStorageImpl.NoCert.SubjName = Not found such a X509Certificate including SubjectName {0}

+generic.dontHaveConstructionElement = I do not have a construction Element

+generic.EmptyMessage = {0}

+generic.NotYetImplemented = {0} Leider noch nicht implementiert ;-((

+java.security.InvalidKeyException = Ungültiger Schlüssel

+java.security.NoSuchProviderException = Unbekannter oder nicht unterstützter Provider

+java.security.UnknownKeyType = Unbekannter oder nicht unterstützter Key type {0}

+KeyInfo.needKeyResolver = Es müssen mehrere KeyResolver registriert sein

+KeyInfo.nokey = Kann keinen Schlüssel aus {0} gewinnen

+KeyInfo.noKey = Kann keinen öffentlichen Schlüssel finden

+KeyInfo.wrongNumberOfObject = Benötige {0} keyObjects

+KeyInfo.wrongUse = Dieses Objekt wird verwendet, um {0} zu gewinnen

+keyResolver.alreadyRegistered = Die Klasse {1} wurde bereits registriert für {0}

+KeyResolver.needStorageResolver = Need a StorageResolver to retrieve a Certificate from a {0}

+KeyResoverSpiImpl.cannotGetCert = Cannot get the Certificate that include or in {1} in implement class {0}

+KeyResoverSpiImpl.elementGeneration = Cannot make {1} element in implement class {0}

+KeyResoverSpiImpl.getPoublicKey = Cannot get the public key from implement class {0}

+KeyResoverSpiImpl.InvalidElement = Cannot set (2) Element in implement class {0}

+KeyResoverSpiImpl.keyStore = KeyStorage error in implement class {0}

+KeyResoverSpiImpl.need.Element = {1} type of Element is needed in implement class {0}

+KeyResoverSpiImpl.wrongCRLElement = Cannot make CRL from {1} in implement class {0}

+KeyResoverSpiImpl.wrongKeyObject =  Need {1} type of KeyObject for generation Element in implement class{0}

+KeyResoverSpiImpl.wrongNumberOfObject = Need {1} keyObject in implement class {0}

+KeyStore.alreadyRegistered = {0} Class has already been registered for {1}

+KeyStore.register = {1} type class register error  in class {0}

+KeyStore.registerStore.register = Registeration error for type {0}

+KeyValue.IllegalArgument = Cannot create a {0} from {1}

+namespacePrefixAlreadyUsedByOtherURI = Namespace {0} already used by other URI {1}

+notYetInitialized = Das Modul {0} ist noch nicht initialisiert

+prefix.AlreadyAssigned = Sie binden den Prefix {0} an den Namespace {1} aber er ist bereits an {2} zugewiesen

+signature.Canonicalizer.UnknownCanonicalizer = Unbekannter Canonicalizer. Kein Handler installiert für URI {0}

+signature.DSA.invalidFormat = Invalid ASN.1 encoding of the DSA signature

+signature.Generation.signBeforeGetValue = You have to XMLSignature.sign(java.security.PrivateKey) first

+signature.signaturePropertyHasNoTarget = Das Target Attribut der SignatureProperty muss gesetzt sein

+signature.Transform.ErrorDuringTransform = Während der Transformation {0} trat eine {1} auf.

+signature.Transform.NotYetImplemented = Transform {0} noch nicht implementiert

+signature.Transform.NullPointerTransform = Null pointer als URI übergeben. Programmierfehler?

+signature.Transform.UnknownTransform = Unbekannte Transformation. Kein Handler installiert für URI {0}

+signature.Util.BignumNonPositive = bigInteger.signum() muß positiv sein

+signature.Util.NonTextNode = Kein Text Node

+signature.Util.TooManyChilds = Zu viele Child-Elemente vom Type {0} in {1}

+signature.Verification.certificateError = Zertifikatsfehler

+signature.Verification.IndexOutOfBounds = Index {0} illegal. We only have {1} References

+signature.Verification.internalError = Interner Fehler

+signature.Verification.InvalidDigestOrReference = Ungültiger Digest Wert oder Reference Element {0}

+signature.Verification.keyStore = Öffnen des KeyStore fehlgeschlagen

+signature.Verification.MissingID = Cannot resolve element with ID {0}

+signature.Verification.MissingResources = Kann die externe Resource {0} nicht auflösen

+signature.Verification.NoSignatureElement = Input Dokument enthält kein {0} Element mit dem Namespace {1}

+signature.Verification.Reference.NoInput = Die Reference für den URI {0} hat keinen XMLSignatureInput erhalten.

+signature.Verification.SignatureError = Signatur Fehler

+signature.XMLSignatureInput.MissingConstuctor = Kann aus der Klasse {0} keinen XMLSignatureInput erzeugen

+signature.XMLSignatureInput.SerializeDOM = Input mit einem DOM Dokument initialisiert. Muß mit C14N serialisiert werden

+transform.Init.IllegalContextArgument = Unzulässiges Kontext Argument der Klasse {0}. Muss String, org.w3c.dom.NodeList oder java.io.InputStream sein.

+transform.init.NotInitialized =

+transform.init.wrongURI = Initialisiert mit dem falschen URI. Das sollte nie passieren. Die Transformation implementiert {0} aber {1} wurde bei der Instantiierung verwendet.

+utils.Base64.IllegalBitlength = Ungültige Bytelänge; Muss ein vielfaches von 4 sein

+utils.resolver.noClass = Could not find a resolver for URI {0} and Base {1}

+xml.WrongContent = Kann {0} nicht finden in {1}

+xml.WrongElement = Kann kein {0} aus einem {1} Element erzeugen

+xpath.funcHere.documentsDiffer = Der XPath ist nicht im selben Dokument wie der Kontext Node

+xpath.funcHere.noXPathContext = Try to evaluate an XPath which uses the here() function but XPath is not inside an ds:XPath Element. XPath was : {0}

diff --git a/src/org/apache/xml/security/resource/xmlsecurity_en.properties b/src/org/apache/xml/security/resource/xmlsecurity_en.properties
new file mode 100644
index 0000000..1b8e97b
--- /dev/null
+++ b/src/org/apache/xml/security/resource/xmlsecurity_en.properties
@@ -0,0 +1,123 @@
+algorithm.alreadyRegistered = URI {0} already assigned to class {1}

+algorithm.classDoesNotExist = Cannot register URI {0} to class {1} because this class does not exist in CLASSPATH

+algorithm.ClassDoesNotExist = Class {0} does not exist

+algorithm.extendsWrongClass = Cannot register URI {0} to class {1} because it does not extend {2}

+algorithms.CannotUseAlgorithmParameterSpecOnDSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating DSA signatures.

+algorithms.CannotUseAlgorithmParameterSpecOnRSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating RSA signatures.

+algorithms.CannotUseSecureRandomOnMAC = Sorry, but you cannot use a SecureRandom object for creating MACs.

+algorithms.HMACOutputLengthOnlyForHMAC = A HMACOutputLength can only be specified for HMAC integrity algorithms

+algorithms.NoSuchAlgorithm = The requested algorithm {0} does not exist. Original Message was: {1}

+algorithms.NoSuchMap = The algorithm URI "{0}" could not be mapped to a JCE algorithm

+algorithms.NoSuchProvider = The specified Provider {0} does not exist. Original Message was: {1}

+algorithms.operationOnlyVerification = A public key can only used for verification of a signature.

+algorithms.WrongKeyForThisOperation = Sorry, you supplied the wrong key type for this operation! You supplied a {0} but a {1} is needed.

+attributeValueIllegal = The attribute {0} has value {1} but must be {2}

+c14n.Canonicalizer.Exception = Exception during Canonicalization:  Original Message was {0}

+c14n.Canonicalizer.IllegalNode = Illegal node type {0}, node name was {1}

+c14n.Canonicalizer.NoSuchCanonicalizer = No canonicalizer found with URI {0}

+c14n.Canonicalizer.ParserConfigurationException = ParserConfigurationException during Canonicalization:  Original Message was {0}

+c14n.Canonicalizer.RelativeNamespace = Element {0} has a relative namespace: {1}="{2}"

+c14n.Canonicalizer.SAXException = SAXException during Canonicalization:  Original Message was {0}

+c14n.Canonicalizer.TraversalNotSupported = This DOM document does not support Traversal {0}

+c14n.Canonicalizer.UnsupportedEncoding = Unsupported encoding {0}

+c14n.Canonicalizer.UnsupportedOperation = This canonicalizer does not support this operation

+c14n.XMLUtils.circumventBug2650forgotten = The tree has not been prepared for canonicalization using XMLUtils#circumventBug2650(Document)

+certificate.noSki.lowVersion = Certificate cannot contain a SubjectKeyIdentifier because it is only X509v{0}

+certificate.noSki.notOctetString = Certificates SubjectKeyIdentifier is not a OctetString

+certificate.noSki.null = Certificate does not contain a SubjectKeyIdentifier

+defaultNamespaceCannotBeSetHere = Default namespace cannot be set here

+ElementProxy.nullElement = Cannot create an ElementProxy from a null argument

+empty = {0}

+encryption.algorithmCannotBeUsedForEncryptedData = encryption.algorithmCannotBeUsedForEncryptedData {0}

+encryption.algorithmCannotEatInitParams = encryption.algorithmCannotEatInitParams

+encryption.algorithmCannotEncryptDecrypt = encryption.algorithmCannotEncryptDecrypt

+encryption.algorithmCannotWrapUnWrap = encryption.algorithmCannotWrapUnWrap

+encryption.ExplicitKeySizeMismatch = The xenc:KeySize element requests a key size of {0} bit but the algorithm implements {1} bit

+encryption.nonceLongerThanDecryptedPlaintext = The given nonce is longer than the available plaintext. I Cannot strip away this.

+encryption.RSAOAEP.dataHashWrong = data hash wrong

+encryption.RSAOAEP.dataStartWrong = data wrong start {0}

+encryption.RSAOAEP.dataTooShort = data too short

+encryption.RSAPKCS15.blockTruncated = block truncated

+encryption.RSAPKCS15.noDataInBlock = no data in block

+encryption.RSAPKCS15.unknownBlockType = unknown block type

+encryption.nokey = No Key Encryption Key loaded and cannot determine using key resolvers

+endorsed.jdk1.4.0 = Since it seems that nobody reads our installation notes, we must do it in the exception messages. Hope you read them. You did NOT use the endorsed mechanism from JDK 1.4 properly; look at <http://xml.apache.org/security/Java/installation.html> how to solve this problem.

+errorMessages.InvalidDigestValueException = INVALID signature -- check reference resolution.

+errorMessages.InvalidSignatureValueException = INVALID signature -- core validation failed.

+errorMessages.IOException = Other file I/O and similar exceptions.

+errorMessages.MissingKeyFailureException = Cannot verify because of missing public key. Provide it via addResource and try again.

+errorMessages.MissingResourceFailureException = Cannot verify because of unresolved references. Provide it via addResource and try again.

+errorMessages.NoSuchAlgorithmException = Unknown Algorithm {0}

+errorMessages.NotYetImplementedException = Functionality not yet there.

+errorMessages.XMLSignatureException = Verification failed for some other reason.

+decoding.divisible.four = It should be divisible by four

+decoding.general = Error while decoding

+FileKeyStorageImpl.addToDefaultFromRemoteNotImplemented = Method addToDefaultFromRemote() not yet implemented.

+FileKeyStorageImpl.NoCert.Context = Not found such a X509Certificate including context {0}

+FileKeyStorageImpl.NoCert.IssNameSerNo = Not found such a X509Certificate with IssuerName {0} and serial number {1}

+FileKeyStorageImpl.NoCert.SubjName = Not found such a X509Certificate including SubjectName {0}

+generic.dontHaveConstructionElement = I do not have a construction Element

+generic.EmptyMessage = {0}

+generic.NotYetImplemented = {0} Not YET implemented ;-((

+java.security.InvalidKeyException = Invalid key

+java.security.NoSuchProviderException = Unknown or unsupported provider

+java.security.UnknownKeyType = Unknown or unsupported key type {0}

+KeyInfo.needKeyResolver = More than one keyResovler have to be registered

+KeyInfo.nokey = Cannot get key from {0}

+KeyInfo.noKey = Cannot get the public key

+KeyInfo.wrongNumberOfObject = Need {0} keyObjects

+KeyInfo.wrongUse = This object was made for getting {0}

+keyResolver.alreadyRegistered = {1} class has already been registered for {0}

+KeyResolver.needStorageResolver = Need a StorageResolver to retrieve a Certificate from a {0}

+KeyResoverSpiImpl.cannotGetCert = Cannot get the Certificate that include or in {1} in implement class {0}

+KeyResoverSpiImpl.elementGeneration = Cannot make {1} element in implement class {0}

+KeyResoverSpiImpl.getPoublicKey = Cannot get the public key from implement class {0}

+KeyResoverSpiImpl.InvalidElement = Cannot set (2) Element in implement class {0}

+KeyResoverSpiImpl.keyStore = KeyStorage error in implement class {0}

+KeyResoverSpiImpl.need.Element = {1} type of Element is needed in implement class {0}

+KeyResoverSpiImpl.wrongCRLElement = Cannot make CRL from {1} in implement class {0}

+KeyResoverSpiImpl.wrongKeyObject =  Need {1} type of KeyObject for generation Element in implement class{0}

+KeyResoverSpiImpl.wrongNumberOfObject = Need {1} keyObject in implement class {0}

+KeyStore.alreadyRegistered = {0} Class has already been registered for {1}

+KeyStore.register = {1} type class register error  in class {0}

+KeyStore.registerStore.register = Registeration error for type {0}

+KeyValue.IllegalArgument = Cannot create a {0} from {1}

+namespacePrefixAlreadyUsedByOtherURI = Namespace prefix {0} already used by other URI {1}

+notYetInitialized = The module {0} is not yet initialized

+prefix.AlreadyAssigned = You want to assign {0} as prefix for namespace {1} but it is already assigned for {2}

+signature.Canonicalizer.UnknownCanonicalizer = Unknown canonicalizer. No handler installed for URI {0}

+signature.DSA.invalidFormat = Invalid ASN.1 encoding of the DSA signature

+signature.Generation.signBeforeGetValue = You have to XMLSignature.sign(java.security.PrivateKey) first

+signature.signaturePropertyHasNoTarget = The Target attribute of the SignatureProperty must be set

+signature.Transform.ErrorDuringTransform = A {1} was thrown during the {0} transform

+signature.Transform.NotYetImplemented = Transform {0} not yet implemented

+signature.Transform.NullPointerTransform = Null pointer as URI. Programming bug?

+signature.Transform.UnknownTransform = Unknown transformation. No handler installed for URI {0}

+signature.Transform.node = Current Node: {0}

+signature.Transform.nodeAndType = Current Node: {0}, type: {1} 

+signature.Util.BignumNonPositive = bigInteger.signum() must be positive

+signature.Util.NonTextNode = Not a text node

+signature.Util.TooManyChilds = Too many childs of Type {0} in {1}

+signature.Verification.certificateError = Certificate error

+signature.Verification.IndexOutOfBounds = Index {0} illegal. We only have {1} References

+signature.Verification.internalError = Internal error

+signature.Verification.InvalidDigestOrReference = Invalid digest of reference {0}

+signature.Verification.keyStore = KeyStore error

+signature.Verification.MissingID = Cannot resolve element with ID {0}

+signature.Verification.MissingResources = Cannot resolve external resource {0}

+signature.Verification.NoSignatureElement = Input document contains no {0} Element in namespace {1}

+signature.Verification.Reference.NoInput = The Reference for URI {0} has no XMLSignatureInput

+signature.Verification.SignatureError = Signature error

+signature.XMLSignatureInput.MissingConstuctor = Cannot construct a XMLSignatureInput from class {0}

+signature.XMLSignatureInput.SerializeDOM = Input initialized with DOM Element. Use Canonicalization to serialize it

+signature.XMLSignatureInput.nodesetReference = Unable to convert to nodeset the reference

+transform.Init.IllegalContextArgument = Invalid context argument of class {0}. Must be String, org.w3c.dom.NodeList or java.io.InputStream.

+transform.init.NotInitialized =

+transform.init.wrongURI = Initialized with wrong URI. How could this happen? We implement {0} but {1} was used during initialization

+utils.Base64.IllegalBitlength = Illegal byte length; Data to be decoded must be a multiple of 4

+Base64Decoding = Error while decoding

+utils.resolver.noClass = Could not find a resolver for URI {0} and Base {1}

+xml.WrongContent = Cannot find {0} in {1}

+xml.WrongElement = Cannot create a {0} from a {1} element

+xpath.funcHere.documentsDiffer = The XPath is not in the same document as the context node

+xpath.funcHere.noXPathContext = Try to evaluate an XPath which uses the here() function but XPath is not inside an ds:XPath Element. XPath was : {0}

diff --git a/src/org/apache/xml/security/signature/InvalidDigestValueException.java b/src/org/apache/xml/security/signature/InvalidDigestValueException.java
new file mode 100644
index 0000000..61ebe39
--- /dev/null
+++ b/src/org/apache/xml/security/signature/InvalidDigestValueException.java
@@ -0,0 +1,83 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+/**
+ * Raised when the computed hash value doesn't match the given <i>DigestValue</i>.  Additional human readable info is passed to the constructor -- this being the benefit of raising an exception or returning a value.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class InvalidDigestValueException extends XMLSignatureException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor InvalidDigestValueException
+    *
+    */
+   public InvalidDigestValueException() {
+      super();
+   }
+
+   /**
+    * Constructor InvalidDigestValueException
+    *
+    * @param _msgID
+    */
+   public InvalidDigestValueException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor InvalidDigestValueException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public InvalidDigestValueException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor InvalidDigestValueException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public InvalidDigestValueException(String _msgID,
+                                      Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor InvalidDigestValueException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public InvalidDigestValueException(String _msgID, Object exArgs[],
+                                      Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/signature/InvalidSignatureValueException.java b/src/org/apache/xml/security/signature/InvalidSignatureValueException.java
new file mode 100644
index 0000000..d1e0dd5
--- /dev/null
+++ b/src/org/apache/xml/security/signature/InvalidSignatureValueException.java
@@ -0,0 +1,84 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+/**
+ * Raised if testing the signature value over <i>DigestValue</i> fails because of invalid signature.
+ *
+ * @see InvalidDigestValueException  MissingKeyFailureException  MissingResourceFailureException
+ * @author Christian Geuer-Pollmann
+ */
+public class InvalidSignatureValueException extends XMLSignatureException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor InvalidSignatureValueException
+    *
+    */
+   public InvalidSignatureValueException() {
+      super();
+   }
+
+   /**
+    * Constructor InvalidSignatureValueException
+    *
+    * @param _msgID
+    */
+   public InvalidSignatureValueException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor InvalidSignatureValueException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public InvalidSignatureValueException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor InvalidSignatureValueException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public InvalidSignatureValueException(String _msgID,
+                                         Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor InvalidSignatureValueException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public InvalidSignatureValueException(String _msgID, Object exArgs[],
+                                         Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/signature/Manifest.java b/src/org/apache/xml/security/signature/Manifest.java
new file mode 100644
index 0000000..413a82c
--- /dev/null
+++ b/src/org/apache/xml/security/signature/Manifest.java
@@ -0,0 +1,559 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.I18n;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+
+
+/**
+ * Handles <code>&lt;ds:Manifest&gt;</code> elements.
+ * <p> This element holds the <code>Reference</code> elements</p>
+ * @author $author: $
+ */
+public class Manifest extends SignatureElementProxy {
+
+  /** {@link org.apache.commons.logging} logging facility */
+  static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Manifest.class.getName());
+
+   /** Field _references */
+   List _references;
+   Element[] _referencesEl;
+
+   /** Field verificationResults[] */
+   private boolean verificationResults[] = null;
+
+   /** Field _signedContents */
+   List _signedContents = new ArrayList();
+
+   /** Field _resolverProperties */
+   HashMap _resolverProperties = new HashMap(10);
+
+   /** Field _perManifestResolvers */
+   List _perManifestResolvers = new ArrayList();
+
+   /**
+    * Consturts {@link Manifest}
+    *
+    * @param doc the {@link Document} in which <code>XMLsignature</code> is placed
+    */
+   public Manifest(Document doc) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      this._references = new ArrayList();
+   }
+
+   /**
+    * Constructor Manifest
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public Manifest(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+
+      // check out Reference children
+      this._referencesEl = XMLUtils.selectDsNodes(this._constructionElement.getFirstChild(),
+         Constants._TAG_REFERENCE);
+      int le = this._referencesEl.length;
+      {
+         if (le == 0) {
+
+            // At least one Reference must be present. Bad.
+            Object exArgs[] = { Constants._TAG_REFERENCE,
+                                Constants._TAG_MANIFEST };
+
+            throw new DOMException(DOMException.WRONG_DOCUMENT_ERR,
+                                   I18n.translate("xml.WrongContent", exArgs));
+         }
+      }
+
+      // create Vector
+      this._references = new ArrayList(le);
+
+      for (int i = 0; i < le; i++) {
+         this._references.add(null);
+      }
+   }
+
+   /**
+    * This <code>addDocument</code> method is used to add a new resource to the
+    * signed info. A {@link org.apache.xml.security.signature.Reference} is built
+    * from the supplied values.
+    *
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @param referenceURI <code>URI</code> attribute in <code>Reference</code> for specifing where data is
+    * @param transforms org.apache.xml.security.signature.Transforms object with an ordered list of transformations to be performed.
+    * @param digestURI The digest algorthim URI to be used.
+    * @param ReferenceId
+    * @param ReferenceType
+    * @throws XMLSignatureException
+    */
+   public void addDocument(
+           String BaseURI, String referenceURI, Transforms transforms, String digestURI, String ReferenceId, String ReferenceType)
+              throws XMLSignatureException {
+
+      if (this._state == MODE_SIGN) {
+
+         // the this._doc is handed implicitly by the this.getOwnerDocument()
+         Reference ref = new Reference(this._doc, BaseURI, referenceURI, this,
+                                       transforms, digestURI);
+
+         if (ReferenceId != null) {
+            ref.setId(ReferenceId);
+         }
+
+         if (ReferenceType != null) {
+            ref.setType(ReferenceType);
+         }
+
+         // add Reference object to our cache vector
+         this._references.add(ref);
+
+         // add the Element of the Reference object to the Manifest/SignedInfo
+         this._constructionElement.appendChild(ref.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * The calculation of the DigestValues in the References must be after the
+    * References are already added to the document and during the signing
+    * process. This ensures that all neccesary data is in place.
+    *
+    * @throws ReferenceNotInitializedException
+    * @throws XMLSignatureException
+    */
+   public void generateDigestValues()
+           throws XMLSignatureException, ReferenceNotInitializedException {
+
+      if (this._state == MODE_SIGN) {
+         for (int i = 0; i < this.getLength(); i++) {
+
+            // update the cached Reference object, the Element content is automatically updated
+            Reference currentRef = (Reference) this._references.get(i);
+
+            currentRef.generateDigestValue();
+         }
+      }
+   }
+
+   /**
+    * Return the nonnegative number of added references.
+    *
+    * @return the number of references
+    */
+   public int getLength() {
+      return this._references.size();
+   }
+
+   /**
+    * Return the <it>i</it><sup>th</sup> reference.  Valid <code>i</code>
+    * values are 0 to <code>{link@ getSize}-1</code>.
+    *
+    * @param i Index of the requested {@link Reference}
+    * @return the <it>i</it><sup>th</sup> reference
+    * @throws XMLSecurityException
+    */
+   public Reference item(int i) throws XMLSecurityException {
+
+      if (this._state == MODE_SIGN) {
+
+         // we already have real objects
+         return (Reference) this._references.get(i);
+      } 
+         if (this._references.get(i) == null) {
+
+            // not yet constructed, so _we_ have to            
+            Reference ref = new Reference(_referencesEl[i], this._baseURI, this);
+
+            this._references.set(i, ref);
+         }
+
+         return (Reference) this._references.get(i);
+      
+   }
+
+   /**
+    * Sets the <code>Id</code> attribute
+    *
+    * @param Id the <code>Id</code> attribute in <code>ds:Manifest</code>
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute
+    *
+    * @return the <code>Id</code> attribute in <code>ds:Manifest</code>
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Used to do a <A HREF="http://www.w3.org/TR/xmldsig-core/#def-ValidationReference">reference
+    * validation</A> of all enclosed references using the {@link Reference#verify} method.
+    *
+    * <p>This step loops through all {@link Reference}s and does verify the hash
+    * values. If one or more verifications fail, the method returns
+    * <code>false</code>. If <i>all</i> verifications are successful,
+    * it returns <code>true</code>. The results of the individual reference
+    * validations are available by using the {@link #getVerificationResult(int)} method
+    *
+    * @return true if all References verify, false if one or more do not verify.
+    * @throws MissingResourceFailureException if a {@link Reference} does not verify (throws a {@link org.apache.xml.security.signature.ReferenceNotInitializedException} because of an uninitialized {@link XMLSignatureInput}
+    * @see org.apache.xml.security.signature.Reference#verify
+    * @see org.apache.xml.security.signature.SignedInfo#verify()
+    * @see org.apache.xml.security.signature.MissingResourceFailureException
+    * @throws XMLSecurityException
+    */
+   public boolean verifyReferences()
+           throws MissingResourceFailureException, XMLSecurityException {
+      return this.verifyReferences(false);
+   }
+
+   /**
+    * Used to do a <A HREF="http://www.w3.org/TR/xmldsig-core/#def-ValidationReference">reference
+    * validation</A> of all enclosed references using the {@link Reference#verify} method.
+    *
+    * <p>This step loops through all {@link Reference}s and does verify the hash
+    * values. If one or more verifications fail, the method returns
+    * <code>false</code>. If <i>all</i> verifications are successful,
+    * it returns <code>true</code>. The results of the individual reference
+    * validations are available by using the {@link #getVerificationResult(int)} method
+    *
+    * @param followManifests
+    * @return true if all References verify, false if one or more do not verify.
+    * @throws MissingResourceFailureException if a {@link Reference} does not verify (throws a {@link org.apache.xml.security.signature.ReferenceNotInitializedException} because of an uninitialized {@link XMLSignatureInput}
+    * @see org.apache.xml.security.signature.Reference#verify
+    * @see org.apache.xml.security.signature.SignedInfo#verify(boolean)
+    * @see org.apache.xml.security.signature.MissingResourceFailureException
+    * @throws XMLSecurityException
+    */
+   public boolean verifyReferences(boolean followManifests)
+           throws MissingResourceFailureException, XMLSecurityException {
+      if (_referencesEl==null) {
+        this._referencesEl =  
+            XMLUtils.selectDsNodes(this._constructionElement.getFirstChild(),
+                         Constants._TAG_REFERENCE);
+      }
+   	  if (log.isDebugEnabled()) {
+   	  	log.debug("verify " +_referencesEl.length + " References");
+        log.debug("I am " + (followManifests
+                           ? ""
+                           : "not") + " requested to follow nested Manifests");
+      }
+      boolean verify = true;
+
+      if (_referencesEl.length==0) {
+         throw new XMLSecurityException("empty");
+      }
+
+      this.verificationResults =
+         new boolean[_referencesEl.length];
+
+      for (int i =
+              0; i < this._referencesEl.length; i++) {
+         Reference currentRef =
+            new Reference(_referencesEl[i], this._baseURI, this);
+
+         this._references.set(i, currentRef);
+
+         /* if only one item does not verify, the whole verification fails */
+         try {
+            boolean currentRefVerified = currentRef.verify();
+
+            this.setVerificationResult(i, currentRefVerified);
+
+            if (!currentRefVerified) {
+               verify = false;
+            }
+            if (log.isDebugEnabled())
+            	log.debug("The Reference has Type " + currentRef.getType());
+
+            // was verification successful till now and do we want to verify the Manifest?
+            if (verify && followManifests
+                    && currentRef.typeIsReferenceToManifest()) {
+               log.debug("We have to follow a nested Manifest");
+
+                try {
+                  XMLSignatureInput signedManifestNodes =
+                    currentRef.dereferenceURIandPerformTransforms(null);
+                  Set nl = signedManifestNodes.getNodeSet();
+                  Manifest referencedManifest = null;
+                  Iterator nlIterator = nl.iterator();
+
+                  findManifest: while (nlIterator.hasNext()) {
+                     Node n = (Node) nlIterator.next();
+
+                     if ((n.getNodeType() == Node.ELEMENT_NODE) && ((Element) n)
+                             .getNamespaceURI()
+                             .equals(Constants.SignatureSpecNS) && ((Element) n)
+                             .getLocalName().equals(Constants._TAG_MANIFEST)) {
+                        try {
+                           referencedManifest =
+                              new Manifest((Element) n,
+                                           signedManifestNodes.getSourceURI());
+
+                           break findManifest;
+                        } catch (XMLSecurityException ex) {
+
+                           // Hm, seems not to be a ds:Manifest
+                        }
+                     }
+                  }
+
+                  if (referencedManifest == null) {
+
+                     // The Reference stated that it points to a ds:Manifest
+                     // but we did not find a ds:Manifest in the signed area
+                     throw new MissingResourceFailureException("empty",
+                                                               currentRef);
+                  }
+
+                  referencedManifest._perManifestResolvers =
+                     this._perManifestResolvers;
+                  referencedManifest._resolverProperties =
+                     this._resolverProperties;
+
+                  boolean referencedManifestValid =
+                     referencedManifest.verifyReferences(followManifests);
+
+                  if (!referencedManifestValid) {
+                     verify = false;
+
+                     log.warn("The nested Manifest was invalid (bad)");
+                  } else {
+                     log.debug("The nested Manifest was valid (good)");
+                  }
+               } catch (IOException ex) {
+                  throw new ReferenceNotInitializedException("empty", ex);
+               } catch (ParserConfigurationException ex) {
+                  throw new ReferenceNotInitializedException("empty", ex);
+               } catch (SAXException ex) {
+                  throw new ReferenceNotInitializedException("empty", ex);
+               }
+            }
+         } catch (ReferenceNotInitializedException ex) {
+            Object exArgs[] = { currentRef.getURI() };
+
+            throw new MissingResourceFailureException(
+               "signature.Verification.Reference.NoInput", exArgs, ex,
+               currentRef);
+         }
+      }
+
+      return verify;
+   }
+
+   /**
+    * Method setVerificationResult
+    *
+    * @param index
+    * @param verify
+    */
+   private void setVerificationResult(int index, boolean verify)
+   {
+
+      if (this.verificationResults == null) {
+         this.verificationResults = new boolean[this.getLength()];
+      }
+
+      this.verificationResults[index] = verify;
+   }
+
+   /**
+    * After verifying a {@link Manifest} or a {@link SignedInfo} using the
+    * {@link Manifest#verifyReferences()} or {@link SignedInfo#verify()} methods,
+    * the individual results can be retrieved with this method.
+    *
+    * @param index an index of into a {@link Manifest} or a {@link SignedInfo}
+    * @return the results of reference validation at the specified index
+    * @throws XMLSecurityException
+    */
+   public boolean getVerificationResult(int index) throws XMLSecurityException {
+
+      if ((index < 0) || (index > this.getLength() - 1)) {
+         Object exArgs[] = { Integer.toString(index),
+                             Integer.toString(this.getLength()) };
+         Exception e =
+            new IndexOutOfBoundsException(I18n
+               .translate("signature.Verification.IndexOutOfBounds", exArgs));
+
+         throw new XMLSecurityException("generic.EmptyMessage", e);
+      }
+
+      if (this.verificationResults == null) {
+         try {
+            this.verifyReferences();
+         } catch (Exception ex) {
+            throw new XMLSecurityException("generic.EmptyMessage", ex);
+         }
+      }
+
+      return this.verificationResults[index];
+   }
+
+   /**
+    * Adds Resource Resolver for retrieving resources at specified <code>URI</code> attribute in <code>reference</code> element
+    *
+    * @param resolver {@link ResourceResolver} can provide the implemenatin subclass of {@link ResourceResolverSpi} for retrieving resource.
+    */
+   public void addResourceResolver(ResourceResolver resolver) {
+
+      if (resolver != null) {
+         this._perManifestResolvers.add(resolver);
+      }
+   }
+
+   /**
+    * Adds Resource Resolver for retrieving resources at specified <code>URI</code> attribute in <code>reference</code> element
+    *
+    * @param resolverSpi the implemenatin subclass of {@link ResourceResolverSpi} for retrieving resource.
+    */
+   public void addResourceResolver(ResourceResolverSpi resolverSpi) {
+
+      if (resolverSpi != null) {
+         this._perManifestResolvers.add(new ResourceResolver(resolverSpi));
+      }
+   }
+
+   /**
+    * Used to pass parameters like proxy servers etc to the ResourceResolver
+    * implementation.
+    *
+    * @param key the key
+    * @param value the value
+    */
+   public void setResolverProperty(String key, String value) {
+      this._resolverProperties.put(key, value);
+   }
+
+   /**
+    * Returns the value at specified key
+    *
+    * @param key the key
+    * @return the value
+    */
+   public String getResolverProperty(String key) {
+      return (String) this._resolverProperties.get(key);
+   }
+
+   /**
+    * Method getSignedContentItem
+    *
+    * @param i
+    * @return The signed content of the i reference.
+    *
+    * @throws XMLSignatureException
+    */
+   public byte[] getSignedContentItem(int i) throws XMLSignatureException {
+
+      try {
+         return this.getReferencedContentAfterTransformsItem(i).getBytes();
+      } catch (IOException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (CanonicalizationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (InvalidCanonicalizerException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method getReferencedContentPriorTransformsItem
+    *
+    * @param i
+    * @return The contents before transformation of the reference i.
+    * @throws XMLSecurityException
+    */
+   public XMLSignatureInput getReferencedContentBeforeTransformsItem(int i)
+           throws XMLSecurityException {
+      return this.item(i).getContentsBeforeTransformation();
+   }
+
+   /**
+    * Method getReferencedContentAfterTransformsItem
+    *
+    * @param i
+    * @return The contents after transformation of the reference i.
+    * @throws XMLSecurityException
+    */
+   public XMLSignatureInput getReferencedContentAfterTransformsItem(int i)
+           throws XMLSecurityException {
+      return this.item(i).getContentsAfterTransformation();
+   }
+
+   /**
+    * Method getSignedContentLength
+    *
+    * @return The nu,ber of references contained in this reference.
+    */
+   public int getSignedContentLength() {
+      return this.getLength();
+   }
+
+   /**
+    * Method getBaseLocalName
+    *
+    * @inheritDoc
+    */
+   public String getBaseLocalName() {
+      return Constants._TAG_MANIFEST;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/MissingResourceFailureException.java b/src/org/apache/xml/security/signature/MissingResourceFailureException.java
new file mode 100644
index 0000000..0008e84
--- /dev/null
+++ b/src/org/apache/xml/security/signature/MissingResourceFailureException.java
@@ -0,0 +1,127 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+
+
+/**
+ * Thrown by {@link org.apache.xml.security.signature.SignedInfo#verify()} when
+ * testing the signature fails because of uninitialized
+ * {@link org.apache.xml.security.signature.Reference}s.
+ *
+ * @author Christian Geuer-Pollmann
+ * @see ReferenceNotInitializedException
+ */
+public class MissingResourceFailureException extends XMLSignatureException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+   /** Field uninitializedReference */
+   Reference uninitializedReference = null;
+
+   /**
+    * MissingKeyResourceFailureException constructor.
+    * @param _msgID
+    * @param reference
+    * @see #getReference
+    */
+   public MissingResourceFailureException(String _msgID, Reference reference) {
+
+      super(_msgID);
+
+      this.uninitializedReference = reference;
+   }
+
+   /**
+    * Constructor MissingResourceFailureException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param reference
+    * @see #getReference
+    */
+   public MissingResourceFailureException(String _msgID, Object exArgs[],
+                                          Reference reference) {
+
+      super(_msgID, exArgs);
+
+      this.uninitializedReference = reference;
+   }
+
+   /**
+    * Constructor MissingResourceFailureException
+    *
+    * @param _msgID
+    * @param _originalException
+    * @param reference
+    * @see #getReference
+    */
+   public MissingResourceFailureException(String _msgID,
+                                          Exception _originalException,
+                                          Reference reference) {
+
+      super(_msgID, _originalException);
+
+      this.uninitializedReference = reference;
+   }
+
+   /**
+    * Constructor MissingResourceFailureException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    * @param reference
+    * @see #getReference
+    */
+   public MissingResourceFailureException(String _msgID, Object exArgs[],
+                                          Exception _originalException,
+                                          Reference reference) {
+
+      super(_msgID, exArgs, _originalException);
+
+      this.uninitializedReference = reference;
+   }
+
+   /**
+    * used to set the uninitialized {@link org.apache.xml.security.signature.Reference}
+    *
+    * @param reference the Reference object
+    * @see #getReference
+    */
+   public void setReference(Reference reference) {
+      this.uninitializedReference = reference;
+   }
+
+   /**
+    * used to get the uninitialized {@link org.apache.xml.security.signature.Reference}
+    *
+    * This allows to supply the correct {@link org.apache.xml.security.signature.XMLSignatureInput}
+    * to the {@link org.apache.xml.security.signature.Reference} to try again verification.
+    *
+    * @return the Reference object
+    * @see #setReference
+    */
+   public Reference getReference() {
+      return this.uninitializedReference;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/NodeFilter.java b/src/org/apache/xml/security/signature/NodeFilter.java
new file mode 100644
index 0000000..e0e5fcf
--- /dev/null
+++ b/src/org/apache/xml/security/signature/NodeFilter.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+import org.w3c.dom.Node;
+
+/**
+ * An interface to tell to the c14n if a node is included or not in the output
+ * @author raul
+ *
+ */
+public interface NodeFilter {
+	/**
+	 * Tells if a node must be outputed in c14n.
+	 * @param n
+	 * @return true if node must be outputed, false otherwise.
+	 */
+	public boolean isNodeInclude(Node n);
+
+}
diff --git a/src/org/apache/xml/security/signature/ObjectContainer.java b/src/org/apache/xml/security/signature/ObjectContainer.java
new file mode 100644
index 0000000..2504c5d
--- /dev/null
+++ b/src/org/apache/xml/security/signature/ObjectContainer.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * Handles <code>&lt;ds:Object&gt;</code> elements
+ * <code>Object<code> {@link Element} supply facility which can contain any kind data
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ * $todo$ if we remove childen, the boolean values are not updated
+ */
+public class ObjectContainer extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+   static org.apache.commons.logging.Log log = 
+       org.apache.commons.logging.LogFactory.getLog(ObjectContainer.class.getName());
+
+   /**
+    * Constructs {@link ObjectContainer}
+    *
+    * @param doc the {@link Document} in which <code>Object</code> element is placed
+    */
+   public ObjectContainer(Document doc) {
+
+      super(doc);
+   }
+
+   /**
+    * Constructs {@link ObjectContainer} from {@link Element}
+    *
+    * @param element is <code>Object</code> element
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @throws XMLSecurityException
+    */
+   public ObjectContainer(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+   }
+
+   /**
+    * Sets the <code>Id</code> attribute
+    *
+    * @param Id <code>Id</code> attribute
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute
+    *
+    * @return the <code>Id</code> attribute
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Sets the <code>MimeType</code> attribute
+    *
+    * @param MimeType the <code>MimeType</code> attribute
+    */
+   public void setMimeType(String MimeType) {
+
+      if ((this._state == MODE_SIGN) && (MimeType != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_MIMETYPE,
+                                                MimeType);
+      }
+   }
+
+   /**
+    * Returns the <code>MimeType</code> attribute
+    *
+    * @return the <code>MimeType</code> attribute
+    */
+   public String getMimeType() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_MIMETYPE);
+   }
+
+   /**
+    * Sets the <code>Encoding</code> attribute
+    *
+    * @param Encoding the <code>Encoding</code> attribute
+    */
+   public void setEncoding(String Encoding) {
+
+      if ((this._state == MODE_SIGN) && (Encoding != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ENCODING,
+                                                Encoding);
+      }
+   }
+
+   /**
+    * Returns the <code>Encoding</code> attribute
+    *
+    * @return the <code>Encoding</code> attribute
+    */
+   public String getEncoding() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ENCODING);
+   }
+
+   /**
+    * Adds childe Node
+    *
+    * @param node childe Node
+    * @return the new node in the tree.
+    */
+   public Node appendChild(Node node) {
+
+      Node result = null;
+
+      if (this._state == MODE_SIGN) {
+         result = this._constructionElement.appendChild(node);
+      }
+
+      return result;
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_OBJECT;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/Reference.java b/src/org/apache/xml/security/signature/Reference.java
new file mode 100644
index 0000000..6195c5b
--- /dev/null
+++ b/src/org/apache/xml/security/signature/Reference.java
@@ -0,0 +1,755 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.transforms.InvalidTransformException;
+import org.apache.xml.security.transforms.Transform;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.InclusiveNamespaces;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.DigesterOutputStream;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.UnsyncBufferedOutputStream;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+
+/**
+ * Handles <code>&lt;ds:Reference&gt;</code> elements.
+ *
+ * This includes:
+ *
+ * Constuct a <CODE>ds:Reference</CODE> from an {@link org.w3c.dom.Element}.
+ *
+ * <p>Create a new reference</p>
+ * <pre>
+ * Document _doc;
+ * MessageDigestAlgorithm sha1 = MessageDigestAlgorithm.getInstance("http://#sha1");
+ * Reference ref = new Reference(new XMLSignatureInput(new FileInputStream("1.gif"),
+ *                               "http://localhost/1.gif",
+ *                               (Transforms) null, sha1);
+ * Element refElem = ref.toElement(_doc);
+ * </pre>
+ *
+ * <p>Verify a reference</p>
+ * <pre>
+ * Element refElem = _doc.getElement("Reference"); // PSEUDO
+ * Reference ref = new Reference(refElem);
+ * String url = ref.getURI();
+ * ref.setData(new XMLSignatureInput(new FileInputStream(url)));
+ * if (ref.verify()) {
+ *    System.out.println("verified");
+ * }
+ * </pre>
+ *
+ * <pre>
+ * &lt;element name="Reference" type="ds:ReferenceType"/&gt;
+ *  &lt;complexType name="ReferenceType"&gt;
+ *    &lt;sequence&gt;
+ *      &lt;element ref="ds:Transforms" minOccurs="0"/&gt;
+ *      &lt;element ref="ds:DigestMethod"/&gt;
+ *      &lt;element ref="ds:DigestValue"/&gt;
+ *    &lt;/sequence&gt;
+ *    &lt;attribute name="Id" type="ID" use="optional"/&gt;
+ *    &lt;attribute name="URI" type="anyURI" use="optional"/&gt;
+ *    &lt;attribute name="Type" type="anyURI" use="optional"/&gt;
+ *  &lt;/complexType&gt;
+ * </pre>
+ *
+ * @author Christian Geuer-Pollmann
+ * @see ObjectContainer
+ * @see Manifest
+ */
+public class Reference extends SignatureElementProxy {
+
+   /** Field CacheSignedNodes */
+   public static boolean CacheSignedNodes = false;
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Reference.class.getName());
+
+   /** Field OBJECT_URI */
+   public static final String OBJECT_URI = Constants.SignatureSpecNS
+                                           + Constants._TAG_OBJECT;
+
+   /** Field MANIFEST_URI */
+   public static final String MANIFEST_URI = Constants.SignatureSpecNS
+                                             + Constants._TAG_MANIFEST;
+   //J-
+   Manifest _manifest = null;
+   XMLSignatureInput _transformsOutput;
+   //J+
+
+private Transforms transforms;
+
+private Element digestMethodElem;
+
+private Element digestValueElement;
+
+   /**
+    * Constructor Reference
+    *
+    * @param doc the {@link Document} in which <code>XMLsignature</code> is placed
+    * @param BaseURI the URI of the resource where the XML instance will be stored
+    * @param ReferenceURI URI indicate where is data which will digested
+    * @param manifest
+    * @param transforms {@link Transforms} applied to data
+    * @param messageDigestAlgorithm {@link MessageDigestAlgorithm Digest algorithm} which is applied to the data
+    * TODO should we throw XMLSignatureException if MessageDigestAlgoURI is wrong?
+    * @throws XMLSignatureException
+    */
+   protected Reference(Document doc, String BaseURI, String ReferenceURI, Manifest manifest, Transforms transforms, String messageDigestAlgorithm)
+           throws XMLSignatureException {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      this._baseURI = BaseURI;
+      this._manifest = manifest;
+
+      this.setURI(ReferenceURI);
+
+      // important: The ds:Reference must be added to the associated ds:Manifest
+      //            or ds:SignedInfo _before_ the this.resolverResult() is called.
+      // this._manifest.appendChild(this._constructionElement);
+      // this._manifest.appendChild(this._doc.createTextNode("\n"));
+
+      if (transforms != null) {
+    	  this.transforms=transforms;
+         this._constructionElement.appendChild(transforms.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+      {
+         MessageDigestAlgorithm mda =
+            MessageDigestAlgorithm.getInstance(this._doc,
+                                               messageDigestAlgorithm);
+
+         digestMethodElem=mda.getElement();
+         this._constructionElement.appendChild(digestMethodElem);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+      {
+         digestValueElement =
+            XMLUtils.createElementInSignatureSpace(this._doc,
+                                                   Constants._TAG_DIGESTVALUE);
+
+         this._constructionElement.appendChild(digestValueElement);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+
+   /**
+    * Build a {@link Reference} from an {@link Element}
+    *
+    * @param element <code>Reference</code> element
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @param manifest is the {@link Manifest} of {@link SignedInfo} in which the Reference occurs. We need this because the Manifest has the individual {@link ResourceResolver}s whcih have been set by the user
+    * @throws XMLSecurityException
+    */
+   protected Reference(Element element, String BaseURI, Manifest manifest)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+      this._baseURI=BaseURI;
+      Element el=XMLUtils.getNextElement(element.getFirstChild());
+      if (Constants._TAG_TRANSFORMS.equals(el.getLocalName()) && 
+    		  Constants.SignatureSpecNS.equals(el.getNamespaceURI())) {
+    	  transforms = new Transforms(el,this._baseURI);
+    	  el=XMLUtils.getNextElement(el.getNextSibling());
+      }
+      digestMethodElem = el;
+      digestValueElement =XMLUtils.getNextElement(digestMethodElem.getNextSibling());;
+      this._manifest = manifest;
+   }
+
+   /**
+    * Returns {@link MessageDigestAlgorithm}
+    *
+    *
+    * @return {@link MessageDigestAlgorithm}
+    *
+    * @throws XMLSignatureException
+    */
+   public MessageDigestAlgorithm getMessageDigestAlgorithm()
+           throws XMLSignatureException {
+      
+      if (digestMethodElem == null) {
+         return null;
+      }
+
+      String uri = digestMethodElem.getAttributeNS(null,
+         Constants._ATT_ALGORITHM);
+
+	  if (uri == null) {
+		  return null;
+	  }
+
+      return MessageDigestAlgorithm.getInstance(this._doc, uri);
+   }
+
+   /**
+    * Sets the <code>URI</code> of this <code>Reference</code> element
+    *
+    * @param URI the <code>URI</code> of this <code>Reference</code> element
+    */
+   public void setURI(String URI) {
+
+      if ((this._state == MODE_SIGN) && (URI != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_URI,
+                                                  URI);
+      }
+   }
+
+   /**
+    * Returns the <code>URI</code> of this <code>Reference</code> element
+    *
+    * @return URI the <code>URI</code> of this <code>Reference</code> element
+    */
+   public String getURI() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_URI);
+   }
+
+   /**
+    * Sets the <code>Id</code> attribute of this <code>Reference</code> element
+    *
+    * @param Id the <code>Id</code> attribute of this <code>Reference</code> element
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute of this <code>Reference</code> element
+    *
+    * @return Id the <code>Id</code> attribute of this <code>Reference</code> element
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Sets the <code>type</code> atttibute of the Reference indicate whether an <code>ds:Object</code>, <code>ds:SignatureProperty</code>, or <code>ds:Manifest</code> element
+    *
+    * @param Type the <code>type</code> attribute of the Reference
+    */
+   public void setType(String Type) {
+
+      if ((this._state == MODE_SIGN) && (Type != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_TYPE,
+                                                  Type);
+      }
+   }
+
+   /**
+    * Return the <code>type</code> atttibute of the Reference indicate whether an <code>ds:Object</code>, <code>ds:SignatureProperty</code>, or <code>ds:Manifest</code> element
+    *
+    * @return the <code>type</code> attribute of the Reference
+    */
+   public String getType() {
+      return this._constructionElement.getAttributeNS(null,
+              Constants._ATT_TYPE);
+   }
+
+   /**
+    * Method isReferenceToObject
+    *
+    * This returns true if the <CODE>Type</CODE> attribute of the
+    * <CODE>Refernce</CODE> element points to a <CODE>#Object</CODE> element
+    *
+    * @return true if the Reference type indicates that this Reference points to an <code>Object</code>
+    */
+   public boolean typeIsReferenceToObject() {
+
+      if (Reference.OBJECT_URI.equals(this.getType())) {
+         return true;
+      }
+
+      return false;
+   }
+
+   /**
+    * Method isReferenceToManifest
+    *
+    * This returns true if the <CODE>Type</CODE> attribute of the
+    * <CODE>Refernce</CODE> element points to a <CODE>#Manifest</CODE> element
+    *
+    * @return true if the Reference type indicates that this Reference points to a {@link Manifest}
+    */
+   public boolean typeIsReferenceToManifest() {
+
+      if (Reference.MANIFEST_URI.equals(this.getType())) {
+         return true;
+      }
+
+      return false;
+   }
+
+   /**
+    * Method setDigestValueElement
+    *
+    * @param digestValue
+    */
+   private void setDigestValueElement(byte[] digestValue)
+   {
+
+      if (this._state == MODE_SIGN) {
+
+         Node n=digestValueElement.getFirstChild();
+         while (n!=null) {
+               digestValueElement.removeChild(n);
+               n = n.getNextSibling();
+         }
+
+         String base64codedValue = Base64.encode(digestValue);
+         Text t = this._doc.createTextNode(base64codedValue);
+
+         digestValueElement.appendChild(t);
+      }
+   }
+
+   /**
+    * Method generateDigestValue
+    *
+    * @throws ReferenceNotInitializedException
+    * @throws XMLSignatureException
+    */
+   public void generateDigestValue()
+           throws XMLSignatureException, ReferenceNotInitializedException {
+
+      if (this._state == MODE_SIGN) {
+
+         this.setDigestValueElement(this.calculateDigest());
+      }
+   }
+
+   /**
+    * Returns the XMLSignatureInput which is created by de-referencing the URI attribute.
+    * @return the XMLSignatureInput of the source of this reference
+    * @throws ReferenceNotInitializedException If the resolver found any
+    *  problem resolving the reference
+    */
+   public XMLSignatureInput getContentsBeforeTransformation()
+           throws ReferenceNotInitializedException {
+
+      try {
+         Attr URIAttr = this._constructionElement.getAttributeNodeNS(null,
+            Constants._ATT_URI);
+         String URI;
+
+         if (URIAttr == null) {
+            URI = null;
+         } else {
+            URI = URIAttr.getNodeValue();
+         }
+
+         ResourceResolver resolver = ResourceResolver.getInstance(URIAttr,
+            this._baseURI, this._manifest._perManifestResolvers);
+
+         if (resolver == null) {
+            Object exArgs[] = { URI };
+
+            throw new ReferenceNotInitializedException(
+               "signature.Verification.Reference.NoInput", exArgs);
+         }
+
+         resolver.addProperties(this._manifest._resolverProperties);
+
+         XMLSignatureInput input = resolver.resolve(URIAttr, this._baseURI);
+                  
+
+         return input;
+      }  catch (ResourceResolverException ex) {
+         throw new ReferenceNotInitializedException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new ReferenceNotInitializedException("empty", ex);
+      }
+   }
+
+   /**
+    * Returns the data which is referenced by the URI attribute. This method
+    * only works works after a call to verify.
+    * @return a XMLSignature with a byte array.
+    * @throws ReferenceNotInitializedException
+    *
+    * @deprecated use getContentsBeforeTransformation
+    */
+   public XMLSignatureInput getTransformsInput() throws ReferenceNotInitializedException   
+	{  
+   		XMLSignatureInput input=getContentsBeforeTransformation();
+   		XMLSignatureInput result;
+		try {
+			result = new XMLSignatureInput(input.getBytes());
+		} catch (CanonicalizationException ex) {
+			 throw new ReferenceNotInitializedException("empty", ex);
+		} catch (IOException ex) {
+			 throw new ReferenceNotInitializedException("empty", ex);
+		}
+		result.setSourceURI(input.getSourceURI());   
+		return result;
+	
+   }
+
+   private XMLSignatureInput getContentsAfterTransformation(XMLSignatureInput input, OutputStream os)
+           throws XMLSignatureException {
+
+      try {
+         Transforms transforms = this.getTransforms();
+         XMLSignatureInput output = null;
+
+         if (transforms != null) {
+            output = transforms.performTransforms(input,os);
+            this._transformsOutput = output;//new XMLSignatureInput(output.getBytes());
+
+            //this._transformsOutput.setSourceURI(output.getSourceURI());
+         } else {
+            output = input;
+         }
+
+         return output;
+      } catch (ResourceResolverException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (CanonicalizationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (InvalidCanonicalizerException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (TransformationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Returns the XMLSignatureInput which is the result of the Transforms.
+    * @return a XMLSignatureInput with all transformations applied.
+    * @throws XMLSignatureException
+    */
+   public XMLSignatureInput getContentsAfterTransformation()
+           throws XMLSignatureException {
+
+      XMLSignatureInput input = this.getContentsBeforeTransformation();
+
+      return this.getContentsAfterTransformation(input, null);
+   }
+
+   /**
+    * This method returns the XMLSignatureInput which represents the node set before
+    * some kind of canonicalization is applied for the first time.
+    * @return Gets a the node doing everything till the first c14n is needed
+    *
+    * @throws XMLSignatureException
+    */
+   public XMLSignatureInput getNodesetBeforeFirstCanonicalization()
+           throws XMLSignatureException {
+
+      try {
+         XMLSignatureInput input = this.getContentsBeforeTransformation();
+         XMLSignatureInput output = input;
+         Transforms transforms = this.getTransforms();
+
+         if (transforms != null) {
+            doTransforms: for (int i = 0; i < transforms.getLength(); i++) {
+               Transform t = transforms.item(i);
+               String URI = t.getURI();
+
+               if (URI.equals(Transforms
+                       .TRANSFORM_C14N_EXCL_OMIT_COMMENTS) || URI
+                          .equals(Transforms
+                             .TRANSFORM_C14N_EXCL_WITH_COMMENTS) || URI
+                                .equals(Transforms
+                                   .TRANSFORM_C14N_OMIT_COMMENTS) || URI
+                                      .equals(Transforms
+                                         .TRANSFORM_C14N_WITH_COMMENTS)) {
+
+                  break doTransforms;
+               }
+
+               output = t.performTransform(output, null);
+            }
+
+            output.setSourceURI(input.getSourceURI());
+         }
+         return output;
+      } catch (IOException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (ResourceResolverException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (CanonicalizationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (InvalidCanonicalizerException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (TransformationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Method getHTMLRepresentation
+    * @return The HTML of the transformation
+    * @throws XMLSignatureException
+    */
+   public String getHTMLRepresentation() throws XMLSignatureException {
+
+      try {
+         XMLSignatureInput nodes = this.getNodesetBeforeFirstCanonicalization();
+         Set inclusiveNamespaces = new HashSet();
+
+         {
+            Transforms transforms = this.getTransforms();
+            Transform c14nTransform = null;
+
+            if (transforms != null) {
+               doTransforms: for (int i = 0; i < transforms.getLength(); i++) {
+                  Transform t = transforms.item(i);
+                  String URI = t.getURI();
+
+                  if (URI.equals(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS)
+                          || URI.equals(
+                             Transforms.TRANSFORM_C14N_EXCL_WITH_COMMENTS)) {
+                     c14nTransform = t;
+
+                     break doTransforms;
+                  }
+               }
+            }
+
+            if (c14nTransform != null) {
+
+               if (c14nTransform
+                       .length(InclusiveNamespaces
+                          .ExclusiveCanonicalizationNamespace, InclusiveNamespaces
+                          ._TAG_EC_INCLUSIVENAMESPACES) == 1) {
+
+                  // there is one InclusiveNamespaces element
+                  InclusiveNamespaces in = new InclusiveNamespaces(
+                        XMLUtils.selectNode(
+                        c14nTransform.getElement().getFirstChild(),
+						InclusiveNamespaces.ExclusiveCanonicalizationNamespace, 
+                        InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES,0), this.getBaseURI());
+
+                  inclusiveNamespaces = InclusiveNamespaces.prefixStr2Set(
+                     in.getInclusiveNamespaces());
+               }
+            }
+         }
+
+         return nodes.getHTMLRepresentation(inclusiveNamespaces);
+      } catch (TransformationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (InvalidTransformException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * This method only works works after a call to verify.
+    * @return the transformed output(i.e. what is going to be digested).
+    */
+   public XMLSignatureInput getTransformsOutput() {
+      return this._transformsOutput;
+   }
+
+   /**
+    * This method returns the {@link XMLSignatureInput} which is referenced by the
+    * <CODE>URI</CODE> Attribute.
+    * @param os where to write the transformation can be null.
+    * @return the element to digest
+    *
+    * @throws XMLSignatureException
+    * @see Manifest#verifyReferences()
+    */
+   protected XMLSignatureInput dereferenceURIandPerformTransforms(OutputStream os)
+           throws XMLSignatureException {
+
+      try {
+         XMLSignatureInput input = this.getContentsBeforeTransformation();
+         XMLSignatureInput output = this.getContentsAfterTransformation(input, os);
+
+         /* at this stage, this._transformsInput and this._transformsOutput
+          * contain a huge amount of nodes. When we do not cache these nodes
+          * but only preserve the octets, the memory footprint is dramatically
+          * reduced.
+          */
+         if (!Reference.CacheSignedNodes) {
+
+            this._transformsOutput = output;//new XMLSignatureInput(output.getBytes());
+
+            //this._transformsOutput.setSourceURI(output.getSourceURI());
+         }
+         return output;
+      } catch (XMLSecurityException ex) {
+         throw new ReferenceNotInitializedException("empty", ex);
+      }
+   }
+
+   /**
+    * Method getTransforms
+    *
+    * @return The transforms that applied this reference.
+    * @throws InvalidTransformException
+    * @throws TransformationException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public Transforms getTransforms()
+           throws XMLSignatureException, InvalidTransformException,
+                  TransformationException, XMLSecurityException {
+
+      return transforms;           
+   }
+
+   /**
+    * Method getReferencedBytes
+    * 
+    * @return the bytes that will be used to generated digest.
+    * @throws ReferenceNotInitializedException
+    * @throws XMLSignatureException
+    */
+   public byte[] getReferencedBytes()
+           throws ReferenceNotInitializedException, XMLSignatureException {
+    try {
+        XMLSignatureInput output=this.dereferenceURIandPerformTransforms(null);
+
+        byte[] signedBytes = output.getBytes();
+
+        return signedBytes;
+     } catch (IOException ex) {
+        throw new ReferenceNotInitializedException("empty", ex);
+     } catch (CanonicalizationException ex) {
+        throw new ReferenceNotInitializedException("empty", ex);
+     } 
+
+   }
+
+
+   /**
+    * Method resolverResult
+    *
+    * @return reference Calculate the digest of this reference.
+    * @throws ReferenceNotInitializedException
+    * @throws XMLSignatureException
+    */
+   private byte[] calculateDigest()
+           throws ReferenceNotInitializedException, XMLSignatureException {
+
+      try {
+         
+         MessageDigestAlgorithm mda = this.getMessageDigestAlgorithm();
+
+         mda.reset();
+         DigesterOutputStream diOs=new DigesterOutputStream(mda);
+         OutputStream os=new UnsyncBufferedOutputStream(diOs);
+         XMLSignatureInput output=this.dereferenceURIandPerformTransforms(os);         
+         output.updateOutputStream(os);
+         os.flush();
+         //this.getReferencedBytes(diOs);
+         //mda.update(data);
+
+         return diOs.getDigestValue();
+      } catch (XMLSecurityException ex) {
+         throw new ReferenceNotInitializedException("empty", ex);
+      } catch (IOException ex) {
+      	 throw new ReferenceNotInitializedException("empty", ex);
+	}
+   }
+
+   /**
+    * Returns the digest value.
+    *
+    * @return the digest value.
+    * @throws Base64DecodingException if Reference contains no proper base64 encoded data.
+	* @throws XMLSecurityException if the Reference does not contain a DigestValue element
+    */
+   public byte[] getDigestValue() throws Base64DecodingException, XMLSecurityException {
+      if (digestValueElement == null) {
+		  // The required element is not in the XML!
+		  Object[] exArgs ={ Constants._TAG_DIGESTVALUE, 
+							 Constants.SignatureSpecNS };
+		  throw new XMLSecurityException(
+					"signature.Verification.NoSignatureElement", 
+					exArgs);
+	  }
+      byte[] elemDig = Base64.decode(digestValueElement);
+      return elemDig;
+   }
+
+
+   /**
+    * Tests reference valdiation is success or false
+    *
+    * @return true if reference valdiation is success, otherwise false
+    * @throws ReferenceNotInitializedException
+    * @throws XMLSecurityException
+    */
+   public boolean verify()
+           throws ReferenceNotInitializedException, XMLSecurityException {
+
+      byte[] elemDig = this.getDigestValue();
+      byte[] calcDig = this.calculateDigest();
+      boolean equal = MessageDigestAlgorithm.isEqual(elemDig, calcDig);
+
+      if (!equal) {
+         log.warn("Verification failed for URI \"" + this.getURI() + "\"");
+      } else {
+         log.info("Verification successful for URI \"" + this.getURI() + "\"");
+      }
+
+      return equal;
+   }
+
+   /**
+    * Method getBaseLocalName
+    * @inheritDoc
+    *
+    */
+   public String getBaseLocalName() {
+      return Constants._TAG_REFERENCE;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/ReferenceNotInitializedException.java b/src/org/apache/xml/security/signature/ReferenceNotInitializedException.java
new file mode 100644
index 0000000..ddb0f32
--- /dev/null
+++ b/src/org/apache/xml/security/signature/ReferenceNotInitializedException.java
@@ -0,0 +1,86 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+
+
+/**
+ * Raised if verifying a {@link org.apache.xml.security.signature.Reference} fails
+ * because of an uninitialized {@link org.apache.xml.security.signature.XMLSignatureInput}
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class ReferenceNotInitializedException extends XMLSignatureException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor ReferenceNotInitializedException
+    *
+    */
+   public ReferenceNotInitializedException() {
+      super();
+   }
+
+   /**
+    * Constructor ReferenceNotInitializedException
+    *
+    * @param _msgID
+    */
+   public ReferenceNotInitializedException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor ReferenceNotInitializedException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public ReferenceNotInitializedException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor ReferenceNotInitializedException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public ReferenceNotInitializedException(String _msgID,
+                                           Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor ReferenceNotInitializedException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public ReferenceNotInitializedException(String _msgID, Object exArgs[],
+                                           Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/signature/SignatureProperties.java b/src/org/apache/xml/security/signature/SignatureProperties.java
new file mode 100644
index 0000000..0458eb1
--- /dev/null
+++ b/src/org/apache/xml/security/signature/SignatureProperties.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * Handles <code>&lt;ds:SignatureProperties&gt;</code> elements
+ * This Element holds {@link SignatureProperty} that contian additional information items
+ * concerning the generation of the signature.
+ * for example, data-time stamp, serial number of cryptographic hardware.
+ *
+ * @author Christian Geuer-Pollmann
+ *
+ */
+public class SignatureProperties extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(SignatureProperties.class.getName());
+
+   /**
+    * Constructor SignatureProperties
+    *
+    * @param doc
+    */
+   public SignatureProperties(Document doc) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Constructs {@link SignatureProperties} from {@link Element}
+    * @param element <code>SignatureProperties</code> elementt
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @throws XMLSecurityException
+    */
+   public SignatureProperties(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Return the nonnegative number of added SignatureProperty elements.
+    *
+    * @return the number of SignatureProperty elements
+    */
+   public int getLength() {
+      
+         Element[] propertyElems =
+            XMLUtils.selectDsNodes(this._constructionElement,
+                                     Constants._TAG_SIGNATUREPROPERTY
+                                    );
+
+         return propertyElems.length;
+   }
+
+   /**
+    * Return the <it>i</it><sup>th</sup> SignatureProperty.  Valid <code>i</code>
+    * values are 0 to <code>{link@ getSize}-1</code>.
+    *
+    * @param i Index of the requested {@link SignatureProperty}
+    * @return the <it>i</it><sup>th</sup> SignatureProperty
+    * @throws XMLSignatureException
+    */
+   public SignatureProperty item(int i) throws XMLSignatureException {
+   	  try {
+         Element propertyElem =
+            XMLUtils.selectDsNode(this._constructionElement, 
+                                 Constants._TAG_SIGNATUREPROPERTY, 
+                                 i );
+
+         if (propertyElem == null) {
+            return null;
+         } 
+         return new SignatureProperty(propertyElem, this._baseURI);               
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Sets the <code>Id</code> attribute
+    *
+    * @param Id the <code>Id</code> attribute
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute
+    *
+    * @return the <code>Id</code> attribute
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Method addSignatureProperty
+    *
+    * @param sp
+    */
+   public void addSignatureProperty(SignatureProperty sp) {
+      this._constructionElement.appendChild(sp.getElement());
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_SIGNATUREPROPERTIES;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/SignatureProperty.java b/src/org/apache/xml/security/signature/SignatureProperty.java
new file mode 100644
index 0000000..42b128f
--- /dev/null
+++ b/src/org/apache/xml/security/signature/SignatureProperty.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Handles <code>&lt;ds:SignatureProperty&gt;</code> elements
+ * Addittional information item concerning the generation of the signature(s) can
+ * be placed in this Element
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class SignatureProperty extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                            SignatureProperty.class.getName());
+
+   /**
+    * Constructs{@link SignatureProperty} using specified <code>Target</code> attribute
+    *
+    * @param doc the {@link Document} in which <code>XMLsignature</code> is placed
+    * @param Target the <code>Target</code> attribute references the <code>Signature</code> element to which the property applies SignatureProperty
+    */
+   public SignatureProperty(Document doc, String Target) {
+      this(doc, Target, null);
+   }
+
+   /**
+    * Constructs {@link SignatureProperty} using sepcified <code>Target</code> attribute and <code>Id</code> attribute
+    *
+    * @param doc the {@link Document} in which <code>XMLsignature</code> is placed
+    * @param Target the <code>Target</code> attribute references the <code>Signature</code> element to which the property applies
+    * @param Id the <code>Id</code> will be specified by {@link Reference#getURI} in validation
+    */
+   public SignatureProperty(Document doc, String Target, String Id) {
+
+      super(doc);
+
+      this.setTarget(Target);
+      this.setId(Id);
+   }
+
+   /**
+    * Constructs a {@link SignatureProperty} from an {@link Element}
+    * @param element <code>SignatureProperty</code> element
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @throws XMLSecurityException
+    */
+   public SignatureProperty(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    *   Sets the <code>Id</code> attribute
+    *
+    *   @param Id the <code>Id</code> attribute
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute
+    *
+    * @return the <code>Id</code> attribute
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Sets the <code>Target</code> attribute
+    *
+    * @param Target the <code>Target</code> attribute
+    */
+   public void setTarget(String Target) {
+
+      if ((this._state == MODE_SIGN) && (Target != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_TARGET, Target);
+      }
+   }
+
+   /**
+    * Returns the <code>Target</code> attribute
+    *
+    * @return the <code>Target</code> attribute
+    */
+   public String getTarget() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_TARGET);
+   }
+
+   /**
+    * Method appendChild
+    *
+    * @param node
+    * @return the node in this element.
+    */
+   public Node appendChild(Node node) {
+      return this._constructionElement.appendChild(node);
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_SIGNATUREPROPERTY;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/SignedInfo.java b/src/org/apache/xml/security/signature/SignedInfo.java
new file mode 100644
index 0000000..84c2e52
--- /dev/null
+++ b/src/org/apache/xml/security/signature/SignedInfo.java
@@ -0,0 +1,381 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.algorithms.SignatureAlgorithm;
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.transforms.params.InclusiveNamespaces;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Handles <code>&lt;ds:SignedInfo&gt;</code> elements
+ * This <code>SignedInfo<code> element includes the canonicalization algorithm,
+ * a signature algorithm, and one or more references
+ * @author Christian Geuer-Pollmann
+ */
+public class SignedInfo extends Manifest {
+
+   /** Field _signatureAlgorithm */
+   private SignatureAlgorithm _signatureAlgorithm = null;
+
+   /** Field _c14nizedBytes           */
+   private byte[] _c14nizedBytes = null;
+
+private Element c14nMethod;
+
+private Element signatureMethod;
+
+   /**
+    * Overwrites {@link Manifest#addDocument} because it creates another Element.
+    *
+    * @param doc the {@link Document} in which <code>XMLsignature</code> will be placed
+    * @throws XMLSecurityException
+    */
+   public SignedInfo(Document doc) throws XMLSecurityException {
+      this(doc, XMLSignature.ALGO_ID_SIGNATURE_DSA, Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+   }
+
+   /**
+    * Constructs {@link SignedInfo} using given Canoicaliztion algorithm and Signature algorithm
+    *
+    * @param doc <code>SignedInfo</code> is placed in this document
+    * @param CanonicalizationMethodURI URI representation of the Canonicalization method
+    * @param SignatureMethodURI URI representation of the Digest and Signature algorithm
+    * @throws XMLSecurityException
+    */
+   public SignedInfo(
+           Document doc, String SignatureMethodURI, String CanonicalizationMethodURI)
+              throws XMLSecurityException {
+      this(doc, SignatureMethodURI, 0, CanonicalizationMethodURI);
+   }
+
+   /**
+    * Constructor SignedInfo
+    *
+    * @param doc
+    * @param CanonicalizationMethodURI
+    * @param SignatureMethodURI
+    * @param HMACOutputLength
+    * @throws XMLSecurityException
+    */
+   public SignedInfo(
+           Document doc, String SignatureMethodURI, int HMACOutputLength, String CanonicalizationMethodURI)
+              throws XMLSecurityException {
+
+      super(doc);
+
+      // XMLUtils.addReturnToElement(this._constructionElement);
+      {
+         c14nMethod = XMLUtils.createElementInSignatureSpace(this._doc,
+                                Constants._TAG_CANONICALIZATIONMETHOD);
+
+         c14nMethod.setAttributeNS(null, Constants._ATT_ALGORITHM,
+                                CanonicalizationMethodURI);
+         this._constructionElement.appendChild(c14nMethod);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+      {
+         if (HMACOutputLength > 0) {
+            this._signatureAlgorithm = new SignatureAlgorithm(this._doc,
+                    SignatureMethodURI, HMACOutputLength);
+         } else {
+            this._signatureAlgorithm = new SignatureAlgorithm(this._doc,
+                    SignatureMethodURI);
+         }
+
+         signatureMethod=this._signatureAlgorithm.getElement();
+         this._constructionElement.appendChild(signatureMethod);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+   
+   /**
+    * @param doc
+    * @param SignatureMethodElem
+    * @param CanonicalizationMethodElem
+    * @throws XMLSecurityException
+    */
+   public SignedInfo(
+           Document doc, Element SignatureMethodElem, Element CanonicalizationMethodElem)
+              throws XMLSecurityException {
+
+      super(doc);
+
+      this._constructionElement.appendChild(CanonicalizationMethodElem);
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      this._signatureAlgorithm = new SignatureAlgorithm(SignatureMethodElem, null);
+
+      signatureMethod=this._signatureAlgorithm.getElement();
+      this._constructionElement.appendChild(signatureMethod);
+      
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Build a {@link SignedInfo} from an {@link Element}
+    *
+    * @param element <code>SignedInfo</code>
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @throws XMLSecurityException
+    * @see <A HREF="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001OctDec/0033.html">Question</A>
+    * @see <A HREF="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001OctDec/0054.html">Answer</A>
+    */
+   public SignedInfo(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      // Parse the Reference children and Id attribute in the Manifest
+      super(element, BaseURI);
+
+      /* canonicalize ds:SignedInfo, reparse it into a new document
+       * and replace the original not-canonicalized ds:SignedInfo by
+       * the re-parsed canonicalized one.
+       */
+      c14nMethod=XMLUtils.getNextElement(element.getFirstChild());
+      String c14nMethodURI=this.getCanonicalizationMethodURI();
+     if (!(c14nMethodURI.equals("http://www.w3.org/TR/2001/REC-xml-c14n-20010315") ||
+      		c14nMethodURI.equals("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments") ||
+			c14nMethodURI.equals("http://www.w3.org/2001/10/xml-exc-c14n#") ||
+			c14nMethodURI.equals("http://www.w3.org/2001/10/xml-exc-c14n#WithComments"))) {
+      	//The c14n is not a secure one and can rewrite the URIs or like that reparse the SignedInfo to be sure    
+      try {
+         Canonicalizer c14nizer =
+            Canonicalizer.getInstance(this.getCanonicalizationMethodURI());
+
+         this._c14nizedBytes =
+            c14nizer.canonicalizeSubtree(this._constructionElement);
+         javax.xml.parsers.DocumentBuilderFactory dbf =
+            javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+         dbf.setNamespaceAware(true);
+
+         javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();        
+         org.w3c.dom.Document newdoc =
+            db.parse(new ByteArrayInputStream(this._c14nizedBytes));
+         Node imported = this._doc.importNode(newdoc.getDocumentElement(),
+                                              true);
+
+         this._constructionElement.getParentNode().replaceChild(imported,
+                 this._constructionElement);
+
+         this._constructionElement = (Element) imported;
+      } catch (ParserConfigurationException ex) {
+         throw new XMLSecurityException("empty", ex);
+      } catch (IOException ex) {
+         throw new XMLSecurityException("empty", ex);
+      } catch (SAXException ex) {
+         throw new XMLSecurityException("empty", ex);
+      }
+      }
+      signatureMethod=XMLUtils.getNextElement(c14nMethod.getNextSibling());
+      this._signatureAlgorithm =
+         new SignatureAlgorithm(signatureMethod,
+                                this.getBaseURI());
+   }
+
+   /**
+    * Tests core validation process
+    *
+    * @return true if verification was successful
+    * @throws MissingResourceFailureException
+    * @throws XMLSecurityException
+    */
+   public boolean verify()
+           throws MissingResourceFailureException, XMLSecurityException {
+      return super.verifyReferences(false);
+   }
+
+   /**
+    * Tests core validation process
+    *
+    * @param followManifests defines whether the verification process has to verify referenced <CODE>ds:Manifest</CODE>s, too
+    * @return true if verification was successful
+    * @throws MissingResourceFailureException
+    * @throws XMLSecurityException
+    */
+   public boolean verify(boolean followManifests)
+           throws MissingResourceFailureException, XMLSecurityException {
+      return super.verifyReferences(followManifests);
+   }
+
+   /**
+    * Returns getCanonicalizedOctetStream
+    *
+    * @return the canonicalization result octedt stream of <code>SignedInfo</code> element
+    * @throws CanonicalizationException
+    * @throws InvalidCanonicalizerException
+    * @throws XMLSecurityException
+    */
+   public byte[] getCanonicalizedOctetStream()
+           throws CanonicalizationException, InvalidCanonicalizerException,
+                 XMLSecurityException {
+
+      if ((this._c14nizedBytes == null)
+              /*&& (this._state == ElementProxy.MODE_SIGN)*/) {
+         Canonicalizer c14nizer =
+            Canonicalizer.getInstance(this.getCanonicalizationMethodURI());
+
+         this._c14nizedBytes =
+            c14nizer.canonicalizeSubtree(this._constructionElement);
+      }
+
+      // make defensive copy
+      byte[] output = new byte[this._c14nizedBytes.length];
+
+      System.arraycopy(this._c14nizedBytes, 0, output, 0, output.length);
+
+      return output;
+   }
+   
+   /**
+    *  Output the C14n stream to the give outputstream.
+    * @param os
+    * @throws CanonicalizationException
+    * @throws InvalidCanonicalizerException
+    * @throws XMLSecurityException
+    */
+   public void signInOctectStream(OutputStream os)            
+       throws CanonicalizationException, InvalidCanonicalizerException,
+	   XMLSecurityException {
+
+   	if ((this._c14nizedBytes == null)) {
+       Canonicalizer c14nizer =
+          Canonicalizer.getInstance(this.getCanonicalizationMethodURI());
+       c14nizer.setWriter(os);
+       String inclusiveNamespaces = this.getInclusiveNamespaces();
+
+       if(inclusiveNamespaces == null)
+        c14nizer.canonicalizeSubtree(this._constructionElement);
+       else
+        c14nizer.canonicalizeSubtree(this._constructionElement, inclusiveNamespaces);
+    } else {
+        try {
+			os.write(this._c14nizedBytes);
+		} catch (IOException e) {
+			throw new RuntimeException(""+e);
+		}  
+    }    
+   }
+
+   /**
+    * Returns the Canonicalization method URI
+    *
+    * @return the Canonicalization method URI
+    */
+   public String getCanonicalizationMethodURI() {
+
+     
+     return c14nMethod.getAttributeNS(null, Constants._ATT_ALGORITHM);    
+   }
+
+   /**
+    * Returns the Signature method URI
+    *
+    * @return the Signature method URI
+    */
+   public String getSignatureMethodURI() {
+
+      Element signatureElement = this.getSignatureMethodElement();
+
+      if (signatureElement != null) {
+         return signatureElement.getAttributeNS(null, Constants._ATT_ALGORITHM);
+      }
+
+      return null;
+   }
+
+   /**
+    * Method getSignatureMethodElement
+    * @return gets The SignatureMethod Node.   
+    *
+    */
+   public Element getSignatureMethodElement() {
+	   return signatureMethod;
+   }
+
+   /**
+    * Creates a SecretKey for the appropriate Mac algorithm based on a
+    * byte[] array password.
+    *
+    * @param secretKeyBytes
+    * @return the secret key for the SignedInfo element.
+    */
+   public SecretKey createSecretKey(byte[] secretKeyBytes)
+   {
+
+      return new SecretKeySpec(secretKeyBytes,
+                               this._signatureAlgorithm
+                                  .getJCEAlgorithmString());
+   }
+
+   /**
+    * Method getBaseLocalName
+    * @inheritDoc
+    *
+    */
+   public String getBaseLocalName() {
+      return Constants._TAG_SIGNEDINFO;
+   }
+
+   public String getInclusiveNamespaces() {
+
+    
+
+     String c14nMethodURI = c14nMethod.getAttributeNS(null, Constants._ATT_ALGORITHM);
+     if(!(c14nMethodURI.equals("http://www.w3.org/2001/10/xml-exc-c14n#") ||
+			c14nMethodURI.equals("http://www.w3.org/2001/10/xml-exc-c14n#WithComments"))) {
+                return null;
+            }
+
+     Element inclusiveElement = XMLUtils.getNextElement(
+    		 c14nMethod.getFirstChild());
+
+     if(inclusiveElement != null)
+     {
+         try
+         {
+             String inclusiveNamespaces = new InclusiveNamespaces(inclusiveElement,
+                         InclusiveNamespaces.ExclusiveCanonicalizationNamespace).getInclusiveNamespaces();
+             return inclusiveNamespaces;
+         }
+         catch (XMLSecurityException e)
+         {
+             return null;
+         }
+     }
+     return null;
+    }
+}
diff --git a/src/org/apache/xml/security/signature/XMLSignature.java b/src/org/apache/xml/security/signature/XMLSignature.java
new file mode 100644
index 0000000..b7e3995
--- /dev/null
+++ b/src/org/apache/xml/security/signature/XMLSignature.java
@@ -0,0 +1,753 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.security.Key;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.crypto.SecretKey;
+
+import org.apache.xml.security.algorithms.SignatureAlgorithm;
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.I18n;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.SignerOutputStream;
+import org.apache.xml.security.utils.UnsyncBufferedOutputStream;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+
+/**
+ * Handles <code>&lt;ds:Signature&gt;</code> elements.
+ * This is the main class that deals with creating and verifying signatures.
+ *
+ * <p>There are 2 types of constructors for this class. The ones that take a
+ * document, baseURI and 1 or more Java Objects. This is mostly used for
+ * signing purposes.
+ * The other constructor is the one that takes a DOM Element and a BaseURI.
+ * This is used mostly with for verifying, when you have a SignatureElement.
+ *
+ * There are a few different types of methods:
+ * <ul><li>The addDocument* methods are used to add References with optional
+ * transforms during signing. </li>
+ * <li>addKeyInfo* methods are to add Certificates and Keys to the
+ * KeyInfo tags during signing. </li>
+ * <li>appendObject allows a user to add any XML Structure as an
+ * ObjectContainer during signing.</li>
+ * <li>sign and checkSignatureValue methods are used to sign and validate the
+ * signature. </li></ul>
+ *
+ * @author $Author$
+ */
+public final class XMLSignature extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+   static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLSignature.class.getName());
+   
+   //J-
+   /** MAC - Required HMAC-SHA1 */
+   public static final String ALGO_ID_MAC_HMAC_SHA1 = Constants.SignatureSpecNS + "hmac-sha1";
+
+   /** Signature - Required DSAwithSHA1 (DSS) */
+   public static final String ALGO_ID_SIGNATURE_DSA = Constants.SignatureSpecNS + "dsa-sha1";
+
+   /** Signature - Recommended RSAwithSHA1 */
+   public static final String ALGO_ID_SIGNATURE_RSA = Constants.SignatureSpecNS + "rsa-sha1";
+   /** Signature - Recommended RSAwithSHA1 */
+   public static final String ALGO_ID_SIGNATURE_RSA_SHA1 = Constants.SignatureSpecNS + "rsa-sha1";
+   /** Signature - NOT Recommended RSAwithMD5 */
+   public static final String ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5 = Constants.MoreAlgorithmsSpecNS + "rsa-md5";
+   /** Signature - Optional RSAwithRIPEMD160 */
+   public static final String ALGO_ID_SIGNATURE_RSA_RIPEMD160 = Constants.MoreAlgorithmsSpecNS + "rsa-ripemd160";
+   /** Signature - Optional RSAwithSHA256 */
+   public static final String ALGO_ID_SIGNATURE_RSA_SHA256 = Constants.MoreAlgorithmsSpecNS + "rsa-sha256";
+   /** Signature - Optional RSAwithSHA384 */
+   public static final String ALGO_ID_SIGNATURE_RSA_SHA384 = Constants.MoreAlgorithmsSpecNS + "rsa-sha384";
+   /** Signature - Optional RSAwithSHA512 */
+   public static final String ALGO_ID_SIGNATURE_RSA_SHA512 = Constants.MoreAlgorithmsSpecNS + "rsa-sha512";
+
+   /** HMAC - NOT Recommended HMAC-MD5 */
+   public static final String ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5 = Constants.MoreAlgorithmsSpecNS + "hmac-md5";
+   /** HMAC - Optional HMAC-RIPEMD160 */
+   public static final String ALGO_ID_MAC_HMAC_RIPEMD160 = Constants.MoreAlgorithmsSpecNS + "hmac-ripemd160";
+   /** HMAC - Optional HMAC-SHA256 */
+   public static final String ALGO_ID_MAC_HMAC_SHA256 = Constants.MoreAlgorithmsSpecNS + "hmac-sha256";
+   /** HMAC - Optional HMAC-SHA284 */
+   public static final String ALGO_ID_MAC_HMAC_SHA384 = Constants.MoreAlgorithmsSpecNS + "hmac-sha384";
+   /** HMAC - Optional HMAC-SHA512 */
+   public static final String ALGO_ID_MAC_HMAC_SHA512 = Constants.MoreAlgorithmsSpecNS + "hmac-sha512";
+   //J+
+
+   /** ds:Signature.ds:SignedInfo element */
+   private SignedInfo _signedInfo = null;
+
+   /** ds:Signature.ds:KeyInfo */
+   private KeyInfo _keyInfo = null;
+
+   /**
+    * Checking the digests in References in a Signature are mandatory, but for
+    * References inside a Manifest it is application specific. This boolean is
+    * to indicate that the References inside Manifests should be validated.
+    */
+   private boolean _followManifestsDuringValidation = false;
+
+private Element signatureValueElement;
+
+  /**
+    * This creates a new <CODE>ds:Signature</CODE> Element and adds an empty
+    * <CODE>ds:SignedInfo</CODE>.
+    * The <code>ds:SignedInfo</code> is initialized with the specified Signature
+    * algorithm and Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS which is REQUIRED
+    * by the spec. This method's main use is for creating a new signature.
+    *
+    * @param doc Document in which the signature will be appended after creation.
+    * @param BaseURI URI to be used as context for all relative URIs.
+    * @param SignatureMethodURI signature algorithm to use.
+    * @throws XMLSecurityException
+    */
+   public XMLSignature(Document doc, String BaseURI, String SignatureMethodURI)
+           throws XMLSecurityException {
+      this(doc, BaseURI, SignatureMethodURI, 0,
+           Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+   }
+
+   /**
+    * Constructor XMLSignature
+    *
+    * @param doc
+    * @param BaseURI
+    * @param SignatureMethodURI the Signature method to be used.
+    * @param HMACOutputLength
+    * @throws XMLSecurityException
+    */
+   public XMLSignature(
+           Document doc, String BaseURI, String SignatureMethodURI, int HMACOutputLength)
+              throws XMLSecurityException {
+      this(doc, BaseURI, SignatureMethodURI, HMACOutputLength,
+           Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+   }
+
+   /**
+    * Constructor XMLSignature
+    *
+    * @param doc
+    * @param BaseURI
+    * @param SignatureMethodURI the Signature method to be used.
+    * @param CanonicalizationMethodURI the canonicalization algorithm to be used to c14nize the SignedInfo element.
+    * @throws XMLSecurityException
+    */
+   public XMLSignature(
+           Document doc, String BaseURI, String SignatureMethodURI, String CanonicalizationMethodURI)
+              throws XMLSecurityException {
+      this(doc, BaseURI, SignatureMethodURI, 0, CanonicalizationMethodURI);
+   }
+
+   /**
+    * Constructor XMLSignature
+    *
+    * @param doc
+    * @param BaseURI
+    * @param SignatureMethodURI
+    * @param HMACOutputLength
+    * @param CanonicalizationMethodURI
+    * @throws XMLSecurityException
+    */
+   public XMLSignature(
+           Document doc, String BaseURI, String SignatureMethodURI, int HMACOutputLength, String CanonicalizationMethodURI)
+              throws XMLSecurityException {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      this._baseURI = BaseURI;
+      this._signedInfo = new SignedInfo(this._doc, SignatureMethodURI,
+                                        HMACOutputLength,
+                                        CanonicalizationMethodURI);
+
+      this._constructionElement.appendChild(this._signedInfo.getElement());
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      // create an empty SignatureValue; this is filled by setSignatureValueElement
+      signatureValueElement =
+         XMLUtils.createElementInSignatureSpace(this._doc,
+                                                Constants._TAG_SIGNATUREVALUE);
+
+      this._constructionElement.appendChild(signatureValueElement);
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+   /**
+    *  Creates a XMLSignature in a Document
+    * @param doc
+    * @param BaseURI
+    * @param SignatureMethodElem
+    * @param CanonicalizationMethodElem
+    * @throws XMLSecurityException
+    */
+   public XMLSignature(
+           Document doc, String BaseURI, Element SignatureMethodElem, Element CanonicalizationMethodElem)
+              throws XMLSecurityException {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      this._baseURI = BaseURI;
+      this._signedInfo = new SignedInfo(this._doc, SignatureMethodElem, CanonicalizationMethodElem);
+
+      this._constructionElement.appendChild(this._signedInfo.getElement());
+      XMLUtils.addReturnToElement(this._constructionElement);
+
+      // create an empty SignatureValue; this is filled by setSignatureValueElement
+      signatureValueElement =
+         XMLUtils.createElementInSignatureSpace(this._doc,
+                                                Constants._TAG_SIGNATUREVALUE);
+
+      this._constructionElement.appendChild(signatureValueElement);
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * This will parse the element and construct the Java Objects.
+    * That will allow a user to validate the signature.
+    *
+    * @param element ds:Signature element that contains the whole signature
+    * @param BaseURI URI to be prepended to all relative URIs
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException if the signature is badly formatted
+    */
+   public XMLSignature(Element element, String BaseURI)
+           throws XMLSignatureException, XMLSecurityException {
+
+      super(element, BaseURI);
+
+      // check out SignedInfo child
+      Element signedInfoElem = XMLUtils.getNextElement(element.getFirstChild());// XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                  //Constants._TAG_SIGNEDINFO,0);
+
+      // check to see if it is there
+      if (signedInfoElem == null) {
+         Object exArgs[] = { Constants._TAG_SIGNEDINFO,
+                             Constants._TAG_SIGNATURE };
+
+         throw new XMLSignatureException("xml.WrongContent", exArgs);
+      }
+
+      // create a SignedInfo object from that element
+      this._signedInfo = new SignedInfo(signedInfoElem, BaseURI);
+
+      // check out SignatureValue child
+      this.signatureValueElement =XMLUtils.getNextElement(signedInfoElem.getNextSibling()); //XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                                       //  Constants._TAG_SIGNATUREVALUE,0);
+
+      // check to see if it exists
+      if (signatureValueElement == null) {
+         Object exArgs[] = { Constants._TAG_SIGNATUREVALUE,
+                             Constants._TAG_SIGNATURE };
+
+         throw new XMLSignatureException("xml.WrongContent", exArgs);
+      }
+
+      // <element ref="ds:KeyInfo" minOccurs="0"/>
+      Element keyInfoElem = XMLUtils.getNextElement(signatureValueElement.getNextSibling());//XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+                              // Constants._TAG_KEYINFO,0);
+
+      // If it exists use it, but it's not mandatory
+      if ((keyInfoElem != null) && (keyInfoElem.getNamespaceURI().equals(Constants.SignatureSpecNS) && 
+    		  keyInfoElem.getLocalName().equals(Constants._TAG_KEYINFO)) ) {
+         this._keyInfo = new KeyInfo(keyInfoElem, BaseURI);
+      }
+   }
+
+   /**
+    * Sets the <code>Id</code> attribute
+    *
+    * @param Id Id value to be used by the id attribute on the Signature Element
+    */
+   public void setId(String Id) {
+
+      if ((this._state == MODE_SIGN) && (Id != null)) {
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ID, Id);
+         IdResolver.registerElementById(this._constructionElement, Id);
+      }
+   }
+
+   /**
+    * Returns the <code>Id</code> attribute
+    *
+    * @return the <code>Id</code> attribute
+    */
+   public String getId() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ID);
+   }
+
+   /**
+    * Returns the completely parsed <code>SignedInfo</code> object.
+    *
+    * @return the completely parsed <code>SignedInfo</code> object.
+    */
+   public SignedInfo getSignedInfo() {
+      return this._signedInfo;
+   }
+
+   /**
+    * Returns the octet value of the SignatureValue element.
+    * Throws an XMLSignatureException if it has no or wrong content.
+    *
+    * @return the value of the SignatureValue element.
+    * @throws XMLSignatureException If there is no content
+    */
+   public byte[] getSignatureValue() throws XMLSignatureException {
+
+      try {
+    	  byte[] signatureValue = Base64.decode(signatureValueElement);
+
+         return signatureValue;
+      } catch (Base64DecodingException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Base64 encodes and sets the bytes as the content of the SignatureValue
+    * Node.
+    *
+    * @param bytes bytes to be used by SignatureValue before Base64 encoding
+    */
+   private void setSignatureValueElement(byte[] bytes)
+   {
+
+      if (this._state == MODE_SIGN) {
+    	 while (signatureValueElement.hasChildNodes()) {
+        	 signatureValueElement.removeChild(signatureValueElement.getFirstChild());
+         }
+
+         String base64codedValue = Base64.encode(bytes);
+
+         if (base64codedValue.length() > 76) {
+            base64codedValue = "\n" + base64codedValue + "\n";
+         }
+
+         Text t = this._doc.createTextNode(base64codedValue);
+
+         signatureValueElement.appendChild(t);
+      }
+   }
+
+   /**
+    * Returns the KeyInfo child. If we are in signing mode and the KeyInfo
+    * does not exist yet, it is created on demand and added to the Signature.
+    * <br>
+    * This allows to add arbitrary content to the KeyInfo during signing.
+    *
+    * @return the KeyInfo object
+    */
+   public KeyInfo getKeyInfo() {
+
+      // check to see if we are signing and if we have to create a keyinfo
+      if ((this._state == MODE_SIGN) && (this._keyInfo == null)) {
+
+         // create the KeyInfo
+         this._keyInfo = new KeyInfo(this._doc);
+
+         // get the Element from KeyInfo
+         Element keyInfoElement = this._keyInfo.getElement();
+         Element firstObject=null;
+         Node sibling= this._constructionElement.getFirstChild();
+         firstObject = XMLUtils.selectDsNode(sibling,Constants._TAG_OBJECT,0);
+	   	     
+            if (firstObject != null) {
+
+               // add it before the object
+               this._constructionElement.insertBefore(keyInfoElement,
+                                                      firstObject);
+               this._constructionElement
+                  .insertBefore(this._doc.createTextNode("\n"), firstObject);
+            } else {
+
+               // add it as the last element to the signature
+               this._constructionElement.appendChild(keyInfoElement);
+               XMLUtils.addReturnToElement(this._constructionElement);
+            }         
+      }
+
+      return this._keyInfo;
+   }
+
+   /**
+    * Appends an Object (not a <code>java.lang.Object</code> but an Object
+    * element) to the Signature. Please note that this is only possible
+    * when signing.
+    *
+    * @param object ds:Object to be appended.
+    * @throws XMLSignatureException When this object is used to verify.
+    */
+   public void appendObject(ObjectContainer object)
+           throws XMLSignatureException {
+
+      try {
+         if (this._state != MODE_SIGN) {
+            throw new XMLSignatureException(
+               "signature.operationOnlyBeforeSign");
+         }
+
+         this._constructionElement.appendChild(object.getElement());
+         XMLUtils.addReturnToElement(this._constructionElement);
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Returns the <code>i<code>th <code>ds:Object</code> child of the signature
+    * or null if no such <code>ds:Object</code> element exists.
+    *
+    * @param i
+    * @return the <code>i<code>th <code>ds:Object</code> child of the signature or null if no such <code>ds:Object</code> element exists.
+    */
+   public ObjectContainer getObjectItem(int i) {
+
+      Element objElem = XMLUtils.selectDsNode(this._constructionElement.getFirstChild(),
+            Constants._TAG_OBJECT,i);
+
+      try {
+         return new ObjectContainer(objElem, this._baseURI);
+      } catch (XMLSecurityException ex) {
+         return null;
+      }
+   }
+
+   /**
+    * Returns the number of all <code>ds:Object</code> elements.
+    *
+    * @return the number of all <code>ds:Object</code> elements.
+    */
+   public int getObjectLength() {
+      return this.length(Constants.SignatureSpecNS, Constants._TAG_OBJECT);
+   }
+
+   /**
+    * Digests all References in the SignedInfo, calculates the signature value and
+    * sets it in the SignatureValue Element.
+    *
+    * @param signingKey the {@link java.security.PrivateKey} or {@link javax.crypto.SecretKey} that is used to sign.
+    * @throws XMLSignatureException
+    */
+   public void sign(Key signingKey) throws XMLSignatureException {
+
+      if (signingKey instanceof PublicKey) {
+         throw new IllegalArgumentException(I18n
+            .translate("algorithms.operationOnlyVerification"));
+      }
+
+      try {
+         if (this._state == MODE_SIGN) {
+
+            // XMLUtils.indentSignature(this._constructionElement, "   ", 0);
+            // get the SignatureMethodElement
+            Element signatureMethodElement =
+               this._signedInfo.getSignatureMethodElement();
+
+            //Create a SignatureAlgorithm object
+            SignatureAlgorithm sa =
+               new SignatureAlgorithm(signatureMethodElement,
+                                      this.getBaseURI());
+
+            // initialize SignatureAlgorithm for signing
+            sa.initSign(signingKey);
+
+            SignedInfo si = this.getSignedInfo();
+
+            // generate digest values for all References in this SignedInfo
+            si.generateDigestValues();
+            OutputStream so=new UnsyncBufferedOutputStream(new SignerOutputStream(sa));
+            try {
+                so.close();
+            } catch (IOException e) {
+                //Imposible
+            }
+            // get the canonicalized bytes from SignedInfo
+            si.signInOctectStream(so);
+
+            byte jcebytes[] = sa.sign();
+
+            // set them on the SignateValue element
+            this.setSignatureValueElement(jcebytes);
+         }
+      } catch (CanonicalizationException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (InvalidCanonicalizerException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      }
+   }
+
+   /**
+    * Adds a {@link ResourceResolver} to enable the retrieval of resources.
+    *
+    * @param resolver
+    */
+   public void addResourceResolver(ResourceResolver resolver) {
+      this.getSignedInfo().addResourceResolver(resolver);
+   }
+
+   /**
+    * Adds a {@link ResourceResolverSpi} to enable the retrieval of resources.
+    *
+    * @param resolver
+    */
+   public void addResourceResolver(ResourceResolverSpi resolver) {
+      this.getSignedInfo().addResourceResolver(resolver);
+   }
+
+   /**
+    * Extracts the public key from the certificate and verifies if the signature
+    * is valid by re-digesting all References, comparing those against the
+    * stored DigestValues and then checking to see if the Signatures match on
+    * the SignedInfo.
+    *
+    * @param cert Certificate that contains the public key part of the keypair that was used to sign.
+    * @return true if the signature is valid, false otherwise
+    * @throws XMLSignatureException
+    */
+   public boolean checkSignatureValue(X509Certificate cert)
+           throws XMLSignatureException {
+
+      // see if cert is null
+      if (cert != null) {
+
+         //check the values with the public key from the cert
+         return this.checkSignatureValue(cert.getPublicKey());
+      } 
+      
+      Object exArgs[] = { "Didn't get a certificate" };
+      throw new XMLSignatureException("empty", exArgs);
+      
+   }
+
+   /**
+    * Verifies if the signature is valid by redigesting all References,
+    * comparing those against the stored DigestValues and then checking to see
+    * if the Signatures match on the SignedInfo.
+    *
+    * @param pk {@link java.security.PublicKey} part of the keypair or {@link javax.crypto.SecretKey} that was used to sign
+    * @return true if the signature is valid, false otherwise
+    * @throws XMLSignatureException
+    */
+   public boolean checkSignatureValue(Key pk) throws XMLSignatureException {
+
+      //COMMENT: pk suggests it can only be a public key?
+      //check to see if the key is not null
+      if (pk == null) {
+         Object exArgs[] = { "Didn't get a key" };
+
+         throw new XMLSignatureException("empty", exArgs);
+      }
+
+      // all references inside the signedinfo need to be dereferenced and
+      // digested again to see if the outcome matches the stored value in the
+      // SignedInfo.
+      // If _followManifestsDuringValidation is true it will do the same for
+      // References inside a Manifest.
+      try {
+         if (!this.getSignedInfo()
+                 .verify(this._followManifestsDuringValidation)) {
+            return false;
+         }
+
+         //create a SignatureAlgorithms from the SignatureMethod inside
+         //SignedInfo. This is used to validate the signature.
+         SignatureAlgorithm sa =
+            new SignatureAlgorithm(this.getSignedInfo()
+               .getSignatureMethodElement(), this.getBaseURI());
+         if (log.isDebugEnabled()) {
+         	log.debug("SignatureMethodURI = " + sa.getAlgorithmURI());
+         	log.debug("jceSigAlgorithm    = " + sa.getJCEAlgorithmString());
+         	log.debug("jceSigProvider     = " + sa.getJCEProviderName());
+         	log.debug("PublicKey = " + pk);
+         }
+         sa.initVerify(pk);
+
+         // Get the canonicalized (normalized) SignedInfo
+         SignerOutputStream so=new SignerOutputStream(sa);
+         OutputStream bos=new UnsyncBufferedOutputStream(so);
+         this._signedInfo.signInOctectStream(bos);
+         try {
+			bos.close();
+		} catch (IOException e) {
+			//Imposible
+		}
+         
+         //retrieve the byte[] from the stored signature
+         byte sigBytes[] = this.getSignatureValue();
+
+
+         //Have SignatureAlgorithm sign the input bytes and compare them to the
+         //bytes that were stored in the signature.
+         boolean verify = sa.verify(sigBytes);
+
+         return verify;
+      } catch (XMLSecurityException ex) {
+         throw new XMLSignatureException("empty", ex);
+      } 
+   }
+
+   /**
+    * Add a Reference with full parameters to this Signature
+    *
+    * @param referenceURI URI of the resource to be signed. Can be null in which
+    * case the dereferencing is application specific. Can be "" in which it's
+    * the parent node (or parent document?). There can only be one "" in each
+    * signature.
+    * @param trans Optional list of transformations to be done before digesting
+    * @param digestURI Mandatory URI of the digesting algorithm to use.
+    * @param ReferenceId Optional id attribute for this Reference
+    * @param ReferenceType Optional mimetype for the URI
+    * @throws XMLSignatureException
+    */
+   public void addDocument(
+           String referenceURI, Transforms trans, String digestURI, String ReferenceId, String ReferenceType)
+              throws XMLSignatureException {
+      this._signedInfo.addDocument(this._baseURI, referenceURI, trans,
+                                   digestURI, ReferenceId, ReferenceType);
+   }
+
+   /**
+    * This method is a proxy method for the {@link Manifest#addDocument} method.
+    *
+    * @param referenceURI URI according to the XML Signature specification.
+    * @param trans List of transformations to be applied.
+    * @param digestURI URI of the digest algorithm to be used.
+    * @see Manifest#addDocument
+    * @throws XMLSignatureException
+    */
+   public void addDocument(
+           String referenceURI, Transforms trans, String digestURI)
+              throws XMLSignatureException {
+      this._signedInfo.addDocument(this._baseURI, referenceURI, trans,
+                                   digestURI, null, null);
+   }
+
+   /**
+    * Adds a Reference with just the URI and the transforms. This used the
+    * SHA1 algorithm as a default digest algorithm.
+    *
+    * @param referenceURI URI according to the XML Signature specification.
+    * @param trans List of transformations to be applied.
+    * @throws XMLSignatureException
+    */
+   public void addDocument(String referenceURI, Transforms trans)
+           throws XMLSignatureException {
+      this._signedInfo.addDocument(this._baseURI, referenceURI, trans,
+                                   Constants.ALGO_ID_DIGEST_SHA1, null, null);
+   }
+
+   /**
+    * Add a Reference with just this URI. It uses SHA1 by default as the digest
+    * algorithm
+    *
+    * @param referenceURI URI according to the XML Signature specification.
+    * @throws XMLSignatureException
+    */
+   public void addDocument(String referenceURI) throws XMLSignatureException {
+      this._signedInfo.addDocument(this._baseURI, referenceURI, null,
+                                   Constants.ALGO_ID_DIGEST_SHA1, null, null);
+   }
+
+   /**
+    * Add an X509 Certificate to the KeyInfo. This will include the whole cert
+    * inside X509Data/X509Certificate tags.
+    *
+    * @param cert Certificate to be included. This should be the certificate of the key that was used to sign.
+    * @throws XMLSecurityException
+    */
+   public void addKeyInfo(X509Certificate cert) throws XMLSecurityException {
+
+      X509Data x509data = new X509Data(this._doc);
+
+      x509data.addCertificate(cert);
+      this.getKeyInfo().add(x509data);
+   }
+
+   /**
+    * Add this public key to the KeyInfo. This will include the complete key in
+    * the KeyInfo structure.
+    *
+    * @param pk
+    */
+   public void addKeyInfo(PublicKey pk) {
+      this.getKeyInfo().add(pk);
+   }
+
+   /**
+    * Proxy method for {@link SignedInfo#createSecretKey(byte[])}. If you want to
+    * create a MAC, this method helps you to obtain the {@link javax.crypto.SecretKey}
+    * from octets.
+    *
+    * @param secretKeyBytes
+    * @return the secret key created.
+    * @see SignedInfo#createSecretKey(byte[])
+    */
+   public SecretKey createSecretKey(byte[] secretKeyBytes)
+   {
+      return this.getSignedInfo().createSecretKey(secretKeyBytes);
+   }
+
+   /**
+    * Signal wether Manifest should be automatically validated.
+    * Checking the digests in References in a Signature are mandatory, but for
+    * References inside a Manifest it is application specific. This boolean is
+    * to indicate that the References inside Manifests should be validated.
+    *
+    * @param followManifests
+    * @see <a href="http://www.w3.org/TR/xmldsig-core/#sec-CoreValidation">Core validation section in the XML Signature Rec.</a>
+    */
+   public void setFollowNestedManifests(boolean followManifests) {
+      this._followManifestsDuringValidation = followManifests;
+   }
+
+   /**
+    * Get the local name of this element
+    *
+    * @return Constant._TAG_SIGNATURE
+    */
+   public String getBaseLocalName() {
+      return Constants._TAG_SIGNATURE;
+   }
+}
diff --git a/src/org/apache/xml/security/signature/XMLSignatureException.java b/src/org/apache/xml/security/signature/XMLSignatureException.java
new file mode 100644
index 0000000..9fb4a3f
--- /dev/null
+++ b/src/org/apache/xml/security/signature/XMLSignatureException.java
@@ -0,0 +1,86 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ * All XML Signature related exceptions inherit herefrom.
+ *
+ * @see MissingResourceFailureException InvalidDigestValueException InvalidSignatureValueException
+ * @author Christian Geuer-Pollmann
+ */
+public class XMLSignatureException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor XMLSignatureException
+    *
+    */
+   public XMLSignatureException() {
+      super();
+   }
+
+   /**
+    * Constructor XMLSignatureException
+    *
+    * @param _msgID
+    */
+   public XMLSignatureException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor XMLSignatureException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public XMLSignatureException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor XMLSignatureException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public XMLSignatureException(String _msgID, Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor XMLSignatureException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public XMLSignatureException(String _msgID, Object exArgs[],
+                                Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/signature/XMLSignatureInput.java b/src/org/apache/xml/security/signature/XMLSignatureInput.java
new file mode 100644
index 0000000..e893f5c
--- /dev/null
+++ b/src/org/apache/xml/security/signature/XMLSignatureInput.java
@@ -0,0 +1,612 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315OmitComments;
+import org.apache.xml.security.exceptions.XMLSecurityRuntimeException;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Class XMLSignatureInput
+ *
+ * @author Christian Geuer-Pollmann
+ * $todo$ check whether an XMLSignatureInput can be _both_, octet stream _and_ node set?
+ */
+public class XMLSignatureInput  implements Cloneable {
+	 static org.apache.commons.logging.Log log = 
+	        org.apache.commons.logging.LogFactory.getLog(XMLSignatureInput.class.getName());
+
+	/*
+     * The XMLSignature Input can be either:
+     *   A byteArray like with/or without InputStream.
+     *   Or a  nodeSet like defined either:
+     *                     * as a collection of nodes
+     *                     * or as subnode excluding or not commets and excluding or 
+     *                            not other nodes.
+	 */
+   /**
+    * Some InputStreams do not support the {@link java.io.InputStream#reset}
+    * method, so we read it in completely and work on our Proxy.
+    */
+   InputStream _inputOctetStreamProxy = null;
+   /**
+    * The original NodeSet for this XMLSignatureInput
+    */
+   Set _inputNodeSet = null;
+   /**
+    * The original Element
+    */
+   Node _subNode=null;
+   /**
+    * Exclude Node *for enveloped transformations*
+    */
+   Node excludeNode=null;
+   /**
+    * 
+    */
+   boolean excludeComments=false;
+   
+   boolean isNodeSet=false;
+   /**
+    * A cached bytes
+    */
+   byte []bytes=null;
+
+   /**
+    * Some Transforms may require explicit MIME type, charset (IANA registered "character set"), or other such information concerning the data they are receiving from an earlier Transform or the source data, although no Transform algorithm specified in this document needs such explicit information. Such data characteristics are provided as parameters to the Transform algorithm and should be described in the specification for the algorithm.
+    */   
+   private String _MIMEType = null;
+
+   /**
+    * Field _SourceURI 
+    */
+   private String _SourceURI = null;
+
+   /**
+    * Node Filter list.
+    */
+   List nodeFilters=new ArrayList();
+   
+   boolean needsToBeExpanded=false;
+   /**
+    * Check if the structured is needed to be circumbented.
+    * @return true if so.
+    */
+   public boolean isNeedsToBeExpanded() {
+	   return needsToBeExpanded;
+   }
+   
+   /**
+    * Set if the structured is needed to be circumbented.
+    * @param needsToBeExpanded true if so.
+    */
+   public void setNeedsToBeExpanded(boolean needsToBeExpanded) {
+	this.needsToBeExpanded = needsToBeExpanded;
+   }
+   OutputStream outputStream=null;
+
+   /**
+    * Construct a XMLSignatureInput from an octet array.
+    * <p>
+    * This is a comfort method, which internally converts the byte[] array into an InputStream
+    * <p>NOTE: no defensive copy</p>
+    * @param inputOctets an octet array which including XML document or node
+    */
+   public XMLSignatureInput(byte[] inputOctets) {
+
+      // NO  defensive copy
+   	  
+      //this._inputOctetStreamProxy = new ByteArrayInputStream(inputOctets);
+      this.bytes=inputOctets;
+   }
+
+
+      /**
+    * Constructs a <code>XMLSignatureInput</code> from an octet stream. The
+    * stream is directly read.
+    *
+    * @param inputOctetStream
+    */
+   public XMLSignatureInput(InputStream inputOctetStream)  {
+   	  this._inputOctetStreamProxy=inputOctetStream;
+   	  
+      //this(JavaUtils.getBytesFromStream(inputOctetStream));
+
+   }
+
+   /**
+    * Construct a XMLSignatureInput from a String.
+    * <p>
+    * This is a comfort method, which internally converts the String into a byte[] array using the {@link java.lang.String#getBytes()} method.
+    * @deprecated
+    * @param inputStr the input String which including XML document or node
+    */
+   public XMLSignatureInput(String inputStr) {
+      this(inputStr.getBytes());
+   }
+
+   /**
+    * Construct a XMLSignatureInput from a String with a given encoding.
+    * <p>
+    * This is a comfort method, which internally converts the String into a byte[] array using the {@link java.lang.String#getBytes()} method.
+    *
+    * @deprecated
+    * @param inputStr the input String with encoding <code>encoding</code>
+    * @param encoding the encoding of <code>inputStr</code>
+    * @throws UnsupportedEncodingException
+    */
+   public XMLSignatureInput(String inputStr, String encoding)
+           throws UnsupportedEncodingException {
+      this(inputStr.getBytes(encoding));
+   }
+
+   /**
+    * Construct a XMLSignatureInput from a subtree rooted by rootNode. This
+    * method included the node and <I>all</I> his descendants in the output.
+    *
+    * @param rootNode
+    */
+   public XMLSignatureInput(Node rootNode)
+   {
+      this._subNode = rootNode;
+   }
+
+   /**
+    * Constructor XMLSignatureInput
+    *
+    * @param inputNodeSet
+    * @param usedXPathAPI
+    */
+   public XMLSignatureInput(Set inputNodeSet) {
+       this._inputNodeSet = inputNodeSet;
+   }
+   
+   /**
+    * Returns the node set from input which was specified as the parameter of {@link XMLSignatureInput} constructor
+    *
+    * @return the node set
+    * @throws SAXException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws CanonicalizationException
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    */
+   public Set getNodeSet() throws CanonicalizationException, ParserConfigurationException, IOException, SAXException {
+   	      return getNodeSet(false);
+   }
+   /**
+    * Returns the node set from input which was specified as the parameter of {@link XMLSignatureInput} constructor
+    * @param circunvent
+    *
+    * @return the node set
+    * @throws SAXException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws CanonicalizationException
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    */
+   public Set getNodeSet(boolean circunvent)
+           throws ParserConfigurationException, IOException, SAXException,
+                  CanonicalizationException {
+      if (this._inputNodeSet!=null) {
+      	  return this._inputNodeSet;
+      }
+   	  if (this.isElement()) {
+            
+   	  	    if (circunvent) {           
+   	  	    	XMLUtils.circumventBug2650(XMLUtils.getOwnerDocument(_subNode));
+            }
+            this._inputNodeSet = new HashSet();
+            XMLUtils.getSet(_subNode,this._inputNodeSet, excludeNode, this.excludeComments);
+            
+   	  	    return this._inputNodeSet;
+   	  }
+       else if (this.isOctetStream()) {
+         convertToNodes();
+         HashSet result=new HashSet();
+         XMLUtils.getSet(_subNode, result,null,false); 
+            //this._inputNodeSet=result;
+            return result;         
+      }
+
+      throw new RuntimeException(
+         "getNodeSet() called but no input data present");
+   }
+
+   /**
+    * Returns the Octect stream(byte Stream) from input which was specified as the parameter of {@link XMLSignatureInput} constructor
+    *
+    * @return the Octect stream(byte Stream) from input which was specified as the parameter of {@link XMLSignatureInput} constructor
+    * @throws IOException
+    */
+   public InputStream getOctetStream()
+           throws IOException  {
+         	  
+      return getResetableInputStream();                 
+
+   }
+   /**
+     * @return real octect stream
+     */
+    public InputStream getOctetStreamReal () {
+       return this._inputOctetStreamProxy;
+   }
+   /**
+    * Returns the byte array from input which was specified as the parameter of {@link XMLSignatureInput} constructor
+    *
+    * @return the byte[] from input which was specified as the parameter of {@link XMLSignatureInput} constructor
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    */
+   public byte[] getBytes()
+           throws IOException, CanonicalizationException {
+    if (bytes!=null) {
+        return bytes;      
+      }
+   	  InputStream is = getResetableInputStream();
+   	  if (is!=null) {
+        //reseatable can read again bytes. 
+   	  	if (bytes==null) {
+            is.reset();       
+            bytes=JavaUtils.getBytesFromStream(is);
+   	  	} 	  	
+   	  	return bytes;   	  	      
+      }                    
+         Canonicalizer20010315OmitComments c14nizer =
+         		new Canonicalizer20010315OmitComments();                  
+        bytes=c14nizer.engineCanonicalize(this);         
+        return bytes;
+   }
+
+
+   /**
+    * Determines if the object has been set up with a Node set
+    *
+    * @return true is the object has been set up with a Node set
+    */
+   public boolean isNodeSet() {
+      return (( (this._inputOctetStreamProxy == null)
+              && (this._inputNodeSet != null) ) || isNodeSet);
+   }
+   /**
+    * Determines if the object has been set up with an Element
+    *
+    * @return true is the object has been set up with a Node set
+    */
+   public boolean isElement() {
+   		return ((this._inputOctetStreamProxy==null)&& (this._subNode!=null)
+   				&& (this._inputNodeSet==null) && !isNodeSet
+   				);
+   }
+   
+   /**
+    * Determines if the object has been set up with an octet stream
+    *
+    * @return true is the object has been set up with an octet stream
+    */
+   public boolean isOctetStream() {
+      return ( ((this._inputOctetStreamProxy != null) || bytes!=null)
+              && ((this._inputNodeSet == null) && _subNode ==null));
+   }
+   
+   /**
+    * Determines if the object has been set up with a ByteArray
+    *
+    * @return true is the object has been set up with an octet stream
+    */
+   public boolean isByteArray() {
+      return ( (bytes!=null)
+              && ((this._inputNodeSet == null) && _subNode ==null));
+   }
+
+   /**
+    * Is the object correctly set up?
+    *
+    * @return true if the object has been set up correctly
+    */
+   public boolean isInitialized() {
+      return (this.isOctetStream() || this.isNodeSet());
+   }
+
+   /**
+    * Returns MIMEType
+    *
+    * @return MIMEType
+    */
+   public String getMIMEType() {
+      return this._MIMEType;
+   }
+
+   /**
+    * Sets MIMEType
+    *
+    * @param MIMEType
+    */
+   public void setMIMEType(String MIMEType) {
+      this._MIMEType = MIMEType;
+   }
+
+   /**
+    * Return SourceURI
+    *
+    * @return SourceURI
+    */
+   public String getSourceURI() {
+      return this._SourceURI;
+   }
+
+   /**
+    * Sets SourceURI
+    *
+    * @param SourceURI
+    */
+   public void setSourceURI(String SourceURI) {
+      this._SourceURI = SourceURI;
+   }
+
+   
+   /**
+    * Method toString
+    * @inheritDoc
+    *
+    */
+   public String toString() {
+
+      if (this.isNodeSet()) {
+         return "XMLSignatureInput/NodeSet/" + this._inputNodeSet.size()
+                   + " nodes/" + this.getSourceURI();         
+      } 
+      if (this.isElement()) {
+        return "XMLSignatureInput/Element/" + this._subNode
+        + " exclude "+ this.excludeNode + " comments:" + 
+        this.excludeComments
+        +"/" + this.getSourceURI();
+      }
+         try {
+            return "XMLSignatureInput/OctetStream/" + this.getBytes().length
+                   + " octets/" + this.getSourceURI();
+         } catch (Exception ex) {
+            return "XMLSignatureInput/OctetStream//" + this.getSourceURI();
+         }
+      
+   }
+
+   /**
+    * Method getHTMLRepresentation
+    *
+    * @throws XMLSignatureException
+    * @return The HTML representation for this XMLSignature
+    */
+   public String getHTMLRepresentation() throws XMLSignatureException {
+
+      XMLSignatureInputDebugger db = new XMLSignatureInputDebugger(this);
+
+      return db.getHTMLRepresentation();
+   }
+
+   /**
+    * Method getHTMLRepresentation
+    *
+    * @param inclusiveNamespaces
+    * @throws XMLSignatureException
+    * @return The HTML representation for this XMLSignature
+    */
+   public String getHTMLRepresentation(Set inclusiveNamespaces)
+           throws XMLSignatureException {
+
+      XMLSignatureInputDebugger db = new XMLSignatureInputDebugger( this,
+                                        inclusiveNamespaces);
+
+      return db.getHTMLRepresentation();
+   }
+
+   /**
+    * Gets the exclude node of this XMLSignatureInput
+    * @return Returns the excludeNode.
+    */
+    public Node getExcludeNode() {
+	   return excludeNode;
+    }
+    
+    /**
+     * Sets the exclude node of this XMLSignatureInput
+     * @param excludeNode The excludeNode to set.
+     */
+     public void setExcludeNode(Node excludeNode) {
+	    this.excludeNode = excludeNode;
+     }
+
+     /**
+      * Gets the node of this XMLSignatureInput
+      * @return The excludeNode set.
+      */
+     public Node getSubNode() {
+  	    return _subNode;
+     }
+     /**
+      * @return Returns the excludeComments.
+      */
+     public boolean isExcludeComments() {
+     	return excludeComments;
+     }
+     /**
+      * @param excludeComments The excludeComments to set.
+      */
+     public void setExcludeComments(boolean excludeComments) {
+     	this.excludeComments = excludeComments;
+     }
+
+	/**
+	 * @param diOs
+	 * @throws IOException
+	 * @throws CanonicalizationException
+	 */
+	public void updateOutputStream(OutputStream diOs) throws CanonicalizationException, IOException {        
+        if (diOs==outputStream) {
+        	return;
+        }
+        if (bytes!=null) {
+            diOs.write(bytes);
+            return;      
+         }else if (_inputOctetStreamProxy==null) {                    
+             Canonicalizer20010315OmitComments c14nizer =
+                    new Canonicalizer20010315OmitComments();       
+             c14nizer.setWriter(diOs);
+            c14nizer.engineCanonicalize(this); 
+            return;                  
+          } else {
+            InputStream is = getResetableInputStream();
+            if (bytes!=null) {
+                //already read write it, can be rea.
+            	diOs.write(bytes,0,bytes.length);
+                return;
+            }            
+            is.reset();            
+            int num;
+            byte[] bytesT = new byte[1024];
+            while ((num=is.read(bytesT))>0) {
+            	diOs.write(bytesT,0,num);
+            }
+                
+          }
+		
+	}
+
+
+	/**
+	 * @param os
+	 */
+	public void setOutputStream(OutputStream os) {
+		outputStream=os;
+		
+	}
+    protected InputStream getResetableInputStream() throws IOException{    	
+    	if ((_inputOctetStreamProxy instanceof ByteArrayInputStream) ) {            
+            if (!_inputOctetStreamProxy.markSupported()) {
+                throw new RuntimeException("Accepted as Markable but not truly been"+_inputOctetStreamProxy);
+            }
+           return _inputOctetStreamProxy;
+        }
+        if (bytes!=null) {
+            _inputOctetStreamProxy=new ByteArrayInputStream(bytes);
+            return _inputOctetStreamProxy;
+        }
+        if (_inputOctetStreamProxy ==null)
+            return null;
+        if (_inputOctetStreamProxy.markSupported()) {
+            log.info("Mark Suported but not used as reset");
+        }
+    	bytes=JavaUtils.getBytesFromStream(_inputOctetStreamProxy);
+    	_inputOctetStreamProxy.close();
+    	_inputOctetStreamProxy=new ByteArrayInputStream(bytes);
+        return _inputOctetStreamProxy;
+    }
+        
+
+	/**
+	 * @param filter
+	 */
+	public void addNodeFilter(NodeFilter filter) {	
+		if (isOctetStream()) {
+			try {
+				convertToNodes();
+			} catch (Exception e) {
+				throw new XMLSecurityRuntimeException("signature.XMLSignatureInput.nodesetReference",e);
+			}
+		}
+		nodeFilters.add(filter);
+		
+	}
+
+	/**
+	 * @return the node filters
+	 */
+	public List getNodeFilters() {
+		// TODO Auto-generated method stub
+		return nodeFilters;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void setNodeSet(boolean b) {
+		isNodeSet=b;
+		
+	}
+	
+	void convertToNodes() throws CanonicalizationException, ParserConfigurationException, IOException, SAXException{
+		DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+        dfactory.setValidating(false);        
+        dfactory.setNamespaceAware(true);
+        DocumentBuilder db = dfactory.newDocumentBuilder();
+        // select all nodes, also the comments.        
+        try {
+           db.setErrorHandler(new org.apache.xml.security.utils
+              .IgnoreAllErrorHandler());
+
+           Document doc = db.parse(this.getOctetStream());
+           
+           XMLUtils.circumventBug2650(doc);
+           this._subNode=doc.getDocumentElement();                    
+        } catch (SAXException ex) {
+
+           // if a not-wellformed nodeset exists, put a container around it...
+           ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+           baos.write("<container>".getBytes());
+           baos.write(this.getBytes());
+           baos.write("</container>".getBytes());
+
+           byte result[] = baos.toByteArray();
+           Document document = db.parse(new ByteArrayInputStream(result));
+           this._subNode=document.getDocumentElement().getFirstChild().getFirstChild();				
+        }
+        this._inputOctetStreamProxy=null;
+        this.bytes=null;
+	}
+}
diff --git a/src/org/apache/xml/security/signature/XMLSignatureInputDebugger.java b/src/org/apache/xml/security/signature/XMLSignatureInputDebugger.java
new file mode 100644
index 0000000..bc60d17
--- /dev/null
+++ b/src/org/apache/xml/security/signature/XMLSignatureInputDebugger.java
@@ -0,0 +1,714 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.signature;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Arrays;
+import java.util.Set;
+
+import org.apache.xml.security.c14n.helper.AttrCompare;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.ProcessingInstruction;
+
+/**
+ * Class XMLSignatureInputDebugger
+ * 
+ * @author $Author$
+ * @version $Revision$
+ */
+public class XMLSignatureInputDebugger {
+
+
+
+	/** Field _xmlSignatureInput */
+	private Set _xpathNodeSet;
+
+	private Set _inclusiveNamespaces;
+
+	/** Field _doc */
+	private Document _doc = null;
+
+	/** Field _writer */
+	private Writer _writer = null;
+
+	// J-
+	// public static final String HTMLPrefix = "<!DOCTYPE HTML PUBLIC
+	// \"-//W3C//DTD HTML 4.01 Transitional//EN\"><html><head><style
+	// type=\"text/css\"><!-- .INCLUDED { color: #000000; background-color:
+	// #FFFFFF; font-weight: bold; } .EXCLUDED { color: #666666;
+	// background-color: #999999; } .INCLUDEDINCLUSIVENAMESPACE { color:
+	// #0000FF; background-color: #FFFFFF; font-weight: bold; font-style:
+	// italic; } .EXCLUDEDINCLUSIVENAMESPACE { color: #0000FF; background-color:
+	// #999999; font-style: italic; } --> </style> </head><body
+	// bgcolor=\"#999999\"><pre>";
+	/** The HTML Prefix* */
+	static final String HTMLPrefix = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"
+			+ "<html>\n"
+			+ "<head>\n"
+			+ "<title>Caninical XML node set</title>\n"
+			+ "<style type=\"text/css\">\n"
+			+ "<!-- \n"
+			+ ".INCLUDED { \n"
+			+ "   color: #000000; \n"
+			+ "   background-color: \n"
+			+ "   #FFFFFF; \n"
+			+ "   font-weight: bold; } \n"
+			+ ".EXCLUDED { \n"
+			+ "   color: #666666; \n"
+			+ "   background-color: \n"
+			+ "   #999999; } \n"
+			+ ".INCLUDEDINCLUSIVENAMESPACE { \n"
+			+ "   color: #0000FF; \n"
+			+ "   background-color: #FFFFFF; \n"
+			+ "   font-weight: bold; \n"
+			+ "   font-style: italic; } \n"
+			+ ".EXCLUDEDINCLUSIVENAMESPACE { \n"
+			+ "   color: #0000FF; \n"
+			+ "   background-color: #999999; \n"
+			+ "   font-style: italic; } \n"
+			+ "--> \n"
+			+ "</style> \n"
+			+ "</head>\n"
+			+ "<body bgcolor=\"#999999\">\n"
+			+ "<h1>Explanation of the output</h1>\n"
+			+ "<p>The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.</p>\n"
+			+ "<ul>\n"
+			+ "<li class=\"INCLUDED\">A node which is in the node set is labeled using the INCLUDED style.</li>\n"
+			+ "<li class=\"EXCLUDED\">A node which is <em>NOT</em> in the node set is labeled EXCLUDED style.</li>\n"
+			+ "<li class=\"INCLUDEDINCLUSIVENAMESPACE\">A namespace which is in the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>\n"
+			+ "<li class=\"EXCLUDEDINCLUSIVENAMESPACE\">A namespace which is in NOT the node set AND in the InclusiveNamespaces PrefixList is labeled using the INCLUDEDINCLUSIVENAMESPACE style.</li>\n"
+			+ "</ul>\n" + "<h1>Output</h1>\n" + "<pre>\n";
+
+	/** HTML Suffix * */
+	static final String HTMLSuffix = "</pre></body></html>";
+
+	static final String HTMLExcludePrefix = "<span class=\"EXCLUDED\">";
+
+	static final String HTMLExcludeSuffix = "</span>";
+
+	static final String HTMLIncludePrefix = "<span class=\"INCLUDED\">";
+
+	static final String HTMLIncludeSuffix = "</span>";
+
+	static final String HTMLIncludedInclusiveNamespacePrefix = "<span class=\"INCLUDEDINCLUSIVENAMESPACE\">";
+
+	static final String HTMLIncludedInclusiveNamespaceSuffix = "</span>";
+
+	static final String HTMLExcludedInclusiveNamespacePrefix = "<span class=\"EXCLUDEDINCLUSIVENAMESPACE\">";
+
+	static final String HTMLExcludedInclusiveNamespaceSuffix = "</span>";
+
+	private static final int NODE_BEFORE_DOCUMENT_ELEMENT = -1;
+
+	private static final int NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT = 0;
+
+	private static final int NODE_AFTER_DOCUMENT_ELEMENT = 1;
+
+	static final AttrCompare ATTR_COMPARE = new AttrCompare();
+
+	// J+
+	private XMLSignatureInputDebugger() {
+		// do nothing
+	}
+
+	/**
+	 * Constructor XMLSignatureInputDebugger
+	 * 
+	 * @param xmlSignatureInput the signatur to pretty print
+	 */
+	public XMLSignatureInputDebugger(
+			XMLSignatureInput xmlSignatureInput) {
+
+		if (!xmlSignatureInput.isNodeSet()) {
+			this._xpathNodeSet = null;
+		} else {
+			this._xpathNodeSet = xmlSignatureInput._inputNodeSet;
+		}
+	}
+
+	/**
+	 * Constructor XMLSignatureInputDebugger
+	 * 
+	 * @param xmlSignatureInput the signatur to pretty print
+	 * @param inclusiveNamespace
+	 */
+	public XMLSignatureInputDebugger(
+			XMLSignatureInput xmlSignatureInput, Set inclusiveNamespace) {
+
+		this(xmlSignatureInput);
+
+		this._inclusiveNamespaces = inclusiveNamespace;
+	}
+
+	/**
+	 * Method getHTMLRepresentation
+	 * 
+	 * @return The HTML Representation.
+	 * @throws XMLSignatureException
+	 */
+	public String getHTMLRepresentation() throws XMLSignatureException {
+
+		if ((this._xpathNodeSet == null) || (this._xpathNodeSet.size() == 0)) {
+			return HTMLPrefix + "<blink>no node set, sorry</blink>"
+					+ HTMLSuffix;
+		}
+
+		{
+
+			// get only a single node as anchor to fetch the owner document
+			Node n = (Node) this._xpathNodeSet.iterator().next();
+
+			this._doc = XMLUtils.getOwnerDocument(n);
+		}
+
+		try {
+			this._writer = new StringWriter();
+
+			this.canonicalizeXPathNodeSet(this._doc);
+			this._writer.close();
+
+			return this._writer.toString();
+		} catch (IOException ex) {
+			throw new XMLSignatureException("empty", ex);
+		} finally {
+			this._xpathNodeSet = null;
+			this._doc = null;
+			this._writer = null;
+		}
+	}
+
+	/**
+	 * Method canonicalizeXPathNodeSet
+	 * 
+	 * @param currentNode
+	 * @throws XMLSignatureException
+	 * @throws IOException
+	 */
+	private void canonicalizeXPathNodeSet(Node currentNode)
+			throws XMLSignatureException, IOException {
+
+		int currentNodeType = currentNode.getNodeType();
+		switch (currentNodeType) {
+
+		case Node.DOCUMENT_TYPE_NODE:
+		default:
+			break;
+
+		case Node.ENTITY_NODE:
+		case Node.NOTATION_NODE:
+		case Node.DOCUMENT_FRAGMENT_NODE:
+		case Node.ATTRIBUTE_NODE:
+			throw new XMLSignatureException("empty");
+		case Node.DOCUMENT_NODE:
+			this._writer.write(HTMLPrefix);
+
+			for (Node currentChild = currentNode.getFirstChild(); currentChild != null; currentChild = currentChild
+					.getNextSibling()) {
+				this.canonicalizeXPathNodeSet(currentChild);
+			}
+
+			this._writer.write(HTMLSuffix);
+			break;
+
+		case Node.COMMENT_NODE:
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludePrefix);
+			} else {
+				this._writer.write(HTMLExcludePrefix);
+			}
+
+			int position = getPositionRelativeToDocumentElement(currentNode);
+
+			if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
+				this._writer.write("\n");
+			}
+
+			this.outputCommentToWriter((Comment) currentNode);
+
+			if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
+				this._writer.write("\n");
+			}
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludeSuffix);
+			} else {
+				this._writer.write(HTMLExcludeSuffix);
+			}
+			break;
+
+		case Node.PROCESSING_INSTRUCTION_NODE:
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludePrefix);
+			} else {
+				this._writer.write(HTMLExcludePrefix);
+			}
+
+			position = getPositionRelativeToDocumentElement(currentNode);
+
+			if (position == NODE_AFTER_DOCUMENT_ELEMENT) {
+				this._writer.write("\n");
+			}
+
+			this.outputPItoWriter((ProcessingInstruction) currentNode);
+
+			if (position == NODE_BEFORE_DOCUMENT_ELEMENT) {
+				this._writer.write("\n");
+			}
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludeSuffix);
+			} else {
+				this._writer.write(HTMLExcludeSuffix);
+			}
+			break;
+
+		case Node.TEXT_NODE:
+		case Node.CDATA_SECTION_NODE:
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludePrefix);
+			} else {
+				this._writer.write(HTMLExcludePrefix);
+			}
+
+			outputTextToWriter(currentNode.getNodeValue());
+
+			for (Node nextSibling = currentNode.getNextSibling(); (nextSibling != null)
+					&& ((nextSibling.getNodeType() == Node.TEXT_NODE) || (nextSibling
+							.getNodeType() == Node.CDATA_SECTION_NODE)); nextSibling = nextSibling
+					.getNextSibling()) {
+
+				/*
+				 * The XPath data model allows to select only the first of a
+				 * sequence of mixed text and CDATA nodes. But we must output
+				 * them all, so we must search:
+				 * 
+				 * @see http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6329
+				 */
+				this.outputTextToWriter(nextSibling.getNodeValue());
+			}
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludeSuffix);
+			} else {
+				this._writer.write(HTMLExcludeSuffix);
+			}
+			break;
+
+		case Node.ELEMENT_NODE:
+			Element currentElement = (Element) currentNode;
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludePrefix);
+			} else {
+				this._writer.write(HTMLExcludePrefix);
+			}
+
+			this._writer.write("&lt;");
+			this._writer.write(currentElement.getTagName());
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludeSuffix);
+			} else {
+				this._writer.write(HTMLExcludeSuffix);
+			}
+
+			// we output all Attrs which are available
+			NamedNodeMap attrs = currentElement.getAttributes();
+			int attrsLength = attrs.getLength();
+			Object attrs2[] = new Object[attrsLength];
+
+			for (int i = 0; i < attrsLength; i++) {
+				attrs2[i] = attrs.item(i);
+			}
+
+			Arrays.sort(attrs2, ATTR_COMPARE);
+			Object attrs3[] = attrs2;
+
+			for (int i = 0; i < attrsLength; i++) {
+				Attr a = (Attr) attrs3[i];
+				boolean included = this._xpathNodeSet.contains(a);
+				boolean inclusive = this._inclusiveNamespaces.contains(a
+						.getName());
+
+				if (included) {
+					if (inclusive) {
+
+						// included and inclusive
+						this._writer
+								.write(HTMLIncludedInclusiveNamespacePrefix);
+					} else {
+
+						// included and not inclusive
+						this._writer.write(HTMLIncludePrefix);
+					}
+				} else {
+					if (inclusive) {
+
+						// excluded and inclusive
+						this._writer
+								.write(HTMLExcludedInclusiveNamespacePrefix);
+					} else {
+
+						// excluded and not inclusive
+						this._writer.write(HTMLExcludePrefix);
+					}
+				}
+
+				this.outputAttrToWriter(a.getNodeName(), a.getNodeValue());
+
+				if (included) {
+					if (inclusive) {
+
+						// included and inclusive
+						this._writer
+								.write(HTMLIncludedInclusiveNamespaceSuffix);
+					} else {
+
+						// included and not inclusive
+						this._writer.write(HTMLIncludeSuffix);
+					}
+				} else {
+					if (inclusive) {
+
+						// excluded and inclusive
+						this._writer
+								.write(HTMLExcludedInclusiveNamespaceSuffix);
+					} else {
+
+						// excluded and not inclusive
+						this._writer.write(HTMLExcludeSuffix);
+					}
+				}
+			}
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludePrefix);
+			} else {
+				this._writer.write(HTMLExcludePrefix);
+			}
+
+			this._writer.write("&gt;");
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludeSuffix);
+			} else {
+				this._writer.write(HTMLExcludeSuffix);
+			}
+
+			// traversal
+			for (Node currentChild = currentNode.getFirstChild(); currentChild != null; currentChild = currentChild
+					.getNextSibling()) {
+				this.canonicalizeXPathNodeSet(currentChild);
+			}
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludePrefix);
+			} else {
+				this._writer.write(HTMLExcludePrefix);
+			}
+
+			this._writer.write("&lt;/");
+			this._writer.write(currentElement.getTagName());
+			this._writer.write("&gt;");
+
+			if (this._xpathNodeSet.contains(currentNode)) {
+				this._writer.write(HTMLIncludeSuffix);
+			} else {
+				this._writer.write(HTMLExcludeSuffix);
+			}
+			break;
+		}
+	}
+
+	/**
+	 * Checks whether a Comment or ProcessingInstruction is before or after the
+	 * document element. This is needed for prepending or appending "\n"s.
+	 * 
+	 * @param currentNode
+	 *            comment or pi to check
+	 * @return NODE_BEFORE_DOCUMENT_ELEMENT,
+	 *         NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT or
+	 *         NODE_AFTER_DOCUMENT_ELEMENT
+	 * @see #NODE_BEFORE_DOCUMENT_ELEMENT
+	 * @see #NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT
+	 * @see #NODE_AFTER_DOCUMENT_ELEMENT
+	 */
+	private int getPositionRelativeToDocumentElement(Node currentNode) {
+
+		if (currentNode == null) {
+			return NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT;
+		}
+
+		Document doc = currentNode.getOwnerDocument();
+
+		if (currentNode.getParentNode() != doc) {
+			return NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT;
+		}
+
+		Element documentElement = doc.getDocumentElement();
+
+		if (documentElement == null) {
+			return NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT;
+		}
+
+		if (documentElement == currentNode) {
+			return NODE_NOT_BEFORE_OR_AFTER_DOCUMENT_ELEMENT;
+		}
+
+		for (Node x = currentNode; x != null; x = x.getNextSibling()) {
+			if (x == documentElement) {
+				return NODE_BEFORE_DOCUMENT_ELEMENT;
+			}
+		}
+
+		return NODE_AFTER_DOCUMENT_ELEMENT;
+	}
+
+	/**
+	 * Normalizes an {@link Attr}ibute value
+	 * 
+	 * The string value of the node is modified by replacing
+	 * <UL>
+	 * <LI>all ampersands (&) with <CODE>&amp;amp;</CODE></LI>
+	 * <LI>all open angle brackets (<) with <CODE>&amp;lt;</CODE></LI>
+	 * <LI>all quotation mark characters with <CODE>&amp;quot;</CODE></LI>
+	 * <LI>and the whitespace characters <CODE>#x9</CODE>, #xA, and #xD,
+	 * with character references. The character references are written in
+	 * uppercase hexadecimal with no leading zeroes (for example, <CODE>#xD</CODE>
+	 * is represented by the character reference <CODE>&amp;#xD;</CODE>)</LI>
+	 * </UL>
+	 * 
+	 * @param name
+	 * @param value
+	 * @throws IOException
+	 */
+	private void outputAttrToWriter(String name, String value)
+			throws IOException {
+
+		this._writer.write(" ");
+		this._writer.write(name);
+		this._writer.write("=\"");
+
+		int length = value.length();
+
+		for (int i = 0; i < length; i++) {
+			char c = value.charAt(i);
+
+			switch (c) {
+
+			case '&':
+				this._writer.write("&amp;amp;");
+				break;
+
+			case '<':
+				this._writer.write("&amp;lt;");
+				break;
+
+			case '"':
+				this._writer.write("&amp;quot;");
+				break;
+
+			case 0x09: // '\t'
+				this._writer.write("&amp;#x9;");
+				break;
+
+			case 0x0A: // '\n'
+				this._writer.write("&amp;#xA;");
+				break;
+
+			case 0x0D: // '\r'
+				this._writer.write("&amp;#xD;");
+				break;
+
+			default:
+				this._writer.write(c);
+				break;
+			}
+		}
+
+		this._writer.write("\"");
+	}
+
+	/**
+	 * Normalizes a {@link org.w3c.dom.Comment} value
+	 * 
+	 * @param currentPI
+	 * @throws IOException
+	 */
+	private void outputPItoWriter(ProcessingInstruction currentPI)
+			throws IOException {
+
+		if (currentPI == null) {
+			return;
+		}
+
+		this._writer.write("&lt;?");
+
+		String target = currentPI.getTarget();
+		int length = target.length();
+
+		for (int i = 0; i < length; i++) {
+			char c = target.charAt(i);
+
+			switch (c) {
+
+			case 0x0D:
+				this._writer.write("&amp;#xD;");
+				break;
+
+			case ' ':
+				this._writer.write("&middot;");
+				break;
+
+			case '\n':
+				this._writer.write("&para;\n");
+				break;
+
+			default:
+				this._writer.write(c);
+				break;
+			}
+		}
+
+		String data = currentPI.getData();
+
+		length = data.length();
+
+		if ((data != null) && (length > 0)) {
+			this._writer.write(" ");
+
+			for (int i = 0; i < length; i++) {
+				char c = data.charAt(i);
+
+				switch (c) {
+
+				case 0x0D:
+					this._writer.write("&amp;#xD;");
+					break;
+
+				default:
+					this._writer.write(c);
+					break;
+				}
+			}
+		}
+
+		this._writer.write("?&gt;");
+	}
+
+	/**
+	 * Method outputCommentToWriter
+	 * 
+	 * @param currentComment
+	 * @throws IOException
+	 */
+	private void outputCommentToWriter(Comment currentComment)
+			throws IOException {
+
+		if (currentComment == null) {
+			return;
+		}
+
+		this._writer.write("&lt;!--");
+
+		String data = currentComment.getData();
+		int length = data.length();
+
+		for (int i = 0; i < length; i++) {
+			char c = data.charAt(i);
+
+			switch (c) {
+
+			case 0x0D:
+				this._writer.write("&amp;#xD;");
+				break;
+
+			case ' ':
+				this._writer.write("&middot;");
+				break;
+
+			case '\n':
+				this._writer.write("&para;\n");
+				break;
+
+			default:
+				this._writer.write(c);
+				break;
+			}
+		}
+
+		this._writer.write("--&gt;");
+	}
+
+	/**
+	 * Method outputTextToWriter
+	 * 
+	 * @param text
+	 * @throws IOException
+	 */
+	private void outputTextToWriter(String text) throws IOException {
+
+		if (text == null) {
+			return;
+		}
+
+		int length = text.length();
+
+		for (int i = 0; i < length; i++) {
+			char c = text.charAt(i);
+
+			switch (c) {
+
+			case '&':
+				this._writer.write("&amp;amp;");
+				break;
+
+			case '<':
+				this._writer.write("&amp;lt;");
+				break;
+
+			case '>':
+				this._writer.write("&amp;gt;");
+				break;
+
+			case 0xD:
+				this._writer.write("&amp;#xD;");
+				break;
+
+			case ' ':
+				this._writer.write("&middot;");
+				break;
+
+			case '\n':
+				this._writer.write("&para;\n");
+				break;
+
+			default:
+				this._writer.write(c);
+				break;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/org/apache/xml/security/signature/package.html b/src/org/apache/xml/security/signature/package.html
new file mode 100644
index 0000000..87c61d7
--- /dev/null
+++ b/src/org/apache/xml/security/signature/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+XML Signature specific classes.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/transforms/InvalidTransformException.java b/src/org/apache/xml/security/transforms/InvalidTransformException.java
new file mode 100644
index 0000000..c44f44f
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/InvalidTransformException.java
@@ -0,0 +1,84 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class InvalidTransformException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor InvalidTransformException
+    *
+    */
+   public InvalidTransformException() {
+      super();
+   }
+
+   /**
+    * Constructor InvalidTransformException
+    *
+    * @param _msgId
+    */
+   public InvalidTransformException(String _msgId) {
+      super(_msgId);
+   }
+
+   /**
+    * Constructor InvalidTransformException
+    *
+    * @param _msgId
+    * @param exArgs
+    */
+   public InvalidTransformException(String _msgId, Object exArgs[]) {
+      super(_msgId, exArgs);
+   }
+
+   /**
+    * Constructor InvalidTransformException
+    *
+    * @param _msgId
+    * @param _originalException
+    */
+   public InvalidTransformException(String _msgId, Exception _originalException) {
+      super(_msgId, _originalException);
+   }
+
+   /**
+    * Constructor InvalidTransformException
+    *
+    * @param _msgId
+    * @param exArgs
+    * @param _originalException
+    */
+   public InvalidTransformException(String _msgId, Object exArgs[],
+                                    Exception _originalException) {
+      super(_msgId, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/Transform.java b/src/org/apache/xml/security/transforms/Transform.java
new file mode 100644
index 0000000..d4a1234
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/Transform.java
@@ -0,0 +1,378 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms;
+
+
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.HelperNodeList;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Implements the behaviour of the <code>ds:Transform</code> element.
+ *
+ * This <code>Transform</code>(Factory) class role as the Factory and Proxy of
+ * implemanting class that have the functionality of <a
+ * href=http://www.w3.org/TR/xmldsig-core/#sec-TransformAlg>a Transform
+ * algorithm</a>.
+ * Implements the Factory and Proxy pattern for ds:Transform algorithms.
+ *
+ * @author Christian Geuer-Pollmann
+ * @see Transforms
+ * @see TransformSpi
+ *
+ */
+public final class Transform extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Transform.class.getName());
+
+   /** Field _alreadyInitialized */
+   static boolean _alreadyInitialized = false;
+
+   /** All available Transform classes are registered here */
+   static Map _transformHash = null;
+   
+   static Map classesHash = new HashMap();
+
+   /** Field transformSpi */
+   protected TransformSpi transformSpi = null;
+
+   /**
+    * Constructs {@link Transform}
+    *
+    * @param doc the {@link Document} in which <code>Transform</code> will be placed
+    * @param algorithmURI URI representation of 
+    * <code>Transform algorithm</code> will be specified as parameter of 
+    * {@link #getInstance(Document, String)}, when generate. </br>
+    * @param contextNodes the child node list of <code>Transform</code> element
+    * @throws InvalidTransformException
+    */
+   public Transform(Document doc, String algorithmURI, NodeList contextNodes)
+           throws InvalidTransformException {
+
+      super(doc);
+
+         this._constructionElement.setAttributeNS(null, Constants._ATT_ALGORITHM,
+                                                algorithmURI);
+
+         this.transformSpi  =
+            Transform.getImplementingClass(algorithmURI);
+		 
+         if(transformSpi == null) {
+             Object exArgs[] = { algorithmURI };
+
+             throw new InvalidTransformException(
+                "signature.Transform.UnknownTransform", exArgs);
+         }
+         if (log.isDebugEnabled()) {
+         	log.debug("Create URI \"" + algorithmURI + "\" class \""
+                   + transformSpi.getClass() + "\"");
+         	log.debug("The NodeList is " + contextNodes);
+         }
+
+         // create the custom Transform object        
+         this.transformSpi.setTransform(this);
+
+         // give it to the current document
+         if (contextNodes != null) {
+            /*
+            while (contextNodes.getLength() > 0) {
+               this._constructionElement.appendChild(contextNodes.item(0));
+            }
+            */
+
+            for (int i = 0; i < contextNodes.getLength(); i++) {
+               this._constructionElement.appendChild(contextNodes.item(i).cloneNode(true));
+            }
+
+         }
+      
+   }
+
+   /**
+    * This constructor can only be called from the {@link Transforms} object, so
+    * it's protected.
+    *
+    * @param element <code>ds:Transform</code> element
+    * @param BaseURI the URI of the resource where the XML instance was stored
+    * @throws InvalidTransformException
+    * @throws TransformationException
+    * @throws XMLSecurityException
+    */
+   public Transform(Element element, String BaseURI)
+           throws InvalidTransformException, TransformationException,
+                  XMLSecurityException {
+
+      super(element, BaseURI);
+
+      // retrieve Algorithm Attribute from ds:Transform
+      String AlgorithmURI = element.getAttributeNS(null, Constants._ATT_ALGORITHM);
+
+      if ((AlgorithmURI == null) || (AlgorithmURI.length() == 0)) {
+         Object exArgs[] = { Constants._ATT_ALGORITHM,
+                             Constants._TAG_TRANSFORM };
+
+         throw new TransformationException("xml.WrongContent", exArgs);
+      }
+
+      try {
+        // Class implementingClass = (Class) _transformHash.get(AlgorithmURI);		 
+         this.transformSpi = Transform.getImplementingClass(AlgorithmURI);
+           // (TransformSpi) implementingClass.newInstance();
+
+         this.transformSpi.setTransform(this);
+     
+      } catch (NullPointerException e) {
+		  Object exArgs[] = { AlgorithmURI };
+
+	         throw new InvalidTransformException(
+	            "signature.Transform.UnknownTransform", exArgs);
+	}
+   }
+
+   /**
+    * Generates a Transform object that implements the specified <code>Transform algorithm</code> URI.
+    *
+    * @param algorithmURI <code>Transform algorithm</code> URI representation, such as specified in <a href=http://www.w3.org/TR/xmldsig-core/#sec-TransformAlg>Transform algorithm </a>
+    * @param doc the proxy {@link Document}
+    * @return <code>{@link Transform}</code> object
+    * @throws InvalidTransformException
+    */
+   public static final Transform getInstance(
+           Document doc, String algorithmURI) throws InvalidTransformException {
+      return Transform.getInstance(doc, algorithmURI, (NodeList) null);
+   }
+
+   /**
+    * Generates a Transform object that implements the specified <code>Transform algorithm</code> URI.
+    *
+    * @param algorithmURI <code>Transform algorithm</code> URI representation, such as specified in <a href=http://www.w3.org/TR/xmldsig-core/#sec-TransformAlg>Transform algorithm </a>
+    * @param contextChild the child element of <code>Transform</code> element
+    * @param doc the proxy {@link Document}
+    * @return <code>{@link Transform}</code> object
+    * @throws InvalidTransformException
+    */
+   public static final Transform getInstance(
+           Document doc, String algorithmURI, Element contextChild)
+              throws InvalidTransformException {
+
+      HelperNodeList contextNodes = new HelperNodeList();
+
+      contextNodes.appendChild(doc.createTextNode("\n"));
+      contextNodes.appendChild(contextChild);
+      contextNodes.appendChild(doc.createTextNode("\n"));
+
+      return Transform.getInstance(doc, algorithmURI, contextNodes);
+   }
+
+   /**
+    * Generates a Transform object that implements the specified <code>Transform algorithm</code> URI.
+    *
+    * @param algorithmURI <code>Transform algorithm</code> URI form, such as specified in <a href=http://www.w3.org/TR/xmldsig-core/#sec-TransformAlg>Transform algorithm </a>
+    * @param contextNodes the child node list of <code>Transform</code> element
+    * @param doc the proxy {@link Document}
+    * @return <code>{@link Transform}</code> object
+    * @throws InvalidTransformException
+    */
+   public static final Transform getInstance(
+           Document doc, String algorithmURI, NodeList contextNodes)
+              throws InvalidTransformException {
+      return new Transform(doc, algorithmURI, contextNodes);
+   }
+
+   /**
+    * Initalizes for this {@link Transform}
+    *
+    */
+   public static void init() {
+
+      if (!_alreadyInitialized) {
+         _transformHash = new HashMap(10);
+         _alreadyInitialized = true;
+      }
+   }
+
+   /**
+    * Registers implementing class of the Transform algorithm with algorithmURI
+    *
+    * @param algorithmURI algorithmURI URI representation of <code>Transform algorithm</code>
+    *  will be specified as parameter of {@link #getInstance(Document, String)}, when generate. </br>
+    * @param implementingClass <code>implementingClass</code> the implementing class of {@link TransformSpi}
+    * @throws AlgorithmAlreadyRegisteredException if specified algorithmURI is already registered
+    */
+   public static void register(String algorithmURI, String implementingClass)
+           throws AlgorithmAlreadyRegisteredException {
+
+      {
+
+         // are we already registered?
+        Object registeredClass=null;
+		try {
+			registeredClass = Transform.getImplementingClass(algorithmURI);
+		} catch (InvalidTransformException e1) {
+			Object exArgs[] = { algorithmURI, registeredClass };
+			throw new AlgorithmAlreadyRegisteredException(
+		               "algorithm.alreadyRegistered", exArgs);
+		}
+
+         if ((registeredClass != null) ) {
+            Object exArgs[] = { algorithmURI, registeredClass };
+            throw new AlgorithmAlreadyRegisteredException(
+               "algorithm.alreadyRegistered", exArgs);
+         }
+
+         try {
+			Transform._transformHash.put(algorithmURI, Class.forName(implementingClass));
+		} catch (ClassNotFoundException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+      }
+   }
+
+   /**
+    * Returns the URI representation of Transformation algorithm
+    *
+    * @return the URI representation of Transformation algorithm
+    */
+   public final String getURI() {
+      return this._constructionElement.getAttributeNS(null, Constants._ATT_ALGORITHM);
+   }
+
+   /**
+    * Transforms the input, and generats {@link XMLSignatureInput} as output.
+    * @param input input {@link XMLSignatureInput} which can supplied Octect Stream and NodeSet as Input of Transformation
+    *
+    * @return the {@link XMLSignatureInput} class as the result of transformation
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws TransformationException
+    */
+   public XMLSignatureInput performTransform(XMLSignatureInput input)
+           throws IOException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformationException {
+
+      XMLSignatureInput result = null;
+
+      try {
+         result = transformSpi.enginePerformTransform(input);
+      } catch (ParserConfigurationException ex) {
+         Object exArgs[] = { this.getURI(), "ParserConfigurationException" };
+
+         throw new CanonicalizationException(
+            "signature.Transform.ErrorDuringTransform", exArgs, ex);
+      } catch (SAXException ex) {
+         Object exArgs[] = { this.getURI(), "SAXException" };
+
+         throw new CanonicalizationException(
+            "signature.Transform.ErrorDuringTransform", exArgs, ex);
+      }
+
+      return result;
+   }
+   
+   /**
+    * Transforms the input, and generats {@link XMLSignatureInput} as output.
+    * @param input input {@link XMLSignatureInput} which can supplied Octect Stream and NodeSet as Input of Transformation
+    * @param os where to output the result of the last transformation
+    *
+    * @return the {@link XMLSignatureInput} class as the result of transformation
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws TransformationException
+    */
+   public XMLSignatureInput performTransform(XMLSignatureInput input, OutputStream os)
+   throws IOException, CanonicalizationException,
+          InvalidCanonicalizerException, TransformationException {
+
+   	    XMLSignatureInput result = null;
+
+   	    try {
+   	    	result = transformSpi.enginePerformTransform(input,os);
+   	    } catch (ParserConfigurationException ex) {
+   	    	Object exArgs[] = { this.getURI(), "ParserConfigurationException" };
+
+   	    	throw new CanonicalizationException(
+   	    			"signature.Transform.ErrorDuringTransform", exArgs, ex);
+   	    } catch (SAXException ex) {
+   	    	Object exArgs[] = { this.getURI(), "SAXException" };
+
+   	    	throw new CanonicalizationException(
+   	    			"signature.Transform.ErrorDuringTransform", exArgs, ex);
+   	    }
+
+   	    return result;
+   }
+
+   /**
+    * Method getImplementingClass
+    *
+    * @param URI
+    * @return The name of the class implementing the URI.
+ * @throws InvalidTransformException 
+    */
+   private static TransformSpi getImplementingClass(String URI) throws InvalidTransformException {
+       try {
+    	   Object value=classesHash.get(URI);
+    	   if (value!=null){
+    		   return (TransformSpi) value;
+    	   }
+    	   Class cl=(Class)Transform._transformHash.get(URI);
+    	   if (cl!=null) {
+    		   TransformSpi tr= (TransformSpi)cl.newInstance();
+    		   classesHash.put(URI,tr);
+    		   return tr;
+    	   }
+	} catch (InstantiationException ex) {
+		Object exArgs[] = { URI };
+         throw new InvalidTransformException(
+            "signature.Transform.UnknownTransform", exArgs, ex);      
+	} catch (IllegalAccessException ex) {
+		Object exArgs[] = { URI };
+         throw new InvalidTransformException(
+            "signature.Transform.UnknownTransform", exArgs, ex);      
+	}
+	return null;
+   }
+
+   
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_TRANSFORM;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/TransformParam.java b/src/org/apache/xml/security/transforms/TransformParam.java
new file mode 100644
index 0000000..a6e1c13
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/TransformParam.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.transforms;
+
+/**
+ *
+ * @author $Author$
+ */
+
+public interface TransformParam {
+}
\ No newline at end of file
diff --git a/src/org/apache/xml/security/transforms/TransformSpi.java b/src/org/apache/xml/security/transforms/TransformSpi.java
new file mode 100644
index 0000000..8d4e4c0
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/TransformSpi.java
@@ -0,0 +1,96 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms;
+
+
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Base class which all Transform algorithms extend. The common methods that
+ * have to be overridden are the {@link #enginePerformTransform(XMLSignatureInput)} method.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public abstract class TransformSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(TransformSpi.class.getName());
+
+   protected Transform _transformObject = null;
+   protected void setTransform(Transform transform) {
+      this._transformObject = transform;
+   }
+
+   /**
+    * The mega method which MUST be implemented by the Transformation Algorithm.
+    *
+    * @param input {@link XMLSignatureInput} as the input of transformation
+    * @param os where to output this transformation.
+    * @return {@link XMLSignatureInput} as the result of transformation
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformationException
+    */
+   protected XMLSignatureInput enginePerformTransform(
+      XMLSignatureInput input, OutputStream os)
+         throws IOException,
+                CanonicalizationException, InvalidCanonicalizerException,
+                TransformationException, ParserConfigurationException,
+                SAXException {
+   	    return enginePerformTransform(input);
+   }
+   /**
+    * The mega method which MUST be implemented by the Transformation Algorithm.
+    *
+    * @param input {@link XMLSignatureInput} as the input of transformation
+    * @return {@link XMLSignatureInput} as the result of transformation
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformationException
+    */
+   protected abstract XMLSignatureInput enginePerformTransform(
+      XMLSignatureInput input)
+         throws IOException,
+                CanonicalizationException, InvalidCanonicalizerException,
+                TransformationException, ParserConfigurationException,
+                SAXException;
+
+   /**
+    * Returns the URI representation of <code>Transformation algorithm</code>
+    *
+    * @return the URI representation of <code>Transformation algorithm</code>
+    */
+   protected abstract String engineGetURI();
+}
diff --git a/src/org/apache/xml/security/transforms/TransformationException.java b/src/org/apache/xml/security/transforms/TransformationException.java
new file mode 100644
index 0000000..ea803fa
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/TransformationException.java
@@ -0,0 +1,84 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformationException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * Constructor TransformationException
+    *
+    */
+   public TransformationException() {
+      super();
+   }
+
+   /**
+    * Constructor TransformationException
+    *
+    * @param _msgID
+    */
+   public TransformationException(String _msgID) {
+      super(_msgID);
+   }
+
+   /**
+    * Constructor TransformationException
+    *
+    * @param _msgID
+    * @param exArgs
+    */
+   public TransformationException(String _msgID, Object exArgs[]) {
+      super(_msgID, exArgs);
+   }
+
+   /**
+    * Constructor TransformationException
+    *
+    * @param _msgID
+    * @param _originalException
+    */
+   public TransformationException(String _msgID, Exception _originalException) {
+      super(_msgID, _originalException);
+   }
+
+   /**
+    * Constructor TransformationException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    */
+   public TransformationException(String _msgID, Object exArgs[],
+                                  Exception _originalException) {
+      super(_msgID, exArgs, _originalException);
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/Transforms.java b/src/org/apache/xml/security/transforms/Transforms.java
new file mode 100644
index 0000000..625fc26
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/Transforms.java
@@ -0,0 +1,298 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms;
+
+
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Holder of the {@link org.apache.xml.security.transforms.Transform} steps to be performed on the data.
+ * The input to the first Transform is the result of dereferencing the <code>URI</code> attribute of the <code>Reference</code> element.
+ * The output from the last Transform is the input for the <code>DigestMethod algorithm</code>
+ *
+ * @author Christian Geuer-Pollmann
+ * @see Transform
+ * @see org.apache.xml.security.signature.Reference
+ */
+public class Transforms extends SignatureElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Transforms.class.getName());
+   //J-
+   /** Canonicalization - Required Canonical XML (omits comments) */
+   public static final String TRANSFORM_C14N_OMIT_COMMENTS = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+   /** Canonicalization - Recommended Canonical XML with Comments */
+   public static final String TRANSFORM_C14N_WITH_COMMENTS = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+   /** Canonicalization - Required Exclusive Canonicalization (omits comments) */
+   public static final String TRANSFORM_C14N_EXCL_OMIT_COMMENTS = Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
+   /** Canonicalization - Recommended Exclusive Canonicalization with Comments */
+   public static final String TRANSFORM_C14N_EXCL_WITH_COMMENTS = Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS;
+   /** Transform - Optional XSLT */
+   public static final String TRANSFORM_XSLT = "http://www.w3.org/TR/1999/REC-xslt-19991116";
+   /** Transform - Required base64 decoding */
+   public static final String TRANSFORM_BASE64_DECODE = Constants.SignatureSpecNS + "base64";
+   /** Transform - Recommended XPath */
+   public static final String TRANSFORM_XPATH = "http://www.w3.org/TR/1999/REC-xpath-19991116";
+   /** Transform - Required Enveloped Signature */
+   public static final String TRANSFORM_ENVELOPED_SIGNATURE = Constants.SignatureSpecNS + "enveloped-signature";
+   /** Transform - XPointer */
+   public static final String TRANSFORM_XPOINTER = "http://www.w3.org/TR/2001/WD-xptr-20010108";
+   /** Transform - XPath Filter v2.0 */
+   public static final String TRANSFORM_XPATH2FILTER04 = "http://www.w3.org/2002/04/xmldsig-filter2";
+   /** Transform - XPath Filter */
+   public static final String TRANSFORM_XPATH2FILTER = "http://www.w3.org/2002/06/xmldsig-filter2";
+   /** Transform - XPath Filter  CHGP private*/
+   public static final String TRANSFORM_XPATHFILTERCHGP = "http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/#xpathFilter";
+   //J+
+   Element []transforms;
+   /**
+    * Consturcts {@link Transforms}
+    *
+    * @param doc the {@link Document} in which <code>XMLsignature</code> will be placed
+    */
+   public Transforms(Document doc) {
+
+      super(doc);
+
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Consturcts {@link Transforms} from {@link Element} which is <code>Transforms</code> Element
+    *
+    * @param element  is <code>Transforms</code> element
+    * @param BaseURI the URI where the XML instance was stored
+    * @throws DOMException
+    * @throws InvalidTransformException
+    * @throws TransformationException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public Transforms(Element element, String BaseURI)
+           throws DOMException, XMLSignatureException,
+                  InvalidTransformException, TransformationException,
+                  XMLSecurityException {
+
+      super(element, BaseURI);
+
+      int numberOfTransformElems = this.getLength();
+
+      if (numberOfTransformElems == 0) {
+
+         // At least ont Transform element must be present. Bad.
+         Object exArgs[] = { Constants._TAG_TRANSFORM,
+                             Constants._TAG_TRANSFORMS };
+
+         throw new TransformationException("xml.WrongContent", exArgs);
+      }
+   }
+
+   /**
+    * Adds the <code>Transform</code> with the specified <code>Transform algorithm URI</code>
+    *
+    * @param transformURI the URI form of transform that indicates which transformation is applied to data
+    * @throws TransformationException
+    */
+   public void addTransform(String transformURI)
+           throws TransformationException {
+
+      try {
+         if (log.isDebugEnabled())
+         	log.debug("Transforms.addTransform(" + transformURI + ")");
+
+         Transform transform = Transform.getInstance(this._doc, transformURI);
+
+         this.addTransform(transform);
+      } catch (InvalidTransformException ex) {
+         throw new TransformationException("empty", ex);
+      }
+   }
+
+   /**
+    * Adds the <code>Transform</code> with the specified <code>Transform algorithm URI</code>
+    *
+    * @param transformURI the URI form of transform that indicates which transformation is applied to data
+    * @param contextElement
+    * @throws TransformationException
+    * @see Transform#getInstance(Document doc, String algorithmURI, Element childElement)
+    */
+   public void addTransform(String transformURI, Element contextElement)
+           throws TransformationException {
+
+      try {
+         if (log.isDebugEnabled())
+        	log.debug("Transforms.addTransform(" + transformURI + ")");
+
+         Transform transform = Transform.getInstance(this._doc, transformURI,
+                                                     contextElement);
+
+         this.addTransform(transform);
+      } catch (InvalidTransformException ex) {
+         throw new TransformationException("empty", ex);
+      }
+   }
+
+   /**
+    * Adds the <code>Transform</code> with the specified <code>Transform algorithm URI</code>
+    *
+    * @param transformURI the URI form of transform that indicates which transformation is applied to data
+    * @param contextNodes
+    * @throws TransformationException
+    * @see Transform#getInstance(Document doc, String algorithmURI, NodeList contextNodes)
+    */
+   public void addTransform(String transformURI, NodeList contextNodes)
+           throws TransformationException {
+
+      try {
+         Transform transform = Transform.getInstance(this._doc, transformURI,
+                                                     contextNodes);
+
+         this.addTransform(transform);
+      } catch (InvalidTransformException ex) {
+         throw new TransformationException("empty", ex);
+      }
+   }
+
+   /**
+    * Adds a user-provided Transform step.
+    *
+    * @param transform {@link Transform} object
+    */
+   private void addTransform(Transform transform) {
+      if (log.isDebugEnabled())
+      	log.debug("Transforms.addTransform(" + transform.getURI() + ")");
+
+      Element transformElement = transform.getElement();
+
+      this._constructionElement.appendChild(transformElement);
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Applies all included <code>Transform</code>s to xmlSignatureInput and returns the result of these transformations.
+    *
+    * @param xmlSignatureInput the input for the <code>Transform</code>s
+    * @return the result of the <code>Transforms</code>
+    * @throws TransformationException
+    */
+   public XMLSignatureInput performTransforms(
+           XMLSignatureInput xmlSignatureInput) throws TransformationException {
+   	     return performTransforms(xmlSignatureInput,null);
+   }
+   
+   /**
+    * Applies all included <code>Transform</code>s to xmlSignatureInput and returns the result of these transformations.
+    *
+    * @param xmlSignatureInput the input for the <code>Transform</code>s
+    * @param os where to output the last transformation.
+    * @return the result of the <code>Transforms</code>
+    * @throws TransformationException
+    */
+    public XMLSignatureInput performTransforms(
+            XMLSignatureInput xmlSignatureInput,OutputStream os) throws TransformationException {
+
+      try {
+        int last=this.getLength()-1;
+         for (int i = 0; i < last; i++) {
+            Transform t = this.item(i);
+            if (log.isDebugEnabled()) {
+            	log.debug("Preform the (" + i + ")th " + t.getURI() + " transform");
+            }
+			xmlSignatureInput = t.performTransform(xmlSignatureInput);
+         }
+         if (last>=0) {
+			Transform t = this.item(last);
+            xmlSignatureInput = t.performTransform(xmlSignatureInput, os);
+         }
+
+
+         return xmlSignatureInput;
+      } catch (IOException ex) {
+         throw new TransformationException("empty", ex);
+      // } catch (ParserConfigurationException ex) { throw new TransformationException("empty", ex);
+      // } catch (SAXException ex) { throw new TransformationException("empty", ex);
+      } catch (CanonicalizationException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (InvalidCanonicalizerException ex) {
+         throw new TransformationException("empty", ex);
+      }
+   }
+
+   /**
+    * Return the nonnegative number of transformations.
+    *
+    * @return the number of transformations
+    */
+   public int getLength()
+   {
+		/*Element nscontext = XMLUtils.createDSctx(this._doc, "ds",
+	                                              Constants.SignatureSpecNS);
+	     NodeList transformElems =
+	        XPathAPI.selectNodeList(this._constructionElement,
+	                                "./ds:Transform", nscontext);
+	     return transformElems.getLength();*/
+       if (transforms==null) {
+        transforms=XMLUtils.selectDsNodes(this._constructionElement.getFirstChild(),
+           "Transform");
+       }
+       return transforms.length;       
+  }
+
+   /**
+    * Return the <it>i</it><sup>th</sup> <code>{@link Transform}</code>.
+    * Valid <code>i</code> values are 0 to <code>{@link #getLength}-1</code>.
+    *
+    * @param i index of {@link Transform} to return
+    * @return the <it>i</it><sup>th</sup> transforms
+    * @throws TransformationException
+    */
+   public Transform item(int i) throws TransformationException {
+   	
+	   	try {
+	   		if (transforms==null) {
+	   			transforms=XMLUtils.selectDsNodes(this._constructionElement.getFirstChild(),
+	   			"Transform");
+	   		}
+	   		return new Transform(transforms[i], this._baseURI);
+	   	} catch (XMLSecurityException ex) {
+	   		throw new TransformationException("empty", ex);
+	   	}
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_TRANSFORMS;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/FuncHere.java b/src/org/apache/xml/security/transforms/implementations/FuncHere.java
new file mode 100644
index 0000000..f6a5645
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/FuncHere.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.xml.dtm.DTM;
+import org.apache.xml.security.utils.I18n;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.NodeSetDTM;
+import org.apache.xpath.XPathContext;
+import org.apache.xpath.functions.Function;
+import org.apache.xpath.objects.XNodeSet;
+import org.apache.xpath.objects.XObject;
+import org.apache.xpath.res.XPATHErrorResources;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+
+/**
+ * The 'here()' function returns a node-set containing the attribute or
+ * processing instruction node or the parent element of the text node
+ * that directly bears the XPath expression.  This expression results
+ * in an error if the containing XPath expression does not appear in the
+ * same XML document against which the XPath expression is being evaluated.
+ *
+ * Mainpart is stolen from FuncId.java
+ *
+ * This does crash under Xalan2.2.D7 and works under Xalan2.2.D9
+ *
+ * To get this baby to work, a special trick has to be used. The function needs
+ * access to the Node where the XPath expression has been defined. This is done
+ * by constructing a {@link FuncHere} which has this Node as 'owner'.
+ *
+ * @see "http://www.w3.org/Signature/Drafts/xmldsig-core/Overview.html#function-here"
+ */
+public class FuncHere extends Function {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+   /**
+    * The here function returns a node-set containing the attribute or
+    * processing instruction node or the parent element of the text node
+    * that directly bears the XPath expression.  This expression results
+    * in an error if the containing XPath expression does not appear in the
+    * same XML document against which the XPath expression is being evaluated.
+    *
+    * @param xctxt
+    * @return the xobject
+    * @throws javax.xml.transform.TransformerException
+    */
+   public XObject execute(XPathContext xctxt)
+           throws javax.xml.transform.TransformerException {
+
+      Node xpathOwnerNode = (Node) xctxt.getOwnerObject();
+
+      if (xpathOwnerNode == null) {
+         return null;
+      }
+
+      int xpathOwnerNodeDTM = xctxt.getDTMHandleFromNode(xpathOwnerNode);
+
+      int currentNode = xctxt.getCurrentNode();
+      DTM dtm = xctxt.getDTM(currentNode);
+      int docContext = dtm.getDocument();
+
+      if (DTM.NULL == docContext) {
+         error(xctxt, XPATHErrorResources.ER_CONTEXT_HAS_NO_OWNERDOC, null);
+      }
+
+      {
+
+         // check whether currentNode and the node containing the XPath expression
+         // are in the same document
+         Document currentDoc =
+            XMLUtils.getOwnerDocument(dtm.getNode(currentNode));
+         Document xpathOwnerDoc = XMLUtils.getOwnerDocument(xpathOwnerNode);
+
+         if (currentDoc != xpathOwnerDoc) {
+            throw new TransformerException(I18n
+               .translate("xpath.funcHere.documentsDiffer"));
+         }
+      }
+
+      XNodeSet nodes = new XNodeSet(xctxt.getDTMManager());
+      NodeSetDTM nodeSet = nodes.mutableNodeset();
+
+      {
+         int hereNode = DTM.NULL;
+
+         switch (dtm.getNodeType(xpathOwnerNodeDTM)) {
+
+         case Node.ATTRIBUTE_NODE : {
+            // returns a node-set containing the attribute
+            hereNode = xpathOwnerNodeDTM;
+
+            nodeSet.addNode(hereNode);
+
+            break;
+         }
+         case Node.PROCESSING_INSTRUCTION_NODE : {
+            // returns a node-set containing the processing instruction node
+            hereNode = xpathOwnerNodeDTM;
+
+            nodeSet.addNode(hereNode);
+
+            break;
+         }
+         case Node.TEXT_NODE : {
+            // returns a node-set containing the parent element of the
+            // text node that directly bears the XPath expression
+            hereNode = dtm.getParent(xpathOwnerNodeDTM);
+
+            nodeSet.addNode(hereNode);
+
+            break;
+         }
+         default :
+            break;
+         }
+      }
+
+      /** $todo$ Do I have to do this detach() call? */
+      nodeSet.detach();
+
+      return nodes;
+   }
+
+   /**
+    * No arguments to process, so this does nothing.
+    * @param vars
+    * @param globalsSize
+    */
+   public void fixupVariables(java.util.Vector vars, int globalsSize) {
+
+      // do nothing
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/FuncHereContext.java b/src/org/apache/xml/security/transforms/implementations/FuncHereContext.java
new file mode 100644
index 0000000..a06018d
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/FuncHereContext.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import org.apache.xml.dtm.DTMManager;
+import org.apache.xml.security.utils.I18n;
+import org.apache.xpath.CachedXPathAPI;
+import org.apache.xpath.XPathContext;
+import org.w3c.dom.Node;
+
+
+/**
+ * {@link FuncHereContext} extends {@link XPathContext} for supplying context
+ * for the <CODE>here()</CODE> function. The here() function needs to know
+ * <I>where</I> in an XML instance the XPath text string appeared. This can be
+ * in {@link org.w3c.dom.Text}, {@link org.w3c.dom.Attr}ibutes and {@ProcessingInstrinction} nodes. The
+ * correct node must be supplied to the constructor of {@link FuncHereContext}.
+ * The supplied Node MUST contain the XPath which is to be executed.
+ *
+ * <PRE>
+ * From: Scott_Boag\@lotus.com
+ * To: Christian Geuer-Pollmann <maillist\@nue.et-inf.uni-siegen.de>
+ * CC: xalan-dev@xml.apache.org
+ * Subject: Re: Cleanup of XPathContext & definition of XSLTContext
+ * Date: Tue, 21 Aug 2001 18:36:24 -0400
+ *
+ * > My point is to say to get this baby to run, the XPath must have a
+ * > possibility to retrieve the information where itself occured in a
+ * > document.
+ *
+ * It sounds to me like you have to derive an XMLSigContext from the
+ * XPathContext?
+ *
+ * > and supplied the Node which contains the xpath string as "owner". Question:
+ * > Is this the correct use of the owner object? It works, but I don't know
+ * > whether this is correct from the xalan-philosophy...
+ *
+ * Philosophically it's fine.  The owner is the TransformerImpl if XPath is
+ * running under XSLT.  If it is not running under XSLT, it can be whatever
+ * you want.
+ *
+ * -scott
+ * </PRE>
+ *
+ * @author $Author$
+ * @see org.apache.xml.security.transforms.implementations.FuncHere
+ * @see org.apache.xml.security.utils.XPathFuncHereAPI
+ * @see <A HREF="http://www.w3.org/Signature/Drafts/xmldsig-core/Overview.html#function-here">XML Signature - The here() function</A>
+ */
+public class FuncHereContext extends XPathContext {
+
+   /**
+    * This constuctor is disabled because if we use the here() function we
+    * <I>always</I> need to know in which node the XPath occured.
+    */
+   private FuncHereContext() {}
+
+   /**
+    * Constructor FuncHereContext
+    *
+    * @param owner
+    */
+   public FuncHereContext(Node owner) {
+      super(owner);
+   }
+
+   /**
+    * Constructor FuncHereContext
+    *
+    * @param owner
+    * @param xpathContext
+    */
+   public FuncHereContext(Node owner, XPathContext xpathContext) {
+
+      super(owner);
+
+      try {
+         super.m_dtmManager = xpathContext.getDTMManager();
+      } catch (IllegalAccessError iae) {
+         throw new IllegalAccessError(I18n.translate("endorsed.jdk1.4.0")
+                                      + " Original message was \""
+                                      + iae.getMessage() + "\"");
+      }
+   }
+
+   /**
+    * Constructor FuncHereContext
+    *
+    * @param owner
+    * @param previouslyUsed
+    */
+   public FuncHereContext(Node owner, CachedXPathAPI previouslyUsed) {
+
+      super(owner);
+
+      try {
+         super.m_dtmManager = previouslyUsed.getXPathContext().getDTMManager();
+      } catch (IllegalAccessError iae) {
+         throw new IllegalAccessError(I18n.translate("endorsed.jdk1.4.0")
+                                      + " Original message was \""
+                                      + iae.getMessage() + "\"");
+      }
+   }
+
+   /**
+    * Constructor FuncHereContext
+    *
+    * @param owner
+    * @param dtmManager
+    */
+   public FuncHereContext(Node owner, DTMManager dtmManager) {
+
+      super(owner);
+
+      try {
+         super.m_dtmManager = dtmManager;
+      } catch (IllegalAccessError iae) {
+         throw new IllegalAccessError(I18n.translate("endorsed.jdk1.4.0")
+                                      + " Original message was \""
+                                      + iae.getMessage() + "\"");
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformBase64Decode.java b/src/org/apache/xml/security/transforms/implementations/TransformBase64Decode.java
new file mode 100644
index 0000000..4aa04b2
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformBase64Decode.java
@@ -0,0 +1,178 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Base64;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Implements the <CODE>http://www.w3.org/2000/09/xmldsig#base64</CODE> decoding
+ * transform.
+ *
+ * <p>The normative specification for base64 decoding transforms is
+ * <A HREF="http://www.w3.org/TR/2001/CR-xmldsig-core-20010419/#ref-MIME">[MIME]</A>.
+ * The base64 Transform element has no content. The input
+ * is decoded by the algorithms. This transform is useful if an
+ * application needs to sign the raw data associated with the encoded
+ * content of an element. </p>
+ *
+ * <p>This transform requires an octet stream for input.
+ * If an XPath node-set (or sufficiently functional alternative) is
+ * given as input, then it is converted to an octet stream by
+ * performing operations logically equivalent to 1) applying an XPath
+ * transform with expression self::text(), then 2) taking the string-value
+ * of the node-set. Thus, if an XML element is identified by a barename
+ * XPointer in the Reference URI, and its content consists solely of base64
+ * encoded character data, then this transform automatically strips away the
+ * start and end tags of the identified element and any of its descendant
+ * elements as well as any descendant comments and processing instructions.
+ * The output of this transform is an octet stream.</p>
+ *
+ * @author Christian Geuer-Pollmann
+ * @see org.apache.xml.security.utils.Base64
+ */
+public class TransformBase64Decode extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_BASE64_DECODE;
+
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc
+    */
+   protected String engineGetURI() {
+      return TransformBase64Decode.implementedTransformURI;
+   }
+
+   /**
+    * Method enginePerformTransform
+    *
+    * @param input
+    * @return {@link XMLSignatureInput} as the result of transformation
+    * @inheritDoc
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws TransformationException
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws IOException, CanonicalizationException,
+                  TransformationException {
+   	return enginePerformTransform(input,null);
+   }
+    protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,
+            OutputStream os)
+    throws IOException, CanonicalizationException,
+           TransformationException {
+	 try {
+      if (input.isElement()) {
+         Node el=input.getSubNode();
+         if (input.getSubNode().getNodeType()==Node.TEXT_NODE) {         	
+            el=el.getParentNode();
+         }
+         StringBuffer sb=new StringBuffer();
+         traverseElement((Element)el,sb);
+         if (os==null) {
+         	byte[] decodedBytes = Base64.decode(sb.toString());            
+         	return new XMLSignatureInput(decodedBytes);
+         } 
+         	Base64.decode(sb.toString().getBytes(),os);
+            XMLSignatureInput output=new XMLSignatureInput((byte[])null);
+            output.setOutputStream(os);
+            return output;
+         
+      }
+      if (input.isOctetStream() || input.isNodeSet()) {
+                    
+        
+        if (os==null) {
+            byte[] base64Bytes = input.getBytes();
+            byte[] decodedBytes = Base64.decode(base64Bytes);            
+            return new XMLSignatureInput(decodedBytes);
+         } 
+        if (input.isByteArray() || input.isNodeSet()) {
+               Base64.decode(input.getBytes(),os);
+        } else {
+            Base64.decode(new BufferedInputStream(input.getOctetStreamReal())
+                    ,os);
+        }
+            XMLSignatureInput output=new XMLSignatureInput((byte[])null);
+            output.setOutputStream(os);
+            return output;
+         
+        
+      } 
+       
+	 try {
+            //Exceptional case there is current not text case testing this(Before it was a
+	 	    //a common case).
+            Document doc =
+               DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
+                  input.getOctetStream());
+                  
+            Element rootNode = doc.getDocumentElement();
+            StringBuffer sb = new StringBuffer();
+            traverseElement(rootNode,sb);
+            byte[] decodedBytes = Base64.decode(sb.toString());
+			
+            return new XMLSignatureInput(decodedBytes);
+		  } catch (ParserConfigurationException e) {
+			  throw new TransformationException("c14n.Canonicalizer.Exception",e);
+		  } catch (SAXException e) {
+			  throw new TransformationException("SAX exception", e);
+		  }      
+	} catch (Base64DecodingException e) {
+        throw new TransformationException("Base64Decoding", e);
+	}
+   }
+
+   void traverseElement(org.w3c.dom.Element node,StringBuffer sb) {
+   	    Node sibling=node.getFirstChild();
+        while (sibling!=null) {
+        	switch (sibling.getNodeType()) {
+        		case Node.ELEMENT_NODE:
+                    traverseElement((Element)sibling,sb);
+                    break;
+               case Node.TEXT_NODE:
+               	    sb.append(((Text)sibling).getData());
+            }
+            sibling=sibling.getNextSibling();
+        }
+   }  
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformC14N.java b/src/org/apache/xml/security/transforms/implementations/TransformC14N.java
new file mode 100644
index 0000000..9ce0c10
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformC14N.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.OutputStream;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315OmitComments;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.Transforms;
+
+
+/**
+ * Implements the <CODE>http://www.w3.org/TR/2001/REC-xml-c14n-20010315</CODE>
+ * transform.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformC14N extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_C14N_OMIT_COMMENTS;
+
+
+   /**
+    * @inheritDoc 
+    */
+   protected String engineGetURI() {
+      return TransformC14N.implementedTransformURI;
+   }
+
+   /**
+    *  @inheritDoc 
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws CanonicalizationException {
+   	    return enginePerformTransform(input,null);
+   }
+    protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,OutputStream os)
+    throws CanonicalizationException {   
+         Canonicalizer20010315OmitComments c14n = new Canonicalizer20010315OmitComments();
+         if (os!=null) {
+         	c14n.setWriter(os);
+         }
+         byte[] result = null;                
+         input.setNeedsToBeExpanded(true);
+         result=c14n.engineCanonicalize(input);         		         	         
+         XMLSignatureInput output=new XMLSignatureInput(result);
+         if (os!=null) {
+            output.setOutputStream(os);
+         }
+         return output;     
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformC14NExclusive.java b/src/org/apache/xml/security/transforms/implementations/TransformC14NExclusive.java
new file mode 100644
index 0000000..ad6ace2
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformC14NExclusive.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.OutputStream;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclOmitComments;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.InclusiveNamespaces;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * Class TransformC14NExclusive
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class TransformC14NExclusive extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS;
+
+
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc 
+    */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+   /**
+    * Method enginePerformTransform
+    *
+    * @param input
+    * @return the transformed of the input
+    * @throws CanonicalizationException
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws CanonicalizationException {
+   	    return enginePerformTransform(input,null);
+   }
+    protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,OutputStream os)
+    throws CanonicalizationException {
+      try {
+         String inclusiveNamespaces = null;
+
+         if (this._transformObject
+                 .length(InclusiveNamespaces
+                    .ExclusiveCanonicalizationNamespace, InclusiveNamespaces
+                    ._TAG_EC_INCLUSIVENAMESPACES) == 1) {
+            Element inclusiveElement =
+                XMLUtils.selectNode(
+               this._transformObject.getElement().getFirstChild(),
+                  InclusiveNamespaces.ExclusiveCanonicalizationNamespace,
+                  InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES,0);
+
+            inclusiveNamespaces = new InclusiveNamespaces(inclusiveElement,
+                    this._transformObject.getBaseURI()).getInclusiveNamespaces();
+         }
+
+         Canonicalizer20010315ExclOmitComments c14n =
+            new Canonicalizer20010315ExclOmitComments();
+         if (os!=null) {
+            c14n.setWriter(os);
+         }
+         byte []result;
+         input.setNeedsToBeExpanded(true);
+         result =c14n.engineCanonicalize(input, inclusiveNamespaces);
+              
+         XMLSignatureInput output=new XMLSignatureInput(result);
+         if (os!=null) {
+            output.setOutputStream(os);
+         }
+         return output;      
+      } catch (XMLSecurityException ex) {
+         throw new CanonicalizationException("empty", ex);
+      } 
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformC14NExclusiveWithComments.java b/src/org/apache/xml/security/transforms/implementations/TransformC14NExclusiveWithComments.java
new file mode 100644
index 0000000..5f8e7cb
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformC14NExclusiveWithComments.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.OutputStream;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclWithComments;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.InclusiveNamespaces;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * Implements the <CODE>http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments</CODE>
+ * transform.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformC14NExclusiveWithComments extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_C14N_EXCL_WITH_COMMENTS;
+
+
+   /**
+    * Method engineGetURI
+    *@inheritDoc 
+    *
+    */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+   /**
+    * @inheritDoc 
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws CanonicalizationException {
+   	    return enginePerformTransform(input,null);
+   }
+    protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,OutputStream os)
+    throws CanonicalizationException {
+     try {
+        String inclusiveNamespaces = null;
+
+        if (this._transformObject
+                .length(InclusiveNamespaces
+                   .ExclusiveCanonicalizationNamespace, InclusiveNamespaces
+                   ._TAG_EC_INCLUSIVENAMESPACES) == 1) {
+           Element inclusiveElement =
+               XMLUtils.selectNode(
+              this._transformObject.getElement().getFirstChild(),
+                 InclusiveNamespaces.ExclusiveCanonicalizationNamespace,
+                 InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES,0);
+
+           inclusiveNamespaces = new InclusiveNamespaces(inclusiveElement,
+                   this._transformObject.getBaseURI()).getInclusiveNamespaces();
+        }
+
+        Canonicalizer20010315ExclWithComments c14n =
+            new Canonicalizer20010315ExclWithComments();        
+        if (os!=null) {
+           c14n.setWriter( os);
+        }
+        input.setNeedsToBeExpanded(true);
+        byte []result;  
+        result =c14n.engineCanonicalize(input, inclusiveNamespaces);
+        XMLSignatureInput output=new XMLSignatureInput(result);
+        
+        return output;
+     } catch (XMLSecurityException ex) {
+        throw new CanonicalizationException("empty", ex);
+     } 
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformC14NWithComments.java b/src/org/apache/xml/security/transforms/implementations/TransformC14NWithComments.java
new file mode 100644
index 0000000..3ec060a
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformC14NWithComments.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.OutputStream;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithComments;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.Transforms;
+
+
+/**
+ * Implements the <CODE>http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments</CODE>
+ * transform.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformC14NWithComments extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_C14N_WITH_COMMENTS;
+
+
+   /** @inheritDoc */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+   /** @inheritDoc */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+   throws CanonicalizationException {
+   	    return enginePerformTransform(input,null);
+   }
+   /** @inheritDoc */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,OutputStream os)
+           throws CanonicalizationException {
+      
+        Canonicalizer20010315WithComments c14n = new Canonicalizer20010315WithComments();
+        if (os!=null) {
+        	c14n.setWriter( os);
+        }
+        
+         byte[] result = null;
+         input.setNeedsToBeExpanded(true);
+         result=c14n.engineCanonicalize(input);         		         	         
+         XMLSignatureInput output=new XMLSignatureInput(result);         
+         if (os!=null) {
+         	output.setOutputStream(os);
+         }
+         return output;      
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformEnvelopedSignature.java b/src/org/apache/xml/security/transforms/implementations/TransformEnvelopedSignature.java
new file mode 100644
index 0000000..d69eb1e
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformEnvelopedSignature.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import org.apache.xml.security.signature.NodeFilter;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * Implements the <CODE>http://www.w3.org/2000/09/xmldsig#enveloped-signature</CODE>
+ * transform.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformEnvelopedSignature extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_ENVELOPED_SIGNATURE;
+
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc
+    */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+   /**
+    * @inheritDoc
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws TransformationException {
+
+
+
+         /**
+          * If the actual input is an octet stream, then the application MUST
+          * convert the octet stream to an XPath node-set suitable for use by
+          * Canonical XML with Comments. (A subsequent application of the
+          * REQUIRED Canonical XML algorithm would strip away these comments.)
+          *
+          * ...
+          *
+          * The evaluation of this expression includes all of the document's nodes
+          * (including comments) in the node-set representing the octet stream.
+          */
+
+         /*
+         if (input.isOctetStream()) {
+            input.setNodesetXPath(Canonicalizer.XPATH_C14N_WITH_COMMENTS);
+         }
+         */
+         
+         Element transformElement = this._transformObject.getElement();
+         Node signatureElement = transformElement;
+         
+
+         signatureElement = searchSignatureElement(signatureElement);        
+         	input.setExcludeNode(signatureElement);   
+         	input.addNodeFilter(new EnvelopedNodeFilter(signatureElement));
+         	return input;
+         
+         //
+         
+      
+   }
+
+   /**
+    * @param signatureElement    
+    * @return the node that is the signature
+    * @throws TransformationException
+    */
+    private static Node searchSignatureElement(Node signatureElement) throws TransformationException {
+	    boolean found=false;
+        
+	    while (true) {
+	    	if ((signatureElement == null)
+	            || (signatureElement.getNodeType() == Node.DOCUMENT_NODE)) {
+	    		break;
+	    	}
+	    	Element el=(Element)signatureElement;
+	    	if (el.getNamespaceURI().equals(Constants.SignatureSpecNS)
+                    && 
+	               el.getLocalName().equals(Constants._TAG_SIGNATURE)) {
+	    		found = true;
+	    		break;
+	    	}
+
+	    	signatureElement = signatureElement.getParentNode();
+	    }
+
+	    if (!found) {
+	      throw new TransformationException(
+	       "envelopedSignatureTransformNotInSignatureElement");
+	    }
+	    return signatureElement;
+    }
+    class EnvelopedNodeFilter implements NodeFilter {
+    	Node exclude;    	
+    	EnvelopedNodeFilter(Node n) {
+    		exclude=n;
+    	}
+		/**
+		 * @see org.apache.xml.security.signature.NodeFilter#isNodeInclude(org.w3c.dom.Node)
+		 */
+		public boolean isNodeInclude(Node n) {
+			// TODO Optimize me.
+			return !XMLUtils.isDescendantOrSelf(exclude,n);
+		}
+    	
+    }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformXPath.java b/src/org/apache/xml/security/transforms/implementations/TransformXPath.java
new file mode 100644
index 0000000..3ddb55d
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformXPath.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.xml.security.exceptions.XMLSecurityRuntimeException;
+import org.apache.xml.security.signature.NodeFilter;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.CachedXPathAPIHolder;
+import org.apache.xml.security.utils.CachedXPathFuncHereAPI;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.utils.PrefixResolverDefault;
+import org.apache.xpath.objects.XObject;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * Class TransformXPath
+ *
+ * Implements the <CODE>http://www.w3.org/TR/1999/REC-xpath-19991116</CODE>
+ * transform.
+ *
+ * @author Christian Geuer-Pollmann
+ * @see <a href="http://www.w3.org/TR/1999/REC-xpath-19991116">XPath</a>
+ *
+ */
+public class TransformXPath extends TransformSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(TransformXPath.class.getName());
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_XPATH;
+
+
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc
+    */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+   /**
+    * Method enginePerformTransform
+    * @inheritDoc
+    * @param input
+    *
+    * @throws TransformationException
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws TransformationException {
+
+      try {
+
+         /**
+          * If the actual input is an octet stream, then the application MUST
+          * convert the octet stream to an XPath node-set suitable for use by
+          * Canonical XML with Comments. (A subsequent application of the
+          * REQUIRED Canonical XML algorithm would strip away these comments.)
+          *
+          * ...
+          *
+          * The evaluation of this expression includes all of the document's nodes
+          * (including comments) in the node-set representing the octet stream.
+          */
+		  CachedXPathAPIHolder.setDoc(this._transformObject.getElement().getOwnerDocument());
+         
+         
+
+         Element xpathElement =XMLUtils.selectDsNode(
+            this._transformObject.getElement().getFirstChild(),
+               Constants._TAG_XPATH,0);
+
+         if (xpathElement == null) {
+            Object exArgs[] = { "ds:XPath", "Transform" };
+
+            throw new TransformationException("xml.WrongContent", exArgs);
+         }
+         Node xpathnode = xpathElement.getChildNodes().item(0);
+         String str=CachedXPathFuncHereAPI.getStrFromNode(xpathnode);
+         input.setNeedsToBeExpanded(needsCircunvent(str));
+         if (xpathnode == null) {
+     	    throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR,
+     	                           "Text must be in ds:Xpath");
+     	 }
+
+
+         input.addNodeFilter(new XPathNodeFilter( xpathElement, xpathnode, str));
+         input.setNodeSet(true);
+         return input;
+      } catch (DOMException ex) {
+         throw new TransformationException("empty", ex);
+      } 
+   }
+
+   /**
+    *  @param str
+    * @return true if needs to be circunvent for bug.
+    */
+    private boolean needsCircunvent(String str) {
+    	return true;
+    	//return str.contains("namespace");
+    	
+    }
+    class XPathNodeFilter implements NodeFilter {
+    	 PrefixResolverDefault prefixResolver;
+    	 CachedXPathFuncHereAPI xPathFuncHereAPI =
+             new CachedXPathFuncHereAPI(CachedXPathAPIHolder.getCachedXPathAPI());
+          ;
+    	Node xpathnode; 
+    	String str;
+    	XPathNodeFilter(Element xpathElement,
+    			Node xpathnode, String str) {
+    		this.xpathnode=xpathnode;
+    		this.str=str;
+    		prefixResolver =new PrefixResolverDefault(xpathElement);
+    	}
+    	    
+
+		/**
+		 * @see org.apache.xml.security.signature.NodeFilter#isNodeInclude(org.w3c.dom.Node)
+		 */
+		public boolean isNodeInclude(Node currentNode) {			
+			XObject includeInResult;
+			try {
+				includeInResult = xPathFuncHereAPI.eval(currentNode,
+				        xpathnode, str,prefixResolver);
+				return includeInResult.bool();
+			} catch (TransformerException e) {
+                Object[] eArgs = {currentNode};
+				throw new XMLSecurityRuntimeException("signature.Transform.node", eArgs, e);
+			}	
+			catch (Exception e) {
+                Object[] eArgs = {currentNode, new Short(currentNode.getNodeType())};
+				throw new XMLSecurityRuntimeException("signature.Transform.nodeAndType",eArgs, e);
+			}
+		}
+    }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformXPath2Filter.java b/src/org/apache/xml/security/transforms/implementations/TransformXPath2Filter.java
new file mode 100644
index 0000000..7ceefdf
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformXPath2Filter.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.NodeFilter;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer;
+import org.apache.xml.security.utils.CachedXPathAPIHolder;
+import org.apache.xml.security.utils.CachedXPathFuncHereAPI;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * Implements the <I>XML Signature XPath Filter v2.0</I>
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</A>
+ * @see <a HREF="http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filter v2.0 (editors copy)</a>
+ */
+public class TransformXPath2Filter extends TransformSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+//    static org.apache.commons.logging.Log log = 
+//        org.apache.commons.logging.LogFactory.getLog(
+//                            TransformXPath2Filter.class.getName());
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_XPATH2FILTER;
+   //J-
+   // contains the type of the filter   
+
+   // contains the node set
+  
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc
+    */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+
+
+   /**
+    * Method enginePerformTransform
+    * @inheritDoc
+    * @param input
+    *
+    * @throws TransformationException
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws TransformationException {
+	  CachedXPathAPIHolder.setDoc(this._transformObject.getElement().getOwnerDocument());
+      try {
+    	  List unionNodes=new ArrayList();
+    	   List substractNodes=new ArrayList();
+    	   List intersectNodes=new ArrayList();
+
+         CachedXPathFuncHereAPI xPathFuncHereAPI =
+            new CachedXPathFuncHereAPI(CachedXPathAPIHolder.getCachedXPathAPI());
+
+         
+         Element []xpathElements =XMLUtils.selectNodes(
+                this._transformObject.getElement().getFirstChild(),
+                   XPath2FilterContainer.XPathFilter2NS,
+                   XPath2FilterContainer._TAG_XPATH2);
+         int noOfSteps = xpathElements.length;
+
+
+         if (noOfSteps == 0) {
+            Object exArgs[] = { Transforms.TRANSFORM_XPATH2FILTER, "XPath" };
+
+            throw new TransformationException("xml.WrongContent", exArgs);
+         }
+
+         Document inputDoc = null;
+	 if (input.getSubNode() != null) {   
+            inputDoc = XMLUtils.getOwnerDocument(input.getSubNode());
+	 } else {
+            inputDoc = XMLUtils.getOwnerDocument(input.getNodeSet());
+	 }
+
+         for (int i = 0; i < noOfSteps; i++) {
+            Element xpathElement =XMLUtils.selectNode(
+               this._transformObject.getElement().getFirstChild(),
+                  XPath2FilterContainer.XPathFilter2NS,
+                  XPath2FilterContainer._TAG_XPATH2,i);
+            XPath2FilterContainer xpathContainer =
+               XPath2FilterContainer.newInstance(xpathElement,
+                                                   input.getSourceURI());
+           
+
+            NodeList subtreeRoots = xPathFuncHereAPI.selectNodeList(inputDoc,
+                                       xpathContainer.getXPathFilterTextNode(),
+                                       CachedXPathFuncHereAPI.getStrFromNode(xpathContainer.getXPathFilterTextNode()),
+                                       xpathContainer.getElement());
+            if (xpathContainer.isIntersect()) {
+                intersectNodes.add(subtreeRoots);
+             } else if (xpathContainer.isSubtract()) {
+            	 substractNodes.add(subtreeRoots);
+             } else if (xpathContainer.isUnion()) {
+                unionNodes.add(subtreeRoots);
+             } 
+         }
+
+         input.setNeedsToBeExpanded(true);
+         
+         input.addNodeFilter(new XPath2NodeFilter(unionNodes,substractNodes,intersectNodes));
+         input.setNodeSet(true);
+         return input;
+      } catch (TransformerException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (DOMException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (CanonicalizationException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (InvalidCanonicalizerException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (XMLSecurityException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (SAXException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (IOException ex) {
+         throw new TransformationException("empty", ex);
+      } catch (ParserConfigurationException ex) {
+         throw new TransformationException("empty", ex);
+      } 
+   }
+}
+
+class XPath2NodeFilter implements NodeFilter {
+	XPath2NodeFilter(List unionNodes, List substractNodes,
+			List intersectNodes) {
+		this.unionNodes=unionNodes;
+		this.substractNodes=substractNodes;
+		this.intersectNodes=intersectNodes;
+	}
+	List unionNodes=new ArrayList();
+	List substractNodes=new ArrayList();
+	List intersectNodes=new ArrayList();
+
+
+   /**
+    * @see org.apache.xml.security.signature.NodeFilter#isNodeInclude(org.w3c.dom.Node)
+    */
+   public boolean isNodeInclude(Node currentNode) {	 
+	   boolean notIncluded=false;
+	   if (rooted(currentNode,substractNodes)) {
+		   notIncluded=true;
+	   } else if (!rooted(currentNode,intersectNodes)) {
+		   notIncluded=true;
+	   }
+	   if (notIncluded && rooted(currentNode,unionNodes)) {
+		   notIncluded=false;
+	   }
+
+      return !notIncluded;
+
+   }
+
+   /**
+    * Method rooted
+    * @param currentNode 
+    * @param nodeList 
+    *
+    * @return if rooted bye the rootnodes
+    */
+   boolean rooted(Node currentNode, List nodeList ) {
+	   for (int j=0;j<nodeList.size();j++) {
+		   NodeList rootNodes=(NodeList) nodeList.get(j);	   
+      int length = rootNodes.getLength();
+
+      for (int i = 0; i < length; i++) {
+         Node rootNode = rootNodes.item(i);
+
+         if (XMLUtils.isDescendantOrSelf(rootNode,currentNode)) {
+            return true;
+         }
+      }
+   
+	   }
+	   return false;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformXPointer.java b/src/org/apache/xml/security/transforms/implementations/TransformXPointer.java
new file mode 100644
index 0000000..59c9822
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformXPointer.java
@@ -0,0 +1,63 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+
+
+
+/**
+ * Class TransformXPointer
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformXPointer extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_XPOINTER;
+
+
+   /** @inheritDoc */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+   /**
+    * Method enginePerformTransform
+    *
+    * @param input
+    * @return  {@link XMLSignatureInput} as the result of transformation
+    * @throws TransformationException
+    *
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws  TransformationException {
+
+      Object exArgs[] = { implementedTransformURI };
+
+      throw new TransformationException(
+         "signature.Transform.NotYetImplemented", exArgs);
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/TransformXSLT.java b/src/org/apache/xml/security/transforms/implementations/TransformXSLT.java
new file mode 100644
index 0000000..7ca73db
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/TransformXSLT.java
@@ -0,0 +1,162 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.implementations;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * Class TransformXSLT
+ *
+ * Implements the <CODE>http://www.w3.org/TR/1999/REC-xslt-19991116</CODE>
+ * transform.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformXSLT extends TransformSpi {
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      Transforms.TRANSFORM_XSLT;
+   //J-
+   static final String XSLTSpecNS              = "http://www.w3.org/1999/XSL/Transform";
+   static final String defaultXSLTSpecNSprefix = "xslt";
+   static final String XSLTSTYLESHEET          = "stylesheet";
+
+
+   /**
+    * Method engineGetURI
+    *
+    * @inheritDoc
+    */
+   protected String engineGetURI() {
+      return implementedTransformURI;
+   }
+
+   /**
+    * Method enginePerformTransform
+    * 
+    * @param input the input for this transform
+    * @return the result of this Transform
+    * @throws IOException
+    * @throws TransformationException
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input)
+           throws IOException,
+                  TransformationException {
+   	return enginePerformTransform(input,null);
+   }
+    protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input,OutputStream baos)
+    throws IOException,
+           TransformationException {
+      try {
+         Element transformElement = this._transformObject.getElement();        
+
+         Element _xsltElement =
+            XMLUtils.selectNode(transformElement.getFirstChild(),
+                                                XSLTSpecNS,"stylesheet", 0);
+
+         if (_xsltElement == null) {
+            Object exArgs[] = { "xslt:stylesheet", "Transform" };
+
+            throw new TransformationException("xml.WrongContent", exArgs);
+         }
+
+         TransformerFactory tFactory = TransformerFactory.newInstance();
+
+         /*
+          * This transform requires an octet stream as input. If the actual
+          * input is an XPath node-set, then the signature application should
+          * attempt to convert it to octets (apply Canonical XML]) as described
+          * in the Reference Processing Model (section 4.3.3.2).
+          */
+         Source xmlSource =
+            new StreamSource(new ByteArrayInputStream(input.getBytes()));
+         Source stylesheet;
+
+         /*
+          * This complicated transformation of the stylesheet itself is necessary
+          * because of the need to get the pure style sheet. If we simply say
+          * Source stylesheet = new DOMSource(this._xsltElement);
+          * whereby this._xsltElement is not the rootElement of the Document,
+          * this causes problems;
+          * so we convert the stylesheet to byte[] and use this as input stream
+          */
+         {
+            ByteArrayOutputStream os = new ByteArrayOutputStream();
+            Transformer transformer = tFactory.newTransformer();
+            DOMSource source = new DOMSource(_xsltElement);
+            StreamResult result = new StreamResult(os);
+
+            transformer.transform(source, result);
+
+            stylesheet =
+               new StreamSource(new ByteArrayInputStream(os.toByteArray()));
+         }
+
+         Transformer transformer = tFactory.newTransformer(stylesheet);
+         if (baos==null) {
+         	    ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+               StreamResult outputTarget = new StreamResult(baos1);
+               transformer.transform(xmlSource, outputTarget);
+               return new XMLSignatureInput(baos1.toByteArray());
+
+         }
+         StreamResult outputTarget = new StreamResult(baos);
+
+         transformer.transform(xmlSource, outputTarget);         
+         XMLSignatureInput output=new XMLSignatureInput((byte[])null);
+         output.setOutputStream(baos);
+         return output;
+      } catch (XMLSecurityException ex) {
+         Object exArgs[] = { ex.getMessage() };
+
+         throw new TransformationException("generic.EmptyMessage", exArgs, ex);
+      } catch (TransformerConfigurationException ex) {
+         Object exArgs[] = { ex.getMessage() };
+
+         throw new TransformationException("generic.EmptyMessage", exArgs, ex);
+      } catch (TransformerException ex) {
+         Object exArgs[] = { ex.getMessage() };
+
+         throw new TransformationException("generic.EmptyMessage", exArgs, ex);
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/implementations/package.html b/src/org/apache/xml/security/transforms/implementations/package.html
new file mode 100644
index 0000000..e415868
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/implementations/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+implementations of XML Signature transforms.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/transforms/package.html b/src/org/apache/xml/security/transforms/package.html
new file mode 100644
index 0000000..3c507b8
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+the framework for XML Signature transforms.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/transforms/params/InclusiveNamespaces.java b/src/org/apache/xml/security/transforms/params/InclusiveNamespaces.java
new file mode 100644
index 0000000..9dde213
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/params/InclusiveNamespaces.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.params;
+
+
+
+import java.util.Iterator;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.StringTokenizer;
+import java.util.TreeSet;
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.transforms.TransformParam;
+import org.apache.xml.security.utils.ElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * This Object serves as Content for the ds:Transforms for exclusive
+ * Canonicalization.
+ * <BR />
+ * It implements the {@link Element} interface
+ * and can be used directly in a DOM tree.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class InclusiveNamespaces extends ElementProxy
+        implements TransformParam {
+
+   /** Field _TAG_EC_INCLUSIVENAMESPACES */
+   public static final String _TAG_EC_INCLUSIVENAMESPACES =
+      "InclusiveNamespaces";
+
+   /** Field _ATT_EC_PREFIXLIST */
+   public static final String _ATT_EC_PREFIXLIST = "PrefixList";
+
+   /** Field ExclusiveCanonicalizationNamespace */
+   public static final String ExclusiveCanonicalizationNamespace =
+      "http://www.w3.org/2001/10/xml-exc-c14n#";
+
+   /**
+    * Constructor XPathContainer
+    *
+    * @param doc
+    * @param prefixList
+    */
+   public InclusiveNamespaces(Document doc, String prefixList) {
+      this(doc, InclusiveNamespaces.prefixStr2Set(prefixList));
+   }
+
+   /**
+    * Constructor InclusiveNamespaces
+    *
+    * @param doc
+    * @param prefixes
+    */
+   public InclusiveNamespaces(Document doc, Set prefixes) {
+
+      super(doc);
+
+      StringBuffer sb = new StringBuffer();
+      SortedSet prefixList = new TreeSet(prefixes);
+
+
+      Iterator it = prefixList.iterator();
+
+      while (it.hasNext()) {
+         String prefix = (String) it.next();
+
+         if (prefix.equals("xmlns")) {
+            sb.append("#default ");
+         } else {
+            sb.append(prefix + " ");
+         }
+      }
+
+      this._constructionElement
+         .setAttributeNS(null, InclusiveNamespaces._ATT_EC_PREFIXLIST,
+                       sb.toString().trim());
+   }
+
+   /**
+    * Method getInclusiveNamespaces
+    *
+    * @return The Inclusive Namespace string
+    */
+   public String getInclusiveNamespaces() {
+      return this._constructionElement
+         .getAttributeNS(null, InclusiveNamespaces._ATT_EC_PREFIXLIST);
+   }
+
+   /**
+    * Constructor InclusiveNamespaces
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public InclusiveNamespaces(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Decodes the <code>inclusiveNamespaces</code> String and returns all
+    * selected namespace prefixes as a Set. The <code>#default</code>
+    * namespace token is represented as an empty namespace prefix
+    * (<code>"xmlns"</code>).
+    * <BR/>
+    * The String <code>inclusiveNamespaces=" xenc    ds #default"</code>
+    * is returned as a Set containing the following Strings:
+    * <UL>
+    * <LI><code>xmlns</code></LI>
+    * <LI><code>xenc</code></LI>
+    * <LI><code>ds</code></LI>
+    * </UL>
+    *
+    * @param inclusiveNamespaces
+    * @return A set to string
+    */
+   public static SortedSet prefixStr2Set(String inclusiveNamespaces) {
+
+      SortedSet prefixes = new TreeSet();
+
+      if ((inclusiveNamespaces == null)
+              || (inclusiveNamespaces.length() == 0)) {
+         return prefixes;
+      }
+
+      StringTokenizer st = new StringTokenizer(inclusiveNamespaces, " \t\r\n");
+
+      while (st.hasMoreTokens()) {
+         String prefix = st.nextToken();
+
+         if (prefix.equals("#default")) {
+            prefixes.add("xmlns" );
+         } else {
+            prefixes.add( prefix);
+         }
+      }
+
+      return prefixes;
+   }
+
+   /**
+    * Method getBaseNamespace
+    *
+    * @inheritDoc
+    */
+   public String getBaseNamespace() {
+      return InclusiveNamespaces.ExclusiveCanonicalizationNamespace;
+   }
+
+   /**
+    * Method getBaseLocalName
+    *
+    * @inheritDoc
+    */
+   public String getBaseLocalName() {
+      return InclusiveNamespaces._TAG_EC_INCLUSIVENAMESPACES;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/params/XPath2FilterContainer.java b/src/org/apache/xml/security/transforms/params/XPath2FilterContainer.java
new file mode 100644
index 0000000..e2cf1c2
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/params/XPath2FilterContainer.java
@@ -0,0 +1,310 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.params;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.transforms.TransformParam;
+import org.apache.xml.security.utils.ElementProxy;
+import org.apache.xml.security.utils.HelperNodeList;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Implements the parameters for the <A
+ * HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0</A>.
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</A>
+ * @see <A HREF="http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filter v2.0 (editors copy)</A>
+ */
+public class XPath2FilterContainer extends ElementProxy
+        implements TransformParam {
+
+   /** Field _ATT_FILTER */
+   private static final String _ATT_FILTER = "Filter";
+
+   /** Field _ATT_FILTER_VALUE_INTERSECT */
+   private static final String _ATT_FILTER_VALUE_INTERSECT = "intersect";
+
+   /** Field _ATT_FILTER_VALUE_SUBTRACT */
+   private static final String _ATT_FILTER_VALUE_SUBTRACT = "subtract";
+
+   /** Field _ATT_FILTER_VALUE_UNION */
+   private static final String _ATT_FILTER_VALUE_UNION = "union";
+
+   /** Field INTERSECT */
+   public static final String INTERSECT =
+      XPath2FilterContainer._ATT_FILTER_VALUE_INTERSECT;
+
+   /** Field SUBTRACT */
+   public static final String SUBTRACT =
+      XPath2FilterContainer._ATT_FILTER_VALUE_SUBTRACT;
+
+   /** Field UNION */
+   public static final String UNION =
+      XPath2FilterContainer._ATT_FILTER_VALUE_UNION;
+
+   /** Field _TAG_XPATH2 */
+   public static final String _TAG_XPATH2 = "XPath";
+
+   /** Field XPathFiler2NS */
+   public static final String XPathFilter2NS =
+      "http://www.w3.org/2002/06/xmldsig-filter2";
+
+   /**
+    * Constructor XPath2FilterContainer
+    *
+    */
+   private XPath2FilterContainer() {
+
+      // no instantiation
+   }
+
+   /**
+    * Constructor XPath2FilterContainer
+    *
+    * @param doc
+    * @param xpath2filter
+    * @param filterType
+    */
+   private XPath2FilterContainer(Document doc, String xpath2filter,
+                                 String filterType) {
+
+      super(doc);
+
+      this._constructionElement
+         .setAttributeNS(null, XPath2FilterContainer._ATT_FILTER, filterType);
+      this._constructionElement.appendChild(doc.createTextNode(xpath2filter));
+   }
+
+   /**
+    * Constructor XPath2FilterContainer
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   private XPath2FilterContainer(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+
+      String filterStr = this._constructionElement.getAttributeNS(null,
+                            XPath2FilterContainer._ATT_FILTER);
+
+      if (!filterStr
+              .equals(XPath2FilterContainer
+              ._ATT_FILTER_VALUE_INTERSECT) &&!filterStr
+                 .equals(XPath2FilterContainer
+                 ._ATT_FILTER_VALUE_SUBTRACT) &&!filterStr
+                    .equals(XPath2FilterContainer._ATT_FILTER_VALUE_UNION)) {
+         Object exArgs[] = { XPath2FilterContainer._ATT_FILTER, filterStr,
+                             XPath2FilterContainer._ATT_FILTER_VALUE_INTERSECT
+                             + ", "
+                             + XPath2FilterContainer._ATT_FILTER_VALUE_SUBTRACT
+                             + " or "
+                             + XPath2FilterContainer._ATT_FILTER_VALUE_UNION };
+
+         throw new XMLSecurityException("attributeValueIllegal", exArgs);
+      }
+   }
+
+   /**
+    * Creates a new XPath2FilterContainer with the filter type "intersect".
+    *
+    * @param doc
+    * @param xpath2filter
+    * @return the filter.
+    */
+   public static XPath2FilterContainer newInstanceIntersect(Document doc,
+           String xpath2filter) {
+
+      return new XPath2FilterContainer(doc, xpath2filter,
+                                       XPath2FilterContainer
+                                          ._ATT_FILTER_VALUE_INTERSECT);
+   }
+
+   /**
+    * Creates a new XPath2FilterContainer with the filter type "subtract".
+    *
+    * @param doc
+    * @param xpath2filter
+    * @return the filter.
+    */
+   public static XPath2FilterContainer newInstanceSubtract(Document doc,
+           String xpath2filter) {
+
+      return new XPath2FilterContainer(doc, xpath2filter,
+                                       XPath2FilterContainer
+                                          ._ATT_FILTER_VALUE_SUBTRACT);
+   }
+
+   /**
+    * Creates a new XPath2FilterContainer with the filter type "union".
+    *
+    * @param doc
+    * @param xpath2filter
+    * @return the filter
+    */
+   public static XPath2FilterContainer newInstanceUnion(Document doc,
+           String xpath2filter) {
+
+      return new XPath2FilterContainer(doc, xpath2filter,
+                                       XPath2FilterContainer
+                                          ._ATT_FILTER_VALUE_UNION);
+   }
+
+   /**
+    * Method newInstances
+    *
+    * @param doc
+    * @param params
+    * @return the nodelist with the data
+    */
+   public static NodeList newInstances(Document doc, String[][] params) {
+
+      HelperNodeList nl = new HelperNodeList();
+
+      nl.appendChild(doc.createTextNode("\n"));
+
+      for (int i = 0; i < params.length; i++) {
+         String type = params[i][0];
+         String xpath = params[i][1];
+
+         if (!(type.equals(XPath2FilterContainer
+                 ._ATT_FILTER_VALUE_INTERSECT) || type
+                    .equals(XPath2FilterContainer
+                    ._ATT_FILTER_VALUE_SUBTRACT) || type
+                       .equals(XPath2FilterContainer
+                          ._ATT_FILTER_VALUE_UNION))) {
+            throw new IllegalArgumentException("The type(" + i + ")=\"" + type
+                                               + "\" is illegal");
+         }
+
+         XPath2FilterContainer c = new XPath2FilterContainer(doc, xpath, type);
+
+         nl.appendChild(c.getElement());
+         nl.appendChild(doc.createTextNode("\n"));
+      }
+
+      return nl;
+   }
+
+   /**
+    * Creates a XPath2FilterContainer from an existing Element; needed for verification.
+    *
+    * @param element
+    * @param BaseURI
+    * @return the filter
+    *
+    * @throws XMLSecurityException
+    */
+   public static XPath2FilterContainer newInstance(
+           Element element, String BaseURI) throws XMLSecurityException {
+      return new XPath2FilterContainer(element, BaseURI);
+   }
+
+   /**
+    * Returns <code>true</code> if the <code>Filter</code> attribute has value "intersect".
+    *
+    * @return <code>true</code> if the <code>Filter</code> attribute has value "intersect".
+    */
+   public boolean isIntersect() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPath2FilterContainer._ATT_FILTER)
+         .equals(XPath2FilterContainer._ATT_FILTER_VALUE_INTERSECT);
+   }
+
+   /**
+    * Returns <code>true</code> if the <code>Filter</code> attribute has value "subtract".
+    *
+    * @return <code>true</code> if the <code>Filter</code> attribute has value "subtract".
+    */
+   public boolean isSubtract() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPath2FilterContainer._ATT_FILTER)
+         .equals(XPath2FilterContainer._ATT_FILTER_VALUE_SUBTRACT);
+   }
+
+   /**
+    * Returns <code>true</code> if the <code>Filter</code> attribute has value "union".
+    *
+    * @return <code>true</code> if the <code>Filter</code> attribute has value "union".
+    */
+   public boolean isUnion() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPath2FilterContainer._ATT_FILTER)
+         .equals(XPath2FilterContainer._ATT_FILTER_VALUE_UNION);
+   }
+
+   /**
+    * Returns the XPath 2 Filter String
+    *
+    * @return the XPath 2 Filter String
+    */
+   public String getXPathFilterStr() {
+      return this.getTextFromTextChild();
+   }
+
+   /**
+    * Returns the first Text node which contains information from the XPath 2
+    * Filter String. We must use this stupid hook to enable the here() function
+    * to work.
+    *
+    * $todo$ I dunno whether this crashes: <XPath> here()<!-- comment -->/ds:Signature[1]</XPath>
+    * @return the first Text node which contains information from the XPath 2 Filter String
+    */
+   public Node getXPathFilterTextNode() {
+
+      NodeList children = this._constructionElement.getChildNodes();
+      int length = children.getLength();
+
+      for (int i = 0; i < length; i++) {
+         if (children.item(i).getNodeType() == Node.TEXT_NODE) {
+            return children.item(i);
+         }
+      }
+
+      return null;
+   }
+
+   /**
+    * Method getBaseLocalName
+    *
+    * @return the XPATH2 tag
+    */
+   public final String getBaseLocalName() {
+      return XPath2FilterContainer._TAG_XPATH2;
+   }
+
+   /**
+    * Method getBaseNamespace
+    *
+    * @return XPATH2 tag namespace
+    */
+   public final String getBaseNamespace() {
+      return XPath2FilterContainer.XPathFilter2NS;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java b/src/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java
new file mode 100644
index 0000000..ab2ece4
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/params/XPath2FilterContainer04.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.params;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.transforms.TransformParam;
+import org.apache.xml.security.utils.ElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Implements the parameters for the <A
+ * HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0</A>.
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</A>
+ * @see <A HREF="http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filter v2.0 (editors copy)</A>
+ */
+public class XPath2FilterContainer04 extends ElementProxy
+        implements TransformParam {
+
+   /** Field _ATT_FILTER */
+   private static final String _ATT_FILTER = "Filter";
+
+   /** Field _ATT_FILTER_VALUE_INTERSECT */
+   private static final String _ATT_FILTER_VALUE_INTERSECT = "intersect";
+
+   /** Field _ATT_FILTER_VALUE_SUBTRACT */
+   private static final String _ATT_FILTER_VALUE_SUBTRACT = "subtract";
+
+   /** Field _ATT_FILTER_VALUE_UNION */
+   private static final String _ATT_FILTER_VALUE_UNION = "union";
+
+   /** Field _TAG_XPATH2 */
+   public static final String _TAG_XPATH2 = "XPath";
+
+   /** Field XPathFiler2NS */
+   public static final String XPathFilter2NS =
+      "http://www.w3.org/2002/04/xmldsig-filter2";
+
+   /**
+    * Constructor XPath2FilterContainer04
+    *
+    */
+   private XPath2FilterContainer04() {
+
+      // no instantiation
+   }
+
+   /**
+    * Constructor XPath2FilterContainer04
+    *
+    * @param doc
+    * @param xpath2filter
+    * @param filterType
+    */
+   private XPath2FilterContainer04(Document doc, String xpath2filter,
+                                 String filterType) {
+
+      super(doc);
+
+      this._constructionElement.setAttributeNS(null, XPath2FilterContainer04._ATT_FILTER,
+                                             filterType);
+
+      if ((xpath2filter.length() > 2)
+              && (!Character.isWhitespace(xpath2filter.charAt(0)))) {
+         this._constructionElement.appendChild(doc.createTextNode("\n"
+                 + xpath2filter + "\n"));
+      } else {
+         this._constructionElement
+            .appendChild(doc.createTextNode(xpath2filter));
+      }
+   }
+
+   /**
+    * Constructor XPath2FilterContainer04
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   private XPath2FilterContainer04(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      super(element, BaseURI);
+
+      String filterStr =
+         this._constructionElement
+            .getAttributeNS(null, XPath2FilterContainer04._ATT_FILTER);
+
+      if (!filterStr
+              .equals(XPath2FilterContainer04
+              ._ATT_FILTER_VALUE_INTERSECT) &&!filterStr
+                 .equals(XPath2FilterContainer04
+                 ._ATT_FILTER_VALUE_SUBTRACT) &&!filterStr
+                    .equals(XPath2FilterContainer04._ATT_FILTER_VALUE_UNION)) {
+         Object exArgs[] = { XPath2FilterContainer04._ATT_FILTER, filterStr,
+                             XPath2FilterContainer04._ATT_FILTER_VALUE_INTERSECT
+                             + ", "
+                             + XPath2FilterContainer04._ATT_FILTER_VALUE_SUBTRACT
+                             + " or "
+                             + XPath2FilterContainer04._ATT_FILTER_VALUE_UNION };
+
+         throw new XMLSecurityException("attributeValueIllegal", exArgs);
+      }
+   }
+
+   /**
+    * Creates a new XPath2FilterContainer04 with the filter type "intersect".
+    *
+    * @param doc
+    * @param xpath2filter
+    * @return the instance
+    */
+   public static XPath2FilterContainer04 newInstanceIntersect(Document doc,
+           String xpath2filter) {
+
+      return new XPath2FilterContainer04(doc, xpath2filter,
+                                       XPath2FilterContainer04
+                                          ._ATT_FILTER_VALUE_INTERSECT);
+   }
+
+   /**
+    * Creates a new XPath2FilterContainer04 with the filter type "subtract".
+    *
+    * @param doc
+    * @param xpath2filter
+    * @return the instance
+    */
+   public static XPath2FilterContainer04 newInstanceSubtract(Document doc,
+           String xpath2filter) {
+
+      return new XPath2FilterContainer04(doc, xpath2filter,
+                                       XPath2FilterContainer04
+                                          ._ATT_FILTER_VALUE_SUBTRACT);
+   }
+
+   /**
+    * Creates a new XPath2FilterContainer04 with the filter type "union".
+    *
+    * @param doc
+    * @param xpath2filter
+    * @return the instance
+    */
+   public static XPath2FilterContainer04 newInstanceUnion(Document doc,
+           String xpath2filter) {
+
+      return new XPath2FilterContainer04(doc, xpath2filter,
+                                       XPath2FilterContainer04
+                                          ._ATT_FILTER_VALUE_UNION);
+   }
+
+   /**
+    * Creates a XPath2FilterContainer04 from an existing Element; needed for verification.
+    *
+    * @param element
+    * @param BaseURI
+    * @return the instance
+    *
+    * @throws XMLSecurityException
+    */
+   public static XPath2FilterContainer04 newInstance(
+           Element element, String BaseURI) throws XMLSecurityException {
+      return new XPath2FilterContainer04(element, BaseURI);
+   }
+
+   /**
+    * Returns <code>true</code> if the <code>Filter</code> attribute has value "intersect".
+    *
+    * @return <code>true</code> if the <code>Filter</code> attribute has value "intersect".
+    */
+   public boolean isIntersect() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPath2FilterContainer04._ATT_FILTER)
+         .equals(XPath2FilterContainer04._ATT_FILTER_VALUE_INTERSECT);
+   }
+
+   /**
+    * Returns <code>true</code> if the <code>Filter</code> attribute has value "subtract".
+    *
+    * @return <code>true</code> if the <code>Filter</code> attribute has value "subtract".
+    */
+   public boolean isSubtract() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPath2FilterContainer04._ATT_FILTER)
+         .equals(XPath2FilterContainer04._ATT_FILTER_VALUE_SUBTRACT);
+   }
+
+   /**
+    * Returns <code>true</code> if the <code>Filter</code> attribute has value "union".
+    *
+    * @return <code>true</code> if the <code>Filter</code> attribute has value "union".
+    */
+   public boolean isUnion() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPath2FilterContainer04._ATT_FILTER)
+         .equals(XPath2FilterContainer04._ATT_FILTER_VALUE_UNION);
+   }
+
+   /**
+    * Returns the XPath 2 Filter String
+    *
+    * @return the XPath 2 Filter String
+    */
+   public String getXPathFilterStr() {
+      return this.getTextFromTextChild();
+   }
+
+   /**
+    * Returns the first Text node which contains information from the XPath 2
+    * Filter String. We must use this stupid hook to enable the here() function
+    * to work.
+    *
+    * $todo$ I dunno whether this crashes: <XPath> here()<!-- comment -->/ds:Signature[1]</XPath>
+    * @return the first Text node which contains information from the XPath 2 Filter String
+    */
+   public Node getXPathFilterTextNode() {
+      NodeList children = this._constructionElement.getChildNodes();
+      int length = children.getLength();
+
+      for (int i = 0; i < length; i++) {
+         if (children.item(i).getNodeType() == Node.TEXT_NODE) {
+            return children.item(i);
+         }
+      }
+
+      return null;
+   }
+
+   /** @inheritDoc */
+   public final String getBaseLocalName() {
+      return XPath2FilterContainer04._TAG_XPATH2;
+   }
+
+   /** @inheritDoc */
+   public final String getBaseNamespace() {
+      return XPath2FilterContainer04.XPathFilter2NS;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/params/XPathContainer.java b/src/org/apache/xml/security/transforms/params/XPathContainer.java
new file mode 100644
index 0000000..f9fd82e
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/params/XPathContainer.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.params;
+
+
+
+import org.apache.xml.security.transforms.TransformParam;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.SignatureElementProxy;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+
+/**
+ * This Object serves both as namespace prefix resolver and as container for
+ * the <CODE>ds:XPath</CODE> Element. It implements the {@link org.w3c.dom.Element} interface
+ * and can be used directly in a DOM tree.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class XPathContainer extends SignatureElementProxy implements TransformParam {
+
+   /**
+    * Constructor XPathContainer
+    *
+    * @param doc
+    */
+   public XPathContainer(Document doc) {
+      super(doc);
+   }
+
+   /**
+    * Sets the TEXT value of the <CODE>ds:XPath</CODE> Element.
+    *
+    * @param xpath
+    */
+   public void setXPath(String xpath) {
+
+      if (this._constructionElement.getChildNodes() != null) {
+         NodeList nl = this._constructionElement.getChildNodes();
+
+         for (int i = 0; i < nl.getLength(); i++) {
+            this._constructionElement.removeChild(nl.item(i));
+         }
+      }
+
+      Text xpathText = this._doc.createTextNode(xpath);
+      this._constructionElement.appendChild(xpathText);
+   }
+
+   /**
+    * Returns the TEXT value of the <CODE>ds:XPath</CODE> Element.
+    *
+    * @return the TEXT value of the <CODE>ds:XPath</CODE> Element.
+    */
+   public String getXPath() {
+      return this.getTextFromTextChild();
+   }
+
+   /** @inheritDoc */
+   public String getBaseLocalName() {
+      return Constants._TAG_XPATH;
+   }
+}
diff --git a/src/org/apache/xml/security/transforms/params/XPathFilterCHGPContainer.java b/src/org/apache/xml/security/transforms/params/XPathFilterCHGPContainer.java
new file mode 100644
index 0000000..8d517e4
--- /dev/null
+++ b/src/org/apache/xml/security/transforms/params/XPathFilterCHGPContainer.java
@@ -0,0 +1,317 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.transforms.params;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.transforms.TransformParam;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.ElementProxy;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * Implements the parameters for a custom Transform which has a better performance
+ * thatn the xfilter2.
+ *
+ * @author $Author$
+ */
+public class XPathFilterCHGPContainer extends ElementProxy
+        implements TransformParam {
+
+   /** Field _ATT_FILTER_VALUE_INTERSECT */
+   private static final String _TAG_INCLUDE_BUT_SEARCH = "IncludeButSearch";
+
+   /** Field _ATT_FILTER_VALUE_SUBTRACT */
+   private static final String _TAG_EXCLUDE_BUT_SEARCH = "ExcludeButSearch";
+
+   /** Field _ATT_FILTER_VALUE_UNION */
+   private static final String _TAG_EXCLUDE = "Exclude";
+
+   /** Field _TAG_XPATHCHGP */
+   public static final String _TAG_XPATHCHGP = "XPathAlternative";
+
+   /** Field _ATT_INCLUDESLASH */
+   public static final String _ATT_INCLUDESLASH = "IncludeSlashPolicy";
+
+   /** Field IncludeSlash           */
+   public static final boolean IncludeSlash = true;
+
+   /** Field ExcludeSlash           */
+   public static final boolean ExcludeSlash = false;
+
+   /**
+    * Constructor XPathFilterCHGPContainer
+    *
+    */
+   private XPathFilterCHGPContainer() {
+
+      // no instantiation
+   }
+
+   /**
+    * Constructor XPathFilterCHGPContainer
+    *
+    * @param doc
+    * @param includeSlashPolicy
+    * @param includeButSearch
+    * @param excludeButSearch
+    * @param exclude
+    */
+   private XPathFilterCHGPContainer(Document doc, boolean includeSlashPolicy,
+                                    String includeButSearch,
+                                    String excludeButSearch, String exclude) {
+
+      super(doc);
+
+      if (includeSlashPolicy) {
+         this._constructionElement
+            .setAttributeNS(null, XPathFilterCHGPContainer._ATT_INCLUDESLASH, "true");
+      } else {
+         this._constructionElement
+            .setAttributeNS(null, XPathFilterCHGPContainer._ATT_INCLUDESLASH, "false");
+      }
+
+      if ((includeButSearch != null)
+              && (includeButSearch.trim().length() > 0)) {
+         Element includeButSearchElem =
+            ElementProxy.createElementForFamily(doc, this.getBaseNamespace(),
+                                        XPathFilterCHGPContainer
+                                           ._TAG_INCLUDE_BUT_SEARCH);
+
+         includeButSearchElem
+            .appendChild(this._doc
+               .createTextNode(indentXPathText(includeButSearch)));
+         this._constructionElement.appendChild(doc.createTextNode("\n"));
+         this._constructionElement.appendChild(includeButSearchElem);
+      }
+
+      if ((excludeButSearch != null)
+              && (excludeButSearch.trim().length() > 0)) {
+         Element excludeButSearchElem =
+         ElementProxy.createElementForFamily(doc, this.getBaseNamespace(),
+                                        XPathFilterCHGPContainer
+                                           ._TAG_EXCLUDE_BUT_SEARCH);
+
+         excludeButSearchElem
+            .appendChild(this._doc
+               .createTextNode(indentXPathText(excludeButSearch)));
+         this._constructionElement.appendChild(doc.createTextNode("\n"));
+         this._constructionElement.appendChild(excludeButSearchElem);
+      }
+
+      if ((exclude != null) && (exclude.trim().length() > 0)) {
+         Element excludeElem = ElementProxy.createElementForFamily(doc,
+                                  this.getBaseNamespace(),
+                                  XPathFilterCHGPContainer._TAG_EXCLUDE);
+
+         excludeElem
+            .appendChild(this._doc.createTextNode(indentXPathText(exclude)));
+         this._constructionElement.appendChild(doc.createTextNode("\n"));
+         this._constructionElement.appendChild(excludeElem);
+      }
+
+      this._constructionElement.appendChild(doc.createTextNode("\n"));
+   }
+
+   /**
+    * Method indentXPathText
+    *
+    * @param xp
+    * @return the string with enters
+    */
+   static String indentXPathText(String xp) {
+
+      if ((xp.length() > 2) && (!Character.isWhitespace(xp.charAt(0)))) {
+         return "\n" + xp + "\n";
+      } 
+      return xp;
+      
+   }
+
+   /**
+    * Constructor XPathFilterCHGPContainer
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   private XPathFilterCHGPContainer(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /**
+    * Creates a new XPathFilterCHGPContainer; needed for generation.
+    *
+    * @param doc
+    * @param includeSlashPolicy
+    * @param includeButSearch
+    * @param excludeButSearch
+    * @param exclude
+    * @return the created object
+    */
+   public static XPathFilterCHGPContainer getInstance(Document doc,
+           boolean includeSlashPolicy, String includeButSearch,
+           String excludeButSearch, String exclude) {
+
+      return new XPathFilterCHGPContainer(doc, includeSlashPolicy,
+                                          includeButSearch, excludeButSearch,
+                                          exclude);
+   }
+
+   /**
+    * Creates a XPathFilterCHGPContainer from an existing Element; needed for verification.
+    *
+    * @param element
+    * @param BaseURI
+    *
+    * @throws XMLSecurityException
+    * @return the created object.
+    */
+   public static XPathFilterCHGPContainer getInstance(
+           Element element, String BaseURI) throws XMLSecurityException {
+      return new XPathFilterCHGPContainer(element, BaseURI);
+   }
+
+   /**
+    * Method getXStr
+    *
+    * @param type
+    * @return The Xstr
+    */
+   private String getXStr(String type) {
+
+      if (this.length(this.getBaseNamespace(), type) != 1) {
+         return "";
+      }
+
+      Element xElem = XMLUtils.selectNode(this._constructionElement.getFirstChild(), this.getBaseNamespace(),
+                         type,0);
+
+      return XMLUtils.getFullTextChildrenFromElement(xElem);
+   }
+
+   /**
+    * Method getIncludeButSearch
+    *
+    * @return the string
+    */
+   public String getIncludeButSearch() {
+      return this.getXStr(XPathFilterCHGPContainer._TAG_INCLUDE_BUT_SEARCH);
+   }
+
+   /**
+    * Method getExcludeButSearch
+    *
+    * @return the string
+    */
+   public String getExcludeButSearch() {
+      return this.getXStr(XPathFilterCHGPContainer._TAG_EXCLUDE_BUT_SEARCH);
+   }
+
+   /**
+    * Method getExclude
+    *
+    * @return the string
+    */
+   public String getExclude() {
+      return this.getXStr(XPathFilterCHGPContainer._TAG_EXCLUDE);
+   }
+
+   /**
+    * Method getIncludeSlashPolicy
+    *
+    * @return the string
+    */
+   public boolean getIncludeSlashPolicy() {
+
+      return this._constructionElement
+         .getAttributeNS(null, XPathFilterCHGPContainer._ATT_INCLUDESLASH)
+         .equals("true");
+   }
+
+   /**
+    * Returns the first Text node which contains information from the XPath
+    * Filter String. We must use this stupid hook to enable the here() function
+    * to work.
+    *
+    * $todo$ I dunno whether this crashes: <XPath> he<!-- comment -->re()/ds:Signature[1]</XPath>
+    * @param type
+    * @return the first Text node which contains information from the XPath 2 Filter String
+    */
+   private Node getHereContextNode(String type) {
+
+      if (this.length(this.getBaseNamespace(), type) != 1) {
+         return null;
+      }
+
+      return XMLUtils.selectNodeText(this._constructionElement.getFirstChild(), this.getBaseNamespace(),
+                         type,0);
+   }
+
+   /**
+    * Method getHereContextNodeIncludeButSearch
+    *
+    * @return the string
+    */
+   public Node getHereContextNodeIncludeButSearch() {
+      return this
+         .getHereContextNode(XPathFilterCHGPContainer._TAG_INCLUDE_BUT_SEARCH);
+   }
+
+   /**
+    * Method getHereContextNodeExcludeButSearch
+    *
+    * @return the string
+    */
+   public Node getHereContextNodeExcludeButSearch() {
+      return this
+         .getHereContextNode(XPathFilterCHGPContainer._TAG_EXCLUDE_BUT_SEARCH);
+   }
+
+   /**
+    * Method getHereContextNodeExclude
+    *
+    * @return the string
+    */
+   public Node getHereContextNodeExclude() {
+      return this.getHereContextNode(XPathFilterCHGPContainer._TAG_EXCLUDE);
+   }
+
+   /**
+    * Method getBaseLocalName
+    *
+    * @inheritDoc
+    */
+   public final String getBaseLocalName() {
+      return XPathFilterCHGPContainer._TAG_XPATHCHGP;
+   }
+
+   /**
+    * Method getBaseNamespace
+    *
+    * @inheritDoc
+    */
+   public final String getBaseNamespace() {
+      return Transforms.TRANSFORM_XPATHFILTERCHGP;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/Base64.java b/src/org/apache/xml/security/utils/Base64.java
new file mode 100644
index 0000000..bec584b
--- /dev/null
+++ b/src/org/apache/xml/security/utils/Base64.java
@@ -0,0 +1,788 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.math.BigInteger;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+import org.xml.sax.InputSource;
+
+
+/**
+ * Implementation of MIME's Base64 encoding and decoding conversions.
+ * Optimized code. (raw version taken from oreilly.jonathan.util, 
+ * and currently org.apache.xerces.ds.util.Base64)
+ *
+ * @author Raul Benito(Of the xerces copy, and little adaptations).
+ * @author Anli Shundi
+ * @author Christian Geuer-Pollmann
+ * @see <A HREF="ftp://ftp.isi.edu/in-notes/rfc2045.txt">RFC 2045</A>
+ * @see org.apache.xml.security.transforms.implementations.TransformBase64Decode
+ */
+public class Base64 {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Base64.class.getName());
+
+
+   /** Field BASE64DEFAULTLENGTH */
+   public static final int BASE64DEFAULTLENGTH = 76;
+
+   /** Field _base64length */
+   static int _base64length = Base64.BASE64DEFAULTLENGTH;
+
+   private Base64() {
+     // we don't allow instantiation
+   }
+
+   /**
+    * Returns a byte-array representation of a <code>{@link BigInteger}<code>.
+    * No sign-bit is outputed.
+    *
+    * <b>N.B.:</B> <code>{@link BigInteger}<code>'s toByteArray
+    * retunrs eventually longer arrays because of the leading sign-bit.
+    *
+    * @param big <code>BigInteger<code> to be converted
+    * @param bitlen <code>int<code> the desired length in bits of the representation
+    * @return a byte array with <code>bitlen</code> bits of <code>big</code>
+    */
+   static byte[] getBytes(BigInteger big, int bitlen) {
+    
+      //round bitlen
+      bitlen = ((bitlen + 7) >> 3) << 3;
+
+      if (bitlen < big.bitLength()) {
+         throw new IllegalArgumentException(I18n
+            .translate("utils.Base64.IllegalBitlength"));
+      }
+
+      byte[] bigBytes = big.toByteArray();
+
+      if (((big.bitLength() % 8) != 0)
+              && (((big.bitLength() / 8) + 1) == (bitlen / 8))) {
+         return bigBytes;
+      }
+
+         // some copying needed
+         int startSrc = 0;    // no need to skip anything
+         int bigLen = bigBytes.length;    //valid length of the string
+
+         if ((big.bitLength() % 8) == 0) {    // correct values
+            startSrc = 1;    // skip sign bit
+
+            bigLen--;    // valid length of the string
+         }
+
+         int startDst = bitlen / 8 - bigLen;    //pad with leading nulls
+         byte[] resizedBytes = new byte[bitlen / 8];
+
+         System.arraycopy(bigBytes, startSrc, resizedBytes, startDst, bigLen);
+
+         return resizedBytes;
+      
+   }
+
+   /**
+    * Encode in Base64 the given <code>{@link BigInteger}<code>.
+    *
+    * @param big
+    * @return String with Base64 encoding
+    */
+   public static String encode(BigInteger big) {
+      return encode(getBytes(big, big.bitLength()));
+   }
+
+   /**
+    * Returns a byte-array representation of a <code>{@link BigInteger}<code>.
+    * No sign-bit is outputed.
+    *
+    * <b>N.B.:</B> <code>{@link BigInteger}<code>'s toByteArray
+    * retunrs eventually longer arrays because of the leading sign-bit.
+    *
+    * @param big <code>BigInteger<code> to be converted
+    * @param bitlen <code>int<code> the desired length in bits of the representation
+    * @return a byte array with <code>bitlen</code> bits of <code>big</code>
+    */
+   public static byte[] encode(BigInteger big, int bitlen) {
+
+      //round bitlen
+      bitlen = ((bitlen + 7) >> 3) << 3;
+
+      if (bitlen < big.bitLength()) {
+         throw new IllegalArgumentException(I18n
+            .translate("utils.Base64.IllegalBitlength"));
+      }
+
+      byte[] bigBytes = big.toByteArray();
+
+      if (((big.bitLength() % 8) != 0)
+              && (((big.bitLength() / 8) + 1) == (bitlen / 8))) {
+         return bigBytes;
+      }
+
+         // some copying needed
+         int startSrc = 0;    // no need to skip anything
+         int bigLen = bigBytes.length;    //valid length of the string
+
+         if ((big.bitLength() % 8) == 0) {    // correct values
+            startSrc = 1;    // skip sign bit
+
+            bigLen--;    // valid length of the string
+         }
+
+         int startDst = bitlen / 8 - bigLen;    //pad with leading nulls
+         byte[] resizedBytes = new byte[bitlen / 8];
+
+         System.arraycopy(bigBytes, startSrc, resizedBytes, startDst, bigLen);
+
+         return resizedBytes;
+      
+   }
+
+   /**
+    * Method decodeBigIntegerFromElement
+    *
+    * @param element
+    * @return the biginter obtained from the node
+    * @throws Base64DecodingException
+    */
+   public static BigInteger decodeBigIntegerFromElement(Element element) throws Base64DecodingException
+   {
+      return new BigInteger(1, Base64.decode(element));
+   }
+
+   /**
+    * Method decodeBigIntegerFromText
+    *
+    * @param text
+    * @return the biginter obtained from the text node
+    * @throws Base64DecodingException
+    */
+   public static BigInteger decodeBigIntegerFromText(Text text) throws Base64DecodingException
+   {
+      return new BigInteger(1, Base64.decode(text.getData()));
+   }
+
+   /**
+    * This method takes an (empty) Element and a BigInteger and adds the
+    * base64 encoded BigInteger to the Element.
+    *
+    * @param element
+    * @param biginteger
+    */
+   public static void fillElementWithBigInteger(Element element,
+           BigInteger biginteger) {
+
+      String encodedInt = encode(biginteger);
+
+      if (encodedInt.length() > 76) {
+         encodedInt = "\n" + encodedInt + "\n";
+      }
+
+      Document doc = element.getOwnerDocument();
+      Text text = doc.createTextNode(encodedInt);
+
+      element.appendChild(text);
+   }
+
+   /**
+    * Method decode
+    *
+    * Takes the <CODE>Text</CODE> children of the Element and interprets
+    * them as input for the <CODE>Base64.decode()</CODE> function.
+    *
+    * @param element
+    * @return the byte obtained of the decoding the element
+    * $todo$ not tested yet
+    * @throws Base64DecodingException
+    */
+   public static byte[] decode(Element element) throws Base64DecodingException {
+
+      Node sibling = element.getFirstChild();
+      StringBuffer sb = new StringBuffer();
+
+      while (sibling!=null) {
+         if (sibling.getNodeType() == Node.TEXT_NODE) {
+            Text t = (Text) sibling;
+
+            sb.append(t.getData());
+         }
+         sibling=sibling.getNextSibling();
+      }
+
+      return decode(sb.toString());
+   }
+
+   /**
+    * Method encodeToElement
+    *
+    * @param doc
+    * @param localName
+    * @param bytes
+    * @return an Element with the base64 encoded in the text.
+    *
+    */
+   public static Element encodeToElement(Document doc, String localName,
+                                         byte[] bytes) {
+
+      Element el = XMLUtils.createElementInSignatureSpace(doc, localName);
+      Text text = doc.createTextNode(encode(bytes));
+
+      el.appendChild(text);
+
+      return el;
+   }
+
+   /**
+    * Method decode
+    *
+    *
+    * @param base64
+    * @return the UTF bytes of the base64
+    * @throws Base64DecodingException
+    *
+    */
+   public static byte[] decode(byte[] base64) throws Base64DecodingException  {   	   
+         return decodeInternal(base64);
+   }
+
+
+
+   /**
+    * Encode a byte array and fold lines at the standard 76th character.
+    *
+    * @param binaryData <code>byte[]<code> to be base64 encoded
+    * @return the <code>String<code> with encoded data
+    */
+   public static String encode(byte[] binaryData) {
+        return encode(binaryData,BASE64DEFAULTLENGTH);
+   }
+   
+   /**
+    * Base64 decode the lines from the reader and return an InputStream
+    * with the bytes.
+    *
+    *
+    * @param reader
+    * @return InputStream with the decoded bytes
+    * @exception IOException passes what the reader throws
+    * @throws IOException
+    * @throws Base64DecodingException
+    */
+   public static byte[] decode(BufferedReader reader)
+           throws IOException, Base64DecodingException {
+
+      UnsyncByteArrayOutputStream baos = new UnsyncByteArrayOutputStream();
+      String line;
+
+      while (null != (line = reader.readLine())) {
+         byte[] bytes = decode(line);
+
+         baos.write(bytes);
+      }
+
+      return baos.toByteArray();
+   }
+
+   /**
+    * Method main
+    *
+    *
+    * @param args
+    *
+    * @throws Exception
+    */
+   public static void main(String[] args) throws Exception {
+
+      DocumentBuilderFactory docBuilderFactory =
+         DocumentBuilderFactory.newInstance();
+      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
+      String testString1 =
+         "<container><base64 value=\"Should be 'Hallo'\">SGFsbG8=</base64></container>";
+      InputSource inputSource = new InputSource(new StringReader(testString1));
+      Document doc = docBuilder.parse(inputSource);
+      Element base64Elem =
+         (Element) doc.getDocumentElement().getChildNodes().item(0);
+
+      System.out.println(new String(decode(base64Elem)));
+   }
+   static private final int  BASELENGTH         = 255;
+   static private final int  LOOKUPLENGTH       = 64;
+   static private final int  TWENTYFOURBITGROUP = 24;
+   static private final int  EIGHTBIT           = 8;
+   static private final int  SIXTEENBIT         = 16;
+   static private final int  FOURBYTE           = 4;
+   static private final int  SIGN               = -128;
+   static private final char PAD                = '=';   
+   static final private byte [] base64Alphabet        = new byte[BASELENGTH];
+   static final private char [] lookUpBase64Alphabet  = new char[LOOKUPLENGTH];
+
+   static {
+
+       for (int i = 0; i<BASELENGTH; i++) {
+           base64Alphabet[i] = -1;
+       }
+       for (int i = 'Z'; i >= 'A'; i--) {
+           base64Alphabet[i] = (byte) (i-'A');
+       }
+       for (int i = 'z'; i>= 'a'; i--) {
+           base64Alphabet[i] = (byte) ( i-'a' + 26);
+       }
+
+       for (int i = '9'; i >= '0'; i--) {
+           base64Alphabet[i] = (byte) (i-'0' + 52);
+       }
+
+       base64Alphabet['+']  = 62;
+       base64Alphabet['/']  = 63;
+
+       for (int i = 0; i<=25; i++)
+           lookUpBase64Alphabet[i] = (char)('A'+i);
+
+       for (int i = 26,  j = 0; i<=51; i++, j++)
+           lookUpBase64Alphabet[i] = (char)('a'+ j);
+
+       for (int i = 52,  j = 0; i<=61; i++, j++)
+           lookUpBase64Alphabet[i] = (char)('0' + j);
+       lookUpBase64Alphabet[62] = '+';
+       lookUpBase64Alphabet[63] = '/';
+
+   }
+
+   protected static final boolean isWhiteSpace(byte octect) {
+       return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9);
+   }
+
+   protected static final boolean isPad(byte octect) {
+       return (octect == PAD);
+   }
+
+
+   /**
+    * Encodes hex octects into Base64
+    *
+    * @param binaryData Array containing binaryData
+    * @return Encoded Base64 array
+    */
+   /**
+    * Encode a byte array in Base64 format and return an optionally
+    * wrapped line.
+    *
+    * @param binaryData <code>byte[]</code> data to be encoded
+    * @param length <code>int<code> length of wrapped lines; No wrapping if less than 4.
+    * @return a <code>String</code> with encoded data
+    */
+    public static String encode(byte[] binaryData,int length) {
+        
+    	if (length<4) {
+    		length=Integer.MAX_VALUE;
+        }
+
+       if (binaryData == null)
+           return null;
+
+       int      lengthDataBits    = binaryData.length*EIGHTBIT;
+       if (lengthDataBits == 0) {
+           return "";
+       }
+       
+       int      fewerThan24bits   = lengthDataBits%TWENTYFOURBITGROUP;
+       int      numberTriplets    = lengthDataBits/TWENTYFOURBITGROUP;
+       int      numberQuartet     = fewerThan24bits != 0 ? numberTriplets+1 : numberTriplets;
+       int      quartesPerLine    = length/4;
+       int      numberLines       = (numberQuartet-1)/quartesPerLine;
+       char     encodedData[]     = null;
+
+       encodedData = new char[numberQuartet*4+numberLines];
+
+       byte k=0, l=0, b1=0,b2=0,b3=0;
+
+       int encodedIndex = 0;
+       int dataIndex   = 0;
+       int i           = 0;
+      
+
+       for (int line = 0; line < numberLines; line++) {
+           for (int quartet = 0; quartet < 19; quartet++) {
+               b1 = binaryData[dataIndex++];
+               b2 = binaryData[dataIndex++];
+               b3 = binaryData[dataIndex++];
+
+
+               l  = (byte)(b2 & 0x0f);
+               k  = (byte)(b1 & 0x03);
+
+               byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
+
+               byte val2 = ((b2 & SIGN)==0)?(byte)(b2>>4):(byte)((b2)>>4^0xf0);
+               byte val3 = ((b3 & SIGN)==0)?(byte)(b3>>6):(byte)((b3)>>6^0xfc);
+
+
+               encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
+               encodedData[encodedIndex++] = lookUpBase64Alphabet[ val2 | ( k<<4 )];
+               encodedData[encodedIndex++] = lookUpBase64Alphabet[ (l <<2 ) | val3 ];
+               encodedData[encodedIndex++] = lookUpBase64Alphabet[ b3 & 0x3f ];
+
+               i++;
+           }           
+           	encodedData[encodedIndex++] = 0xa;           
+       }
+
+       for (; i<numberTriplets; i++) {
+           b1 = binaryData[dataIndex++];
+           b2 = binaryData[dataIndex++];
+           b3 = binaryData[dataIndex++];
+
+
+           l  = (byte)(b2 & 0x0f);
+           k  = (byte)(b1 & 0x03);
+
+           byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
+
+           byte val2 = ((b2 & SIGN)==0)?(byte)(b2>>4):(byte)((b2)>>4^0xf0);
+           byte val3 = ((b3 & SIGN)==0)?(byte)(b3>>6):(byte)((b3)>>6^0xfc);
+
+
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ val2 | ( k<<4 )];
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ (l <<2 ) | val3 ];
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ b3 & 0x3f ];
+       }
+
+       // form integral number of 6-bit groups
+       if (fewerThan24bits == EIGHTBIT) {
+           b1 = binaryData[dataIndex];
+           k = (byte) ( b1 &0x03 );
+          byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ k<<4 ];
+           encodedData[encodedIndex++] = PAD;
+           encodedData[encodedIndex++] = PAD;
+       } else if (fewerThan24bits == SIXTEENBIT) {
+           b1 = binaryData[dataIndex];
+           b2 = binaryData[dataIndex +1 ];
+           l = ( byte ) ( b2 &0x0f );
+           k = ( byte ) ( b1 &0x03 );
+
+           byte val1 = ((b1 & SIGN)==0)?(byte)(b1>>2):(byte)((b1)>>2^0xc0);
+           byte val2 = ((b2 & SIGN)==0)?(byte)(b2>>4):(byte)((b2)>>4^0xf0);
+
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ val1 ];
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ val2 | ( k<<4 )];
+           encodedData[encodedIndex++] = lookUpBase64Alphabet[ l<<2 ];
+           encodedData[encodedIndex++] = PAD;
+       }
+
+       //encodedData[encodedIndex] = 0xa;
+       
+       return new String(encodedData);
+   }
+
+   /**
+    * Decodes Base64 data into octects
+    *
+    * @param encoded Byte array containing Base64 data
+    * @return Array containind decoded data.
+    * @throws Base64DecodingException
+    */
+   public final static byte[] decode(String encoded) throws Base64DecodingException {
+
+       if (encoded == null)
+           return null;
+
+       return decodeInternal(encoded.getBytes());
+   }
+   protected final static byte[] decodeInternal(byte[] base64Data) throws Base64DecodingException {
+       // remove white spaces
+       int len = removeWhiteSpace(base64Data);
+       
+       if (len%FOURBYTE != 0) {
+           throw new Base64DecodingException("decoding.divisible.four");
+           //should be divisible by four
+       }
+
+       int      numberQuadruple    = (len/FOURBYTE );
+
+       if (numberQuadruple == 0)
+           return new byte[0];
+
+       byte     decodedData[]      = null;
+       byte     b1=0,b2=0,b3=0, b4=0;
+
+
+       int i = 0;
+       int encodedIndex = 0;
+       int dataIndex    = 0;
+       
+       //decodedData      = new byte[ (numberQuadruple)*3];
+       dataIndex=(numberQuadruple-1)*4;
+       encodedIndex=(numberQuadruple-1)*3;
+       //first last bits.
+       b1 = base64Alphabet[base64Data[dataIndex++]];
+       b2 = base64Alphabet[base64Data[dataIndex++]];
+       if ((b1==-1) || (b2==-1)) {
+                throw new Base64DecodingException("decoding.general");//if found "no data" just return null
+        }
+
+        
+        byte d3,d4;
+        b3 = base64Alphabet[d3=base64Data[dataIndex++]];
+        b4 = base64Alphabet[d4=base64Data[dataIndex++]];
+        if ((b3==-1 ) || (b4==-1) ) {
+        	//Check if they are PAD characters
+            if (isPad( d3 ) && isPad( d4)) {               //Two PAD e.g. 3c[Pad][Pad]
+                if ((b2 & 0xf) != 0)//last 4 bits should be zero
+                        throw new Base64DecodingException("decoding.general");
+                decodedData = new byte[ encodedIndex + 1 ];                
+                decodedData[encodedIndex]   = (byte)(  b1 <<2 | b2>>4 ) ;                
+            } else if (!isPad( d3) && isPad(d4)) {               //One PAD  e.g. 3cQ[Pad]                
+                if ((b3 & 0x3 ) != 0)//last 2 bits should be zero
+                        throw new Base64DecodingException("decoding.general");
+                decodedData = new byte[ encodedIndex + 2 ];                
+                decodedData[encodedIndex++] = (byte)(  b1 <<2 | b2>>4 );
+                decodedData[encodedIndex]   = (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) );                
+            } else {
+                throw new Base64DecodingException("decoding.general");//an error  like "3c[Pad]r", "3cdX", "3cXd", "3cXX" where X is non data
+            }
+        } else {
+            //No PAD e.g 3cQl
+            decodedData = new byte[encodedIndex+3];
+            decodedData[encodedIndex++] = (byte)(  b1 <<2 | b2>>4 ) ;
+            decodedData[encodedIndex++] = (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) );
+            decodedData[encodedIndex++] = (byte)( b3<<6 | b4 );
+        }
+        encodedIndex=0;
+        dataIndex=0;
+       //the begin
+       for (i=numberQuadruple-1; i>0; i--) {
+    	   b1 = base64Alphabet[base64Data[dataIndex++]];
+           b2 = base64Alphabet[base64Data[dataIndex++]];
+           b3 = base64Alphabet[base64Data[dataIndex++]];
+           b4 = base64Alphabet[base64Data[dataIndex++]];
+
+           if ( (b1==-1) ||
+        		(b2==-1) ||
+        		(b3==-1) ||
+        		(b4==-1) ) {        	  
+        	   throw new Base64DecodingException("decoding.general");//if found "no data" just return null   
+           }
+                       
+           decodedData[encodedIndex++] = (byte)(  b1 <<2 | b2>>4 ) ;
+           decodedData[encodedIndex++] = (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) );
+           decodedData[encodedIndex++] = (byte)( b3<<6 | b4 );
+       }            
+       return decodedData;
+   }
+   
+   /**
+    * Decodes Base64 data into  outputstream
+    *
+    * @param base64Data Byte array containing Base64 data
+    * @param os the outputstream
+    * @throws IOException
+    * @throws Base64DecodingException
+    */
+   public final static void decode(byte[] base64Data,
+        OutputStream os) throws Base64DecodingException, IOException {	    
+    // remove white spaces
+    int len = removeWhiteSpace(base64Data);
+    
+    if (len%FOURBYTE != 0) {
+        throw new Base64DecodingException("decoding.divisible.four");
+        //should be divisible by four
+    }
+
+    int      numberQuadruple    = (len/FOURBYTE );
+
+    if (numberQuadruple == 0)
+        return;
+
+    //byte     decodedData[]      = null;
+    byte     b1=0,b2=0,b3=0, b4=0;
+
+    int i = 0;
+
+    int dataIndex    = 0;    
+    
+    //the begin
+    for (i=numberQuadruple-1; i>0; i--) {
+    	b1 = base64Alphabet[base64Data[dataIndex++]];
+        b2 = base64Alphabet[base64Data[dataIndex++]];
+        b3 = base64Alphabet[base64Data[dataIndex++]];
+        b4 = base64Alphabet[base64Data[dataIndex++]];
+        if ( (b1==-1) ||
+        	(b2==-1) ||
+        	(b3==-1) ||
+        	(b4==-1) )
+         throw new Base64DecodingException("decoding.general");//if found "no data" just return null
+
+        
+
+        os.write((byte)(  b1 <<2 | b2>>4 ) );
+        os.write((byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) ));
+        os.write( (byte)( b3<<6 | b4 ));
+    }   
+    b1 = base64Alphabet[base64Data[dataIndex++]];
+    b2 = base64Alphabet[base64Data[dataIndex++]];
+    
+    //  first last bits.
+    if ((b1==-1) ||
+        (b2==-1) ){
+             throw new Base64DecodingException("decoding.general");//if found "no data" just return null
+     }
+
+     byte d3,d4;
+     b3= base64Alphabet[d3 = base64Data[dataIndex++]];
+     b4= base64Alphabet[d4 = base64Data[dataIndex++]];
+     if ((b3==-1 ) ||
+          (b4==-1) ) {//Check if they are PAD characters
+         if (isPad( d3 ) && isPad( d4)) {               //Two PAD e.g. 3c[Pad][Pad]
+             if ((b2 & 0xf) != 0)//last 4 bits should be zero
+                     throw new Base64DecodingException("decoding.general");                             
+             os.write( (byte)(  b1 <<2 | b2>>4 ) );                
+         } else if (!isPad( d3) && isPad(d4)) {               //One PAD  e.g. 3cQ[Pad]             
+             if ((b3 & 0x3 ) != 0)//last 2 bits should be zero
+                     throw new Base64DecodingException("decoding.general");                            
+             os.write( (byte)(  b1 <<2 | b2>>4 ));
+             os.write( (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) ));                
+         } else {
+             throw new Base64DecodingException("decoding.general");//an error  like "3c[Pad]r", "3cdX", "3cXd", "3cXX" where X is non data
+         }
+     } else {
+         //No PAD e.g 3cQl         
+         os.write((byte)(  b1 <<2 | b2>>4 ) );
+         os.write( (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) ));
+         os.write((byte)( b3<<6 | b4 ));
+     }
+    return ;
+   }
+   
+   /**
+    * Decodes Base64 data into  outputstream
+    *
+    * @param is containing Base64 data
+    * @param os the outputstream
+    * @throws IOException
+    * @throws Base64DecodingException
+    */
+   public final static void decode(InputStream is,
+        OutputStream os) throws Base64DecodingException, IOException {
+	//byte     decodedData[]      = null;
+    byte     b1=0,b2=0,b3=0, b4=0;    
+
+    int index=0;
+    byte []data=new byte[4];
+    int read;
+    //the begin
+    while ((read=is.read())>0) {
+        byte readed=(byte)read;
+    	if (isWhiteSpace(readed)) {
+    		continue;
+        }
+        if (isPad(readed)) {
+            data[index++]=readed;
+            if (index==3)
+                data[index++]=(byte)is.read();
+            break;   
+        }
+        
+        
+        if ((data[index++]=readed)==-1) {
+            throw new Base64DecodingException("decoding.general");//if found "no data" just return null
+           } 
+        
+        if (index!=4) {
+        	continue;
+        }
+        index=0;
+        b1 = base64Alphabet[data[0]];
+        b2 = base64Alphabet[data[1]];
+        b3 = base64Alphabet[data[2]];
+        b4 = base64Alphabet[data[3]];
+
+        os.write((byte)(  b1 <<2 | b2>>4 ) );
+        os.write((byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) ));
+        os.write( (byte)( b3<<6 | b4 ));
+    }       
+    
+
+    byte     d1=data[0],d2=data[1],d3=data[2], d4=data[3];
+    b1 = base64Alphabet[d1];
+    b2 = base64Alphabet[d2];
+    b3 = base64Alphabet[ d3 ];
+    b4 = base64Alphabet[ d4 ];
+     if ((b3==-1 ) ||
+         (b4==-1) ) {//Check if they are PAD characters
+         if (isPad( d3 ) && isPad( d4)) {               //Two PAD e.g. 3c[Pad][Pad]
+             if ((b2 & 0xf) != 0)//last 4 bits should be zero
+                     throw new Base64DecodingException("decoding.general");                             
+             os.write( (byte)(  b1 <<2 | b2>>4 ) );                
+         } else if (!isPad( d3) && isPad(d4)) {               //One PAD  e.g. 3cQ[Pad]
+             b3 = base64Alphabet[ d3 ];
+             if ((b3 & 0x3 ) != 0)//last 2 bits should be zero
+                     throw new Base64DecodingException("decoding.general");                            
+             os.write( (byte)(  b1 <<2 | b2>>4 ));
+             os.write( (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) ));                
+         } else {
+             throw new Base64DecodingException("decoding.general");//an error  like "3c[Pad]r", "3cdX", "3cXd", "3cXX" where X is non data
+         }
+     } else {
+         //No PAD e.g 3cQl         
+         
+         os.write((byte)(  b1 <<2 | b2>>4 ) );
+         os.write( (byte)(((b2 & 0xf)<<4 ) |( (b3>>2) & 0xf) ));
+         os.write((byte)( b3<<6 | b4 ));
+     }
+    
+    return ;
+   }
+   /**
+    * remove WhiteSpace from MIME containing encoded Base64 data.
+    * 
+    * @param data  the byte array of base64 data (with WS)
+    * @return      the new length
+    */
+   protected static int removeWhiteSpace(byte[] data) {
+       if (data == null)
+           return 0;
+
+       // count characters that's not whitespace
+       int newSize = 0;
+       int len = data.length;
+       for (int i = 0; i < len; i++) {
+           byte dataS=data[i];
+           if (!isWhiteSpace(dataS))
+               data[newSize++] = dataS;
+       }
+       return newSize;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/CachedXPathAPIHolder.java b/src/org/apache/xml/security/utils/CachedXPathAPIHolder.java
new file mode 100644
index 0000000..21674fb
--- /dev/null
+++ b/src/org/apache/xml/security/utils/CachedXPathAPIHolder.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+import org.apache.xpath.CachedXPathAPI;
+import org.w3c.dom.Document;
+
+
+/**
+ * @author Raul Benito
+ */
+public class CachedXPathAPIHolder {
+	 static org.apache.commons.logging.Log log = 
+	        org.apache.commons.logging.LogFactory.getLog(CachedXPathAPIHolder.class.getName());
+
+    static ThreadLocal  local=new ThreadLocal();
+    static ThreadLocal localDoc=new ThreadLocal();
+  
+	/**
+	 * Sets the doc for the xpath transformation. Resets the cache if needed
+	 * @param doc
+	 */
+	public static void setDoc(Document doc) {                    
+       if (localDoc.get()!=doc) {
+            CachedXPathAPI cx=(CachedXPathAPI)local.get();
+            if (cx==null) {
+               cx=new CachedXPathAPI();
+               local.set(cx);
+               localDoc.set(doc);
+               return;
+            }
+            //Different docs reset.
+            cx.getXPathContext().reset();
+            localDoc.set(doc);                     
+        }		
+	}
+    /**
+     * @return the cachexpathapi for this thread
+     */
+    public static CachedXPathAPI getCachedXPathAPI() {        
+        CachedXPathAPI cx=(CachedXPathAPI)local.get();        
+        if (cx==null) {
+            cx=new CachedXPathAPI();
+            local.set(cx);
+            localDoc.set(null);            
+        }
+    	return cx;
+    }
+}
diff --git a/src/org/apache/xml/security/utils/CachedXPathFuncHereAPI.java b/src/org/apache/xml/security/utils/CachedXPathFuncHereAPI.java
new file mode 100644
index 0000000..e5c7331
--- /dev/null
+++ b/src/org/apache/xml/security/utils/CachedXPathFuncHereAPI.java
@@ -0,0 +1,457 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import org.apache.xml.dtm.DTMManager;
+import org.apache.xml.security.transforms.implementations.FuncHere;
+import org.apache.xml.security.transforms.implementations.FuncHereContext;
+import org.apache.xml.utils.PrefixResolver;
+import org.apache.xml.utils.PrefixResolverDefault;
+import org.apache.xpath.CachedXPathAPI;
+import org.apache.xpath.Expression;
+import org.apache.xpath.XPath;
+import org.apache.xpath.XPathContext;
+import org.apache.xpath.compiler.FunctionTable;
+import org.apache.xpath.objects.XObject;
+import org.w3c.dom.*;
+import org.w3c.dom.traversal.NodeIterator;
+
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.SourceLocator;
+import javax.xml.transform.TransformerException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ *
+ * @author $Author$
+ */
+public class CachedXPathFuncHereAPI {
+
+    static org.apache.commons.logging.Log log =
+           org.apache.commons.logging.LogFactory.getLog(CachedXPathFuncHereAPI.class.getName());
+   /**
+    * XPathContext, and thus DTMManager and DTMs, persists through multiple
+    *   calls to this object.
+    */
+   FuncHereContext _funcHereContext = null;
+
+   /** Field _dtmManager */
+   DTMManager _dtmManager = null;
+
+   XPathContext _context = null;
+
+   String xpathStr=null;
+
+   XPath xpath=null;
+
+   static FunctionTable _funcTable = null;
+
+    static {
+        fixupFunctionTable();
+    }
+
+   /**
+    * Method getFuncHereContext
+    * @return the context for this object
+    *
+    */
+   public FuncHereContext getFuncHereContext() {
+      return this._funcHereContext;
+   }
+
+   /**
+    * Constructor CachedXPathFuncHereAPI
+    *
+    */
+   private CachedXPathFuncHereAPI() {}
+
+   /**
+    * Constructor CachedXPathFuncHereAPI
+    *
+    * @param existingXPathContext
+    */
+   public CachedXPathFuncHereAPI(XPathContext existingXPathContext) {
+      this._dtmManager = existingXPathContext.getDTMManager();
+      this._context=existingXPathContext;
+   }
+
+   /**
+    * Constructor CachedXPathFuncHereAPI
+    *
+    * @param previouslyUsed
+    */
+   public CachedXPathFuncHereAPI(CachedXPathAPI previouslyUsed) {
+      this._dtmManager = previouslyUsed.getXPathContext().getDTMManager();
+      this._context=previouslyUsed.getXPathContext();
+   }
+
+   /**
+    * Use an XPath string to select a single node. XPath namespace
+    * prefixes are resolved from the context node, which may not
+    * be what you want (see the next method).
+    *
+    * @param contextNode The node to start searching from.
+    * @param xpathnode A Node containing a valid XPath string.
+    * @return The first node found that matches the XPath, or null.
+    *
+    * @throws TransformerException
+    */
+   public Node selectSingleNode(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return selectSingleNode(contextNode, xpathnode, contextNode);
+   }
+
+   /**
+    * Use an XPath string to select a single node.
+    * XPath namespace prefixes are resolved from the namespaceNode.
+    *
+    * @param contextNode The node to start searching from.
+    * @param xpathnode
+    * @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    * @return The first node found that matches the XPath, or null.
+    *
+    * @throws TransformerException
+    */
+   public Node selectSingleNode(
+           Node contextNode, Node xpathnode, Node namespaceNode)
+              throws TransformerException {
+
+      // Have the XObject return its result as a NodeSetDTM.
+      NodeIterator nl = selectNodeIterator(contextNode, xpathnode,
+                                           namespaceNode);
+
+      // Return the first node, or null
+      return nl.nextNode();
+   }
+
+   /**
+    *   Use an XPath string to select a nodelist.
+    *   XPath namespace prefixes are resolved from the contextNode.
+    *
+    *   @param contextNode The node to start searching from.
+    *   @param xpathnode
+    *   @return A NodeIterator, should never be null.
+    *
+    *  @throws TransformerException
+    */
+   public NodeIterator selectNodeIterator(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return selectNodeIterator(contextNode, xpathnode, contextNode);
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the namespaceNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    * @deprecated
+    */
+   public NodeIterator selectNodeIterator(
+           Node contextNode, Node xpathnode, Node namespaceNode)
+              throws TransformerException {
+
+      // Execute the XPath, and have it return the result
+      XObject list = eval(contextNode, xpathnode, getStrFromNode(xpathnode), namespaceNode);
+
+      // Have the XObject return its result as a NodeSetDTM.
+      return list.nodeset();
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the contextNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    * @deprecated
+    */
+   public NodeList selectNodeList(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return selectNodeList(contextNode, xpathnode, getStrFromNode(xpathnode), contextNode);
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the namespaceNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    * @param str
+    *  @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    */
+   public NodeList selectNodeList(
+           Node contextNode, Node xpathnode, String str, Node namespaceNode)
+              throws TransformerException {
+
+      // Execute the XPath, and have it return the result
+      XObject list = eval(contextNode, xpathnode, str, namespaceNode);
+
+      // Return a NodeList.
+      return list.nodelist();
+   }
+
+   /**
+    *  Evaluate XPath string to an XObject.  Using this method,
+    *  XPath namespace prefixes will be resolved from the namespaceNode.
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @return An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
+    *  @see org.apache.xpath.objects.XObject
+    *  @see org.apache.xpath.objects.XNull
+    *  @see org.apache.xpath.objects.XBoolean
+    *  @see org.apache.xpath.objects.XNumber
+    *  @see org.apache.xpath.objects.XString
+    *  @see org.apache.xpath.objects.XRTreeFrag
+    *
+    * @throws TransformerException
+    * @deprecated
+    */
+   public XObject eval(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return eval(contextNode, xpathnode, getStrFromNode(xpathnode),contextNode);
+   }
+
+   /**
+    *  Evaluate XPath string to an XObject.
+    *  XPath namespace prefixes are resolved from the namespaceNode.
+    *  The implementation of this is a little slow, since it creates
+    *  a number of objects each time it is called.  This could be optimized
+    *  to keep the same objects around, but then thread-safety issues would arise.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    * @param str
+    *  @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    *  @return An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
+    *  @see org.apache.xpath.objects.XObject
+    *  @see org.apache.xpath.objects.XNull
+    *  @see org.apache.xpath.objects.XBoolean
+    *  @see org.apache.xpath.objects.XNumber
+    *  @see org.apache.xpath.objects.XString
+    *  @see org.apache.xpath.objects.XRTreeFrag
+    *
+    * @throws TransformerException
+    */
+   public XObject eval(Node contextNode, Node xpathnode, String str, Node namespaceNode)
+           throws TransformerException {
+      //  Create the XPath object.
+      //String str = CachedXPathFuncHereAPI.getStrFromNode(xpathnode);
+
+      // Since we don't have a XML Parser involved here, install some default support
+      // for things like namespaces, etc.
+      // (Changed from: XPathContext xpathSupport = new XPathContext();
+      //    because XPathContext is weak in a number of areas... perhaps
+      //    XPathContext should be done away with.)
+      if (this._funcHereContext == null) {
+         this._funcHereContext = new FuncHereContext(xpathnode,
+                                                     this._dtmManager);
+      }
+
+      // Create an object to resolve namespace prefixes.
+      // XPath namespaces are resolved from the input context node's document element
+      // if it is a root node, or else the current context node (for lack of a better
+      // resolution space, given the simplicity of this sample code).
+      PrefixResolverDefault prefixResolver =
+         new PrefixResolverDefault((namespaceNode.getNodeType()
+                                    == Node.DOCUMENT_NODE)
+                                   ? ((Document) namespaceNode)
+                                      .getDocumentElement()
+                                   : namespaceNode);
+
+      if (str!=xpathStr) {
+        if (str.indexOf("here()")>0) {
+            _context.reset();
+            _dtmManager=_context.getDTMManager();
+        }
+        xpath = createXPath(str, prefixResolver);
+        xpathStr=str;
+      }
+
+      // Execute the XPath, and have it return the result
+      // return xpath.execute(xpathSupport, contextNode, prefixResolver);
+      int ctxtNode = this._funcHereContext.getDTMHandleFromNode(contextNode);
+
+      return xpath.execute(this._funcHereContext, ctxtNode, prefixResolver);
+   }
+
+   /**
+    *   Evaluate XPath string to an XObject.
+    *   XPath namespace prefixes are resolved from the namespaceNode.
+    *   The implementation of this is a little slow, since it creates
+    *   a number of objects each time it is called.  This could be optimized
+    *   to keep the same objects around, but then thread-safety issues would arise.
+    *
+    *   @param contextNode The node to start searching from.
+    * @param xpathnode
+    * @param str
+    *   @param prefixResolver Will be called if the parser encounters namespace
+    *                         prefixes, to resolve the prefixes to URLs.
+    *   @return An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
+    *   @see org.apache.xpath.objects.XObject
+    *   @see org.apache.xpath.objects.XNull
+    *   @see org.apache.xpath.objects.XBoolean
+    *   @see org.apache.xpath.objects.XNumber
+    *   @see org.apache.xpath.objects.XString
+    *   @see org.apache.xpath.objects.XRTreeFrag
+    *
+    * @throws TransformerException
+    */
+   public XObject eval(
+           Node contextNode, Node xpathnode, String str, PrefixResolver prefixResolver)
+              throws TransformerException {
+
+      // Since we don't have a XML Parser involved here, install some default support
+      // for things like namespaces, etc.
+      // (Changed from: XPathContext xpathSupport = new XPathContext();
+      //    because XPathContext is weak in a number of areas... perhaps
+      //    XPathContext should be done away with.)
+      // Create the XPath object.
+      //String str = CachedXPathFuncHereAPI.getStrFromNode(xpathnode);
+    if (str!=xpathStr) {
+        if (str.indexOf("here()")>0) {
+            _context.reset();
+            _dtmManager=_context.getDTMManager();
+        }
+        try {
+            xpath = createXPath(str, prefixResolver);
+        } catch (TransformerException ex) {
+            //Try to see if it is a problem with the classloader.
+            Throwable th= ex.getCause();
+            if (th instanceof ClassNotFoundException) {
+                 if (th.getMessage().indexOf("FuncHere")>0) {
+                     throw new RuntimeException(I18n.translate("endorsed.jdk1.4.0")/*,*/+ex);
+                 }
+              }
+              throw ex;
+        }
+        xpathStr=str;
+    }
+
+      // Execute the XPath, and have it return the result
+      if (this._funcHereContext == null) {
+         this._funcHereContext = new FuncHereContext(xpathnode,
+                                                     this._dtmManager);
+      }
+
+      int ctxtNode = this._funcHereContext.getDTMHandleFromNode(contextNode);
+
+      return xpath.execute(this._funcHereContext, ctxtNode, prefixResolver);
+   }
+
+    private XPath createXPath(String str, PrefixResolver prefixResolver) throws TransformerException {
+        XPath xpath = null;
+        Class[] classes = new Class[]{String.class, SourceLocator.class, PrefixResolver.class, int.class,
+                ErrorListener.class, FunctionTable.class};
+        Object[] objects = new Object[]{str, null, prefixResolver, new Integer(XPath.SELECT), null, _funcTable};
+        try {
+            Constructor constructor = XPath.class.getConstructor(classes);
+            xpath = (XPath) constructor.newInstance(objects);
+        } catch (Throwable t) {
+        }
+        if (xpath == null) {
+            xpath = new XPath(str, null, prefixResolver, XPath.SELECT, null);
+        }
+        return xpath;
+    }
+
+    /**
+     * Method getStrFromNode
+     *
+     * @param xpathnode
+     * @return the string for the node.
+     */
+    public static String getStrFromNode(Node xpathnode) {
+
+       if (xpathnode.getNodeType() == Node.TEXT_NODE) {
+
+          // we iterate over all siblings of the context node because eventually,
+          // the text is "polluted" with pi's or comments
+          StringBuffer sb = new StringBuffer();
+
+          for (Node currentSibling = xpathnode.getParentNode().getFirstChild();
+               currentSibling != null;
+               currentSibling = currentSibling.getNextSibling()) {
+             if (currentSibling.getNodeType() == Node.TEXT_NODE) {
+                sb.append(((Text) currentSibling).getData());
+             }
+          }
+
+          return sb.toString();
+       } else if (xpathnode.getNodeType() == Node.ATTRIBUTE_NODE) {
+          return ((Attr) xpathnode).getNodeValue();
+       } else if (xpathnode.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE) {
+          return ((ProcessingInstruction) xpathnode).getNodeValue();
+       }
+
+       return null;
+    }
+
+    private static void fixupFunctionTable() {
+        boolean installed = false;
+        log.info("Registering Here function");
+        /**
+         * Try to register our here() implementation as internal function.
+         */
+        try {
+            Class []args = {String.class, Expression.class};
+            Method installFunction = FunctionTable.class.getMethod("installFunction", args);
+            if ((installFunction.getModifiers() & Modifier.STATIC) != 0) {
+                Object []params = {"here", new FuncHere()};
+                installFunction.invoke(null, params);
+                installed = true;
+            }
+        } catch (Throwable t) {
+            log.debug("Error installing function using the static installFunction method", t);
+        }
+        if(!installed) {
+            try {
+                _funcTable = new FunctionTable();
+                Class []args = {String.class, Class.class};
+                Method installFunction = FunctionTable.class.getMethod("installFunction", args);
+                Object []params = {"here", FuncHere.class};
+                installFunction.invoke(_funcTable, params);
+                installed = true;
+            } catch (Throwable t) {
+                log.debug("Error installing function using the static installFunction method", t);
+            }
+        }
+        if (log.isDebugEnabled()) {
+            if (installed) {
+                log.debug("Registered class " + FuncHere.class.getName()
+                        + " for XPath function 'here()' function in internal table");
+            } else {
+                log.debug("Unable to register class " + FuncHere.class.getName()
+                        + " for XPath function 'here()' function in internal table");
+            }
+        }
+    }
+}
diff --git a/src/org/apache/xml/security/utils/Constants.java b/src/org/apache/xml/security/utils/Constants.java
new file mode 100644
index 0000000..1b4f992
--- /dev/null
+++ b/src/org/apache/xml/security/utils/Constants.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ * Provides all constants and some translation functions for i18n.
+ *
+ * For the used Algorithm identifiers and Namespaces, look at the
+ * <A HREF="http://www.w3.org/TR/xmldsig-core/#sec-TransformAlg">XML
+ * Signature specification</A>.
+ *
+ * @author $Author$
+ */
+public class Constants {
+
+   /** {@link org.apache.commons.logging} logging facility */
+   static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Constants.class.getName());
+
+   /** Field configurationFile */
+   public static String configurationFile = "data/websig.conf";
+
+   /** Field configurationFileNew */
+   public static final String configurationFileNew = ".xmlsecurityconfig";
+
+   /** Field exceptionMessagesResourceBundleDir */
+   public static final String exceptionMessagesResourceBundleDir =
+      "org/apache/xml/security/resource";
+
+   /** Field exceptionMessagesResourceBundleBase is the location of the <CODE>ResourceBundle</CODE> */
+   public static final String exceptionMessagesResourceBundleBase =
+      exceptionMessagesResourceBundleDir + "/" + "xmlsecurity";
+   //J-
+   /**
+    * The URL of the <A HREF="http://www.w3.org/TR/2001/CR-xmldsig-core-20010419/">XML Signature specification</A>
+    */
+   public static final String SIGNATURESPECIFICATION_URL = "http://www.w3.org/TR/2001/CR-xmldsig-core-20010419/";
+
+   /**
+    * The namespace of the <A HREF="http://www.w3.org/TR/2001/CR-xmldsig-core-20010419/">XML Signature specification</A>
+    */
+   public static final String SignatureSpecNS   = "http://www.w3.org/2000/09/xmldsig#";
+   /** The URL for more algorithm **/
+   public static final String MoreAlgorithmsSpecNS   = "http://www.w3.org/2001/04/xmldsig-more#";
+   /** The URI for XML spec*/
+   public static final String XML_LANG_SPACE_SpecNS = "http://www.w3.org/XML/1998/namespace";
+   /** The URI for XMLNS spec*/
+   public static final String NamespaceSpecNS = "http://www.w3.org/2000/xmlns/";
+
+   /** Tag of Attr Algorithm**/
+   public static final String _ATT_ALGORITHM              = "Algorithm";
+   /** Tag of Attr URI**/
+   public static final String _ATT_URI                    = "URI";
+   /** Tag of Attr Type**/
+   public static final String _ATT_TYPE                   = "Type";
+   /** Tag of Attr Id**/
+   public static final String _ATT_ID                     = "Id";
+   /** Tag of Attr MimeType**/
+   public static final String _ATT_MIMETYPE               = "MimeType";
+   /** Tag of Attr Encoding**/
+   public static final String _ATT_ENCODING               = "Encoding";
+   /** Tag of Attr Target**/
+   public static final String _ATT_TARGET                 = "Target";
+
+   // KeyInfo (KeyName|KeyValue|RetrievalMethod|X509Data|PGPData|SPKIData|MgmtData)
+   // KeyValue (DSAKeyValue|RSAKeyValue)
+   // DSAKeyValue (P, Q, G, Y, J?, (Seed, PgenCounter)?)
+   // RSAKeyValue (Modulus, Exponent)
+   // RetrievalMethod (Transforms?)
+   // X509Data ((X509IssuerSerial | X509SKI | X509SubjectName | X509Certificate)+ | X509CRL)
+   // X509IssuerSerial (X509IssuerName, X509SerialNumber)
+   // PGPData ((PGPKeyID, PGPKeyPacket?) | (PGPKeyPacket))
+   // SPKIData (SPKISexp)
+
+   /** Tag of Element CanonicalizationMethod **/
+   public static final String _TAG_CANONICALIZATIONMETHOD = "CanonicalizationMethod";
+   /** Tag of Element DigestMethod **/
+   public static final String _TAG_DIGESTMETHOD           = "DigestMethod";
+   /** Tag of Element DigestValue **/
+   public static final String _TAG_DIGESTVALUE            = "DigestValue";
+   /** Tag of Element Manifest **/
+   public static final String _TAG_MANIFEST               = "Manifest";
+   /** Tag of Element Methods **/
+   public static final String _TAG_METHODS                = "Methods";
+   /** Tag of Element Object **/
+   public static final String _TAG_OBJECT                 = "Object";
+   /** Tag of Element Reference **/
+   public static final String _TAG_REFERENCE              = "Reference";
+   /** Tag of Element Signature **/
+   public static final String _TAG_SIGNATURE              = "Signature";
+   /** Tag of Element SignatureMethod **/
+   public static final String _TAG_SIGNATUREMETHOD        = "SignatureMethod";
+   /** Tag of Element HMACOutputLength **/
+   public static final String _TAG_HMACOUTPUTLENGTH       = "HMACOutputLength";
+   /** Tag of Element SignatureProperties **/
+   public static final String _TAG_SIGNATUREPROPERTIES    = "SignatureProperties";
+   /** Tag of Element SignatureProperty **/
+   public static final String _TAG_SIGNATUREPROPERTY      = "SignatureProperty";
+   /** Tag of Element SignatureValue **/
+   public static final String _TAG_SIGNATUREVALUE         = "SignatureValue";
+   /** Tag of Element SignedInfo **/
+   public static final String _TAG_SIGNEDINFO             = "SignedInfo";
+   /** Tag of Element Transform **/
+   public static final String _TAG_TRANSFORM              = "Transform";
+   /** Tag of Element Transforms **/
+   public static final String _TAG_TRANSFORMS             = "Transforms";
+   /** Tag of Element XPath **/
+   public static final String _TAG_XPATH                  = "XPath";
+   /** Tag of Element KeyInfo **/
+   public static final String _TAG_KEYINFO                = "KeyInfo";
+   /** Tag of Element KeyName **/
+   public static final String _TAG_KEYNAME                = "KeyName";
+   /** Tag of Element KeyValue **/
+   public static final String _TAG_KEYVALUE               = "KeyValue";
+   /** Tag of Element RetrievalMethod **/
+   public static final String _TAG_RETRIEVALMETHOD        = "RetrievalMethod";
+   /** Tag of Element X509Data **/
+   public static final String _TAG_X509DATA               = "X509Data";
+   /** Tag of Element PGPData **/
+   public static final String _TAG_PGPDATA                = "PGPData";
+   /** Tag of Element SPKIData **/
+   public static final String _TAG_SPKIDATA               = "SPKIData";
+   /** Tag of Element MgmtData **/
+   public static final String _TAG_MGMTDATA               = "MgmtData";
+   /** Tag of Element RSAKeyValue **/
+   public static final String _TAG_RSAKEYVALUE            = "RSAKeyValue";
+   /** Tag of Element Exponent **/
+   public static final String _TAG_EXPONENT               = "Exponent";
+   /** Tag of Element Modulus **/
+   public static final String _TAG_MODULUS                = "Modulus";
+   /** Tag of Element DSAKeyValue **/
+   public static final String _TAG_DSAKEYVALUE            = "DSAKeyValue";
+   /** Tag of Element P **/
+   public static final String _TAG_P                      = "P";
+   /** Tag of Element Q **/
+   public static final String _TAG_Q                      = "Q";
+   /** Tag of Element G **/
+   public static final String _TAG_G                      = "G";
+   /** Tag of Element Y **/
+   public static final String _TAG_Y                      = "Y";
+   /** Tag of Element J **/
+   public static final String _TAG_J                      = "J";
+   /** Tag of Element Seed **/
+   public static final String _TAG_SEED                   = "Seed";
+   /** Tag of Element PgenCounter **/
+   public static final String _TAG_PGENCOUNTER            = "PgenCounter";
+   /** Tag of Element rawX509Certificate **/
+   public static final String _TAG_RAWX509CERTIFICATE     = "rawX509Certificate";
+   /** Tag of Element X509IssuerSerial **/
+   public static final String _TAG_X509ISSUERSERIAL       = "X509IssuerSerial";
+   /** Tag of Element X509SKI **/
+   public static final String _TAG_X509SKI                = "X509SKI";
+   /** Tag of Element X509SubjectName **/
+   public static final String _TAG_X509SUBJECTNAME        = "X509SubjectName";
+   /** Tag of Element X509Certificate **/
+   public static final String _TAG_X509CERTIFICATE        = "X509Certificate";
+   /** Tag of Element X509CRL **/
+   public static final String _TAG_X509CRL                = "X509CRL";
+   /** Tag of Element X509IssuerName **/
+   public static final String _TAG_X509ISSUERNAME         = "X509IssuerName";
+   /** Tag of Element X509SerialNumber **/
+   public static final String _TAG_X509SERIALNUMBER       = "X509SerialNumber";
+   /** Tag of Element PGPKeyID **/
+   public static final String _TAG_PGPKEYID               = "PGPKeyID";
+   /** Tag of Element PGPKeyPacket **/
+   public static final String _TAG_PGPKEYPACKET           = "PGPKeyPacket";
+   /** Tag of Element SPKISexp **/
+   public static final String _TAG_SPKISEXP               = "SPKISexp";
+
+   /** Digest - Required SHA1 */
+   public static final String ALGO_ID_DIGEST_SHA1        = SignatureSpecNS + "sha1";
+
+   /**
+    * @see <A HREF="http://www.ietf.org/internet-drafts/draft-blake-wilson-xmldsig-ecdsa-02.txt">
+    *  draft-blake-wilson-xmldsig-ecdsa-02.txt</A>
+    */
+   public static final String ALGO_ID_SIGNATURE_ECDSA_CERTICOM = "http://www.certicom.com/2000/11/xmlecdsig#ecdsa-sha1";
+   //J+
+
+   private Constants() {
+     // we don't allow instantiation
+   }
+
+   /**
+    * Sets the namespace prefix which will be used to identify elements in the
+    * XML Signature Namespace.
+    *
+    * <pre>
+    * Constants.setSignatureSpecNSprefix("dsig");
+    * </pre>
+    *
+    * @param newPrefix is the new namespace prefix.
+    * @throws XMLSecurityException
+    * @see org.apache.xml.security.utils.Constants#getSignatureSpecNSprefix
+    * $todo$ Add consistency checking for valid prefix
+    */
+   public static void setSignatureSpecNSprefix(String newPrefix) throws XMLSecurityException {
+      ElementProxy.setDefaultPrefix(Constants.SignatureSpecNS, newPrefix);
+   }
+
+   /**
+    * Returns the XML namespace prefix which is used for elements in the XML
+    * Signature namespace.
+    *
+    * It is defaulted to <code>dsig</code>, but can be changed using the
+    * {@link #setSignatureSpecNSprefix} function.
+    *
+    * @return the current used namespace prefix
+    * @see #setSignatureSpecNSprefix
+    */
+   public static String getSignatureSpecNSprefix() {
+      return ElementProxy.getDefaultPrefix(Constants.SignatureSpecNS);
+   }
+}
diff --git a/src/org/apache/xml/security/utils/DigesterOutputStream.java b/src/org/apache/xml/security/utils/DigesterOutputStream.java
new file mode 100644
index 0000000..75cf3b6
--- /dev/null
+++ b/src/org/apache/xml/security/utils/DigesterOutputStream.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+import java.io.ByteArrayOutputStream;
+
+import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
+
+/**
+ * @author raul
+ *
+ */
+public class DigesterOutputStream extends ByteArrayOutputStream {
+    final static byte none[]="error".getBytes();
+    final MessageDigestAlgorithm mda;
+	/**
+	 * @param mda
+	 */
+	public DigesterOutputStream(MessageDigestAlgorithm mda) {
+        this.mda=mda;		
+	}
+
+    /** @inheritDoc */ 
+	public byte[] toByteArray() {
+		return none;
+	}
+    
+	/** @inheritDoc */
+	public void write(byte[] arg0) {
+		mda.update(arg0);
+	}
+    
+    /** @inheritDoc */
+	public void write(int arg0) {
+		mda.update((byte)arg0);
+	}
+    
+    /** @inheritDoc */
+	public void write(byte[] arg0, int arg1, int arg2) {
+		mda.update(arg0, arg1, arg2);
+	}
+    
+    /**
+     * @return the digest value 
+     */
+    public byte[] getDigestValue() {
+         return mda.digest();   
+    }
+}
diff --git a/src/org/apache/xml/security/utils/ElementProxy.java b/src/org/apache/xml/security/utils/ElementProxy.java
new file mode 100644
index 0000000..ca27929
--- /dev/null
+++ b/src/org/apache/xml/security/utils/ElementProxy.java
@@ -0,0 +1,576 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.math.BigInteger;
+import java.util.HashMap;
+
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+
+/**
+ * This is the base class to all Objects which have a direct 1:1 mapping to an
+ * Element in a particular namespace.
+ *
+ * @author $Author$
+ */
+public abstract class ElementProxy {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(ElementProxy.class.getName());
+   //J-
+    /** The element has been created by the code **/
+   public static final int MODE_CREATE  = 0;
+   /** The element has been readed from a DOM tree by the code **/
+   public static final int MODE_PROCESS = 1;
+   /** The element isn't known if it is readen or created **/
+   public static final int MODE_UNKNOWN = 2;
+
+   /** The element is going to be signed **/
+   public static final int MODE_SIGN    = MODE_CREATE;
+   /** The element is going to be verified **/
+   public static final int MODE_VERIFY  = MODE_PROCESS;
+
+   /** The element is going to be encrypted **/
+   public static final int MODE_ENCRYPT = MODE_CREATE;
+   /** The element is going to be decrypted **/
+   public static final int MODE_DECRYPT = MODE_PROCESS;
+
+   protected int _state = MODE_UNKNOWN;
+   //J+
+
+   /**
+    * Returns the namespace of the Elements of the sub-class.
+    *
+    * @return the namespace of the Elements of the sub-class.
+    */
+   public abstract String getBaseNamespace();
+
+   /**
+    * Returns the localname of the Elements of the sub-class.
+    *
+    * @return the localname of the Elements of the sub-class.
+    */
+   public abstract String getBaseLocalName();
+
+   /** Field _constructionElement */
+   protected Element _constructionElement = null;
+
+   /** Field _baseURI */
+   protected String _baseURI = null;
+
+   /** Field _doc */
+   protected Document _doc = null;
+
+   /**
+    * Constructor ElementProxy
+    *
+    */
+   public ElementProxy() {
+
+      this._doc = null;
+      this._state = ElementProxy.MODE_UNKNOWN;
+      this._baseURI = null;
+      this._constructionElement = null;
+   }
+
+   /**
+    * Constructor ElementProxy
+    *
+    * @param doc
+    */
+   public ElementProxy(Document doc) {
+
+      this();
+
+      if (doc == null) {
+         throw new RuntimeException("Document is null");
+      }
+
+      this._doc = doc;
+      this._state = ElementProxy.MODE_CREATE;
+      this._constructionElement = createElementForFamilyLocal(this._doc,
+              this.getBaseNamespace(), this.getBaseLocalName());      
+   }
+   String tagName=null;
+   String prefix=ElementProxy.getDefaultPrefix(this.getBaseNamespace());
+   String defaultPrefixNaming=ElementProxy.getDefaultPrefixBindings(this.getBaseNamespace());
+   private Element createElementForFamilyLocal(Document doc, String namespace,
+           String localName) {
+	   	Element result = null;
+	      if (namespace == null) {
+	         result = doc.createElementNS(null, localName);
+	      } else {
+	         if ((prefix == null) || (prefix.length() == 0)) {
+	            result = doc.createElementNS(namespace, localName);
+
+	            result.setAttributeNS(Constants.NamespaceSpecNS, "xmlns",
+	                                  namespace);
+	         } else {
+	        	 if (tagName==null) {
+	        		 tagName=prefix + ":" + localName;
+	        	 }
+	            result = doc.createElementNS(namespace, tagName );
+
+	            result.setAttributeNS(Constants.NamespaceSpecNS,  defaultPrefixNaming,
+	                                  namespace);
+	         }
+	      }	      
+	      return result;
+}
+
+
+   /**
+    * This method creates an Element in a given namespace with a given localname.
+    * It uses the {@link ElementProxy#getDefaultPrefix} method to decide whether
+    * a particular prefix is bound to that namespace.
+    * <BR />
+    * This method was refactored out of the constructor.
+    *
+    * @param doc
+    * @param namespace
+    * @param localName
+    * @return The element created.
+    */
+   public static Element createElementForFamily(Document doc, String namespace,
+           String localName) {
+       //Element nscontext = XMLUtils.createDSctx(doc, "x", namespace);
+      Element result = null;
+      String prefix = ElementProxy.getDefaultPrefix(namespace);
+
+      if (namespace == null) {
+         result = doc.createElementNS(null, localName);
+      } else {
+         if ((prefix == null) || (prefix.length() == 0)) {
+            result = doc.createElementNS(namespace, localName);
+
+            result.setAttributeNS(Constants.NamespaceSpecNS, "xmlns",
+                                  namespace);
+         } else {
+            result = doc.createElementNS(namespace, prefix + ":" + localName);
+
+            result.setAttributeNS(Constants.NamespaceSpecNS,  ElementProxy.getDefaultPrefixBindings(namespace),
+                                  namespace);
+         }
+      }
+
+      return result;
+   }
+
+   /**
+    * Method setElement
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public void setElement(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      if (element == null) {
+         throw new XMLSecurityException("ElementProxy.nullElement");
+      }
+      
+      if (log.isDebugEnabled()) {
+      	log.debug("setElement(" + element.getTagName() + ", \"" + BaseURI + "\"");
+      }
+        
+      this._doc = element.getOwnerDocument();
+      this._state = ElementProxy.MODE_PROCESS;
+      this._constructionElement = element;
+      this._baseURI = BaseURI;
+   }
+
+   /**
+    * Constructor ElementProxy
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public ElementProxy(Element element, String BaseURI)
+           throws XMLSecurityException {
+
+      this();
+
+      if (element == null) {
+         throw new XMLSecurityException("ElementProxy.nullElement");
+      }
+      
+      if (log.isDebugEnabled()) {
+      	log.debug("setElement(\"" + element.getTagName() + "\", \"" + BaseURI
+                + "\")");
+      }
+
+      this._doc = element.getOwnerDocument();
+      this._state = ElementProxy.MODE_PROCESS;
+      this._constructionElement = element;
+      this._baseURI = BaseURI;
+
+      this.guaranteeThatElementInCorrectSpace();
+   }
+
+   /**
+    * Returns the Element which was constructed by the Object.
+    *
+    * @return the Element which was constructed by the Object.
+    */
+   public final Element getElement() {
+      return this._constructionElement;
+   }
+
+   /**
+    * Returns the Element plus a leading and a trailing CarriageReturn Text node.
+    *
+    * @return the Element which was constructed by the Object.
+    */
+   public final NodeList getElementPlusReturns() {
+
+      HelperNodeList nl = new HelperNodeList();
+
+      nl.appendChild(this._doc.createTextNode("\n"));
+      nl.appendChild(this.getElement());
+      nl.appendChild(this._doc.createTextNode("\n"));
+
+      return nl;
+   }
+
+   /**
+    * Method getDocument
+    *
+    * @return the Document where this element is contained.
+    */
+   public Document getDocument() {
+      return this._doc;
+   }
+
+   /**
+    * Method getBaseURI
+    *
+    * @return the base uri of the namespace of this element
+    */
+   public String getBaseURI() {
+      return this._baseURI;
+   }
+
+   /**
+    * Method guaranteeThatElementInCorrectSpace
+    *
+    * @throws XMLSecurityException
+    */
+   public void guaranteeThatElementInCorrectSpace()
+           throws XMLSecurityException {
+
+      String localnameSHOULDBE = this.getBaseLocalName();
+      String namespaceSHOULDBE = this.getBaseNamespace();
+      
+      String localnameIS = this._constructionElement.getLocalName();
+      String namespaceIS = this._constructionElement.getNamespaceURI();
+      if ((namespaceSHOULDBE!=namespaceIS) ||
+       !localnameSHOULDBE.equals(localnameIS) ) {      
+         Object exArgs[] = { namespaceIS +":"+ localnameIS, 
+           namespaceSHOULDBE +":"+ localnameSHOULDBE};
+         throw new XMLSecurityException("xml.WrongElement", exArgs);
+      }
+   }
+
+   /**
+    * Method setVal
+    *
+    * @param bi
+    * @param localname
+    */
+   public void addBigIntegerElement(BigInteger bi, String localname) {
+
+      if (bi != null) {
+         Element e = XMLUtils.createElementInSignatureSpace(this._doc,
+                        localname);
+
+         Base64.fillElementWithBigInteger(e, bi);
+         this._constructionElement.appendChild(e);
+         XMLUtils.addReturnToElement(this._constructionElement);
+      }
+   }
+
+   /**
+    * Method addBase64Element
+    *
+    * @param bytes
+    * @param localname
+    */
+   public void addBase64Element(byte[] bytes, String localname) {
+
+      if (bytes != null) {
+
+         Element e = Base64.encodeToElement(this._doc, localname, bytes);
+
+         this._constructionElement.appendChild(e);
+         this._constructionElement.appendChild(this._doc.createTextNode("\n"));
+      }
+   }
+
+   /**
+    * Method addTextElement
+    *
+    * @param text
+    * @param localname
+    */
+   public void addTextElement(String text, String localname) {
+
+      Element e = XMLUtils.createElementInSignatureSpace(this._doc, localname);
+      Text t = this._doc.createTextNode(text);
+
+      e.appendChild(t);
+      this._constructionElement.appendChild(e);
+      XMLUtils.addReturnToElement(this._constructionElement);
+   }
+
+   /**
+    * Method addBase64Text
+    *
+    * @param bytes
+    */
+   public void addBase64Text(byte[] bytes) {
+
+      if (bytes != null) {
+         Text t = this._doc.createTextNode("\n" + Base64.encode(bytes) + "\n");
+
+         this._constructionElement.appendChild(t);
+      }
+   }
+
+   /**
+    * Method addText
+    *
+    * @param text
+    */
+   public void addText(String text) {
+
+      if (text != null) {
+         Text t = this._doc.createTextNode(text);
+
+         this._constructionElement.appendChild(t);
+      }
+   }
+
+   /**
+    * Method getVal
+    *
+    * @param localname
+    * @param namespace
+    * @return The biginter contained in the given element
+ * @throws Base64DecodingException
+    */
+   public BigInteger getBigIntegerFromChildElement(
+           String localname, String namespace) throws Base64DecodingException {
+   	    
+   		return Base64.decodeBigIntegerFromText(
+   				XMLUtils.selectNodeText(this._constructionElement.getFirstChild(),
+   						namespace,localname,0));
+
+   }
+
+   /**
+    * Method getBytesFromChildElement
+    * @deprecated
+    * @param localname
+    * @param namespace
+    * @return the bytes
+    * @throws XMLSecurityException
+    */
+   public byte[] getBytesFromChildElement(String localname, String namespace)
+           throws XMLSecurityException {
+               
+         Element e =
+             XMLUtils.selectNode(
+                 this._constructionElement.getFirstChild(),
+                 namespace,
+                 localname,
+                 0);
+            
+         return Base64.decode(e);
+   }
+
+   /**
+    * Method getTextFromChildElement
+    *
+    * @param localname
+    * @param namespace
+    * @return the Text of the textNode
+    */
+   public String getTextFromChildElement(String localname, String namespace) {
+              
+         Text t =
+             (Text) XMLUtils.selectNode(
+                        this._constructionElement.getFirstChild(),
+                        namespace,
+                        localname,
+                        0).getFirstChild();
+
+         return t.getData();      
+   }
+
+   /**
+    * Method getBytesFromTextChild
+    *
+    * @return The base64 bytes from the first text child of this element
+    * @throws XMLSecurityException
+    */
+   public byte[] getBytesFromTextChild() throws XMLSecurityException {
+      
+         Text t = (Text)this._constructionElement.getFirstChild();
+                                                   
+
+         return Base64.decode(t.getData());
+   }
+
+   /**
+    * Method getTextFromTextChild
+    *
+    * @return the Text obtained concatening all the the text nodes of this element
+    */
+   public String getTextFromTextChild() {
+      return XMLUtils.getFullTextChildrenFromElement(this._constructionElement);
+   }
+
+  
+
+   /**
+    * Method length
+    *
+    * @param namespace
+    * @param localname
+    * @return the number of elements {namespace}:localname under this element
+    */
+   public int length(String namespace, String localname) {
+   	    int number=0;
+   	    Node sibling=this._constructionElement.getFirstChild();
+   	    while (sibling!=null) {        
+   	    	if (localname.equals(sibling.getLocalName())
+   	    			&&  
+					namespace==sibling.getNamespaceURI() ) {            
+   	    		number++;
+   	    	}
+   	    	sibling=sibling.getNextSibling();
+   	    }
+   	    return number;
+     }
+
+   /**
+    * Adds an xmlns: definition to the Element. This can be called as follows:
+    *
+    * <PRE>
+    * // set namespace with ds prefix
+    * xpathContainer.setXPathNamespaceContext("ds", "http://www.w3.org/2000/09/xmldsig#");
+    * xpathContainer.setXPathNamespaceContext("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#");
+    * </PRE>
+    *
+    * @param prefix
+    * @param uri
+    * @throws XMLSecurityException
+    */
+   public void setXPathNamespaceContext(String prefix, String uri)
+           throws XMLSecurityException {
+
+      String ns;
+
+      if ((prefix == null) || (prefix.length() == 0)) {
+       throw new XMLSecurityException("defaultNamespaceCannotBeSetHere");
+      } else if (prefix.equals("xmlns")) {
+        throw new XMLSecurityException("defaultNamespaceCannotBeSetHere");
+      } else if (prefix.startsWith("xmlns:")) {
+         ns = prefix;//"xmlns:" + prefix.substring("xmlns:".length());
+      } else {
+         ns = "xmlns:" + prefix;
+      }
+
+      
+
+      Attr a = this._constructionElement.getAttributeNodeNS(Constants.NamespaceSpecNS, ns);
+
+      if (a != null) { 
+       if (!a.getNodeValue().equals(uri)) {
+         Object exArgs[] = { ns,
+                             this._constructionElement.getAttributeNS(null,
+                                                                      ns) };
+
+         throw new XMLSecurityException("namespacePrefixAlreadyUsedByOtherURI",
+                                        exArgs);
+       }
+       return;
+      }
+
+      this._constructionElement.setAttributeNS(Constants.NamespaceSpecNS, ns,
+                                               uri);
+   }
+
+   /** Field _prefixMappings */
+   static HashMap _prefixMappings = new HashMap();
+   static HashMap _prefixMappingsBindings = new HashMap();
+
+   /**
+    * Method setDefaultPrefix
+    *
+    * @param namespace
+    * @param prefix
+    * @throws XMLSecurityException
+    */
+   public static void setDefaultPrefix(String namespace, String prefix)
+           throws XMLSecurityException {
+    
+   	if (ElementProxy._prefixMappings.containsValue(prefix)) {
+        
+   		Object storedNamespace=ElementProxy._prefixMappings.get(namespace);
+         if (!storedNamespace.equals(prefix)) {
+         	Object exArgs[] = { prefix, namespace, storedNamespace };
+
+         	throw new XMLSecurityException("prefix.AlreadyAssigned", exArgs);
+         }
+    }
+      ElementProxy._prefixMappings.put(namespace, prefix.intern());
+      ElementProxy._prefixMappingsBindings.put(namespace, ("xmlns:"+prefix).intern());
+   }
+
+   /**
+    * Method getDefaultPrefix
+    *
+    * @param namespace
+    * @return the default prefix bind to this element.
+    */
+   public static String getDefaultPrefix(String namespace) {
+
+      String prefix = (String) ElementProxy._prefixMappings.get(namespace);
+
+      return prefix;
+   }
+   public static  String getDefaultPrefixBindings(String namespace) {
+
+	      String prefix = (String) ElementProxy._prefixMappingsBindings.get(namespace);
+
+	      return prefix;
+	   }
+}
diff --git a/src/org/apache/xml/security/utils/EncryptionConstants.java b/src/org/apache/xml/security/utils/EncryptionConstants.java
new file mode 100644
index 0000000..3f37b1e
--- /dev/null
+++ b/src/org/apache/xml/security/utils/EncryptionConstants.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class EncryptionConstants {
+   //J-
+   // Attributes that exist in XML Signature in the same way
+    /** Tag of Attr Algorithm **/
+   public static final String _ATT_ALGORITHM              = Constants._ATT_ALGORITHM;
+   /** Tag of Attr Id**/
+   public static final String _ATT_ID                     = Constants._ATT_ID;
+   /** Tag of Attr Target **/
+   public static final String _ATT_TARGET                 = Constants._ATT_TARGET;
+   /** Tag of Attr Type **/
+   public static final String _ATT_TYPE                   = Constants._ATT_TYPE;
+   /** Tag of Attr URI **/
+   public static final String _ATT_URI                    = Constants._ATT_URI;
+
+   // Attributes new in XML Encryption
+   /** Tag of Attr encoding **/
+   public static final String _ATT_ENCODING               = "Encoding";
+   /** Tag of Attr recipient **/
+   public static final String _ATT_RECIPIENT              = "Recipient";
+   /** Tag of Attr mimetype **/
+   public static final String _ATT_MIMETYPE               = "MimeType";
+
+   /** Tag of Element CarriedKeyName **/
+   public static final String _TAG_CARRIEDKEYNAME         = "CarriedKeyName";
+   /** Tag of Element CipherData **/
+   public static final String _TAG_CIPHERDATA             = "CipherData";
+   /** Tag of Element CipherReference **/
+   public static final String _TAG_CIPHERREFERENCE        = "CipherReference";
+   /** Tag of Element CipherValue **/
+   public static final String _TAG_CIPHERVALUE            = "CipherValue";
+   /** Tag of Element DataReference **/
+   public static final String _TAG_DATAREFERENCE          = "DataReference";
+   /** Tag of Element EncryptedData **/
+   public static final String _TAG_ENCRYPTEDDATA          = "EncryptedData";
+   /** Tag of Element EncryptedKey **/
+   public static final String _TAG_ENCRYPTEDKEY           = "EncryptedKey";
+   /** Tag of Element EncryptionMethod **/
+   public static final String _TAG_ENCRYPTIONMETHOD       = "EncryptionMethod";
+   /** Tag of Element EncryptionProperties **/
+   public static final String _TAG_ENCRYPTIONPROPERTIES   = "EncryptionProperties";
+   /** Tag of Element EncryptionProperty **/
+   public static final String _TAG_ENCRYPTIONPROPERTY     = "EncryptionProperty";
+   /** Tag of Element KeyReference **/
+   public static final String _TAG_KEYREFERENCE           = "KeyReference";
+   /** Tag of Element KeySize **/
+   public static final String _TAG_KEYSIZE                = "KeySize";
+   /** Tag of Element OAEPparams **/
+   public static final String _TAG_OAEPPARAMS             = "OAEPparams";
+   /** Tag of Element ReferenceList **/
+   public static final String _TAG_REFERENCELIST          = "ReferenceList";
+   /** Tag of Element Transforms **/
+   public static final String _TAG_TRANSFORMS             = "Transforms";
+   /** Tag of Element AgreementMethod **/
+   public static final String _TAG_AGREEMENTMETHOD        = "AgreementMethod";
+   /** Tag of Element KA-Nonce **/
+   public static final String _TAG_KA_NONCE               = "KA-Nonce";
+   /** Tag of Element OriginatorKeyInfo **/
+   public static final String _TAG_ORIGINATORKEYINFO      = "OriginatorKeyInfo";
+   /** Tag of Element RecipientKeyInfo **/
+   public static final String _TAG_RECIPIENTKEYINFO       = "RecipientKeyInfo";
+
+   /** Field ENCRYPTIONSPECIFICATION_URL */
+   public static final String ENCRYPTIONSPECIFICATION_URL = "http://www.w3.org/TR/2001/WD-xmlenc-core-20010626/";
+
+   /** The namespace of the <A HREF="http://www.w3.org/TR/2001/WD-xmlenc-core-20010626/">XML Encryption Syntax and Processing</A> */
+   public static final String EncryptionSpecNS = "http://www.w3.org/2001/04/xmlenc#";
+
+   /** URI for content*/
+   public static final String TYPE_CONTENT                = EncryptionSpecNS + "Content";
+   /** URI for element*/
+   public static final String TYPE_ELEMENT                = EncryptionSpecNS + "Element";
+   /** URI for mediatype*/
+   public static final String TYPE_MEDIATYPE              = "http://www.isi.edu/in-notes/iana/assignments/media-types/"; // + "*/*";
+
+   /** Block Encryption - REQUIRED TRIPLEDES */
+   public static final String ALGO_ID_BLOCKCIPHER_TRIPLEDES = EncryptionConstants.EncryptionSpecNS + "tripledes-cbc";
+   /** Block Encryption - REQUIRED AES-128 */
+   public static final String ALGO_ID_BLOCKCIPHER_AES128 = EncryptionConstants.EncryptionSpecNS + "aes128-cbc";
+   /** Block Encryption - REQUIRED AES-256 */
+   public static final String ALGO_ID_BLOCKCIPHER_AES256 = EncryptionConstants.EncryptionSpecNS + "aes256-cbc";
+   /** Block Encryption - OPTIONAL AES-192 */
+   public static final String ALGO_ID_BLOCKCIPHER_AES192 = EncryptionConstants.EncryptionSpecNS + "aes192-cbc";
+
+   /** Key Transport - REQUIRED RSA-v1.5*/
+   public static final String ALGO_ID_KEYTRANSPORT_RSA15 = EncryptionConstants.EncryptionSpecNS + "rsa-1_5";
+   /** Key Transport - REQUIRED RSA-OAEP */
+   public static final String ALGO_ID_KEYTRANSPORT_RSAOAEP = EncryptionConstants.EncryptionSpecNS + "rsa-oaep-mgf1p";
+
+   /** Key Agreement - OPTIONAL Diffie-Hellman */
+   public static final String ALGO_ID_KEYAGREEMENT_DH = EncryptionConstants.EncryptionSpecNS + "dh";
+
+   /** Symmetric Key Wrap - REQUIRED TRIPLEDES KeyWrap */
+   public static final String ALGO_ID_KEYWRAP_TRIPLEDES = EncryptionConstants.EncryptionSpecNS + "kw-tripledes";
+   /** Symmetric Key Wrap - REQUIRED AES-128 KeyWrap */
+   public static final String ALGO_ID_KEYWRAP_AES128 = EncryptionConstants.EncryptionSpecNS + "kw-aes128";
+   /** Symmetric Key Wrap - REQUIRED AES-256 KeyWrap */
+   public static final String ALGO_ID_KEYWRAP_AES256 = EncryptionConstants.EncryptionSpecNS + "kw-aes256";
+   /** Symmetric Key Wrap - OPTIONAL AES-192 KeyWrap */
+   public static final String ALGO_ID_KEYWRAP_AES192 = EncryptionConstants.EncryptionSpecNS + "kw-aes192";
+
+   /*
+   // Message Digest - REQUIRED SHA1
+   public static final String ALGO_ID_DIGEST_SHA160 = Constants.ALGO_ID_DIGEST_SHA1;
+   // Message Digest - RECOMMENDED SHA256
+   public static final String ALGO_ID_DIGEST_SHA256 = EncryptionConstants.EncryptionSpecNS + "sha256";
+   // Message Digest - OPTIONAL SHA512
+   public static final String ALGO_ID_DIGEST_SHA512 = EncryptionConstants.EncryptionSpecNS + "sha512";
+   // Message Digest - OPTIONAL RIPEMD-160
+   public static final String ALGO_ID_DIGEST_RIPEMD160 = EncryptionConstants.EncryptionSpecNS + "ripemd160";
+   */
+
+   /** Message Authentication - RECOMMENDED XML Digital Signature */
+   public static final String ALGO_ID_AUTHENTICATION_XMLSIGNATURE = "http://www.w3.org/TR/2001/CR-xmldsig-core-20010419/";
+
+   /** Canonicalization - OPTIONAL Canonical XML with Comments */
+   public static final String ALGO_ID_C14N_WITHCOMMENTS = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments";
+   /** Canonicalization - OPTIONAL Canonical XML (omits comments) */
+   public static final String ALGO_ID_C14N_OMITCOMMENTS = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
+
+   /** Encoding - REQUIRED base64 */
+   public static final String ALGO_ID_ENCODING_BASE64 = "http://www.w3.org/2000/09/xmldsig#base64";
+   //J+
+
+   private EncryptionConstants() {
+     // we don't allow instantiation
+   }
+
+   /**
+    * Method setEncryptionSpecNSprefix
+    *
+    * @param newPrefix
+    * @throws XMLSecurityException
+    */
+   public static void setEncryptionSpecNSprefix(String newPrefix)
+           throws XMLSecurityException {
+      ElementProxy.setDefaultPrefix(EncryptionConstants.EncryptionSpecNS,
+                                    newPrefix);
+   }
+
+   /**
+    * Method getEncryptionSpecNSprefix
+    *
+    * @return the prefix for this node.
+    */
+   public static String getEncryptionSpecNSprefix() {
+      return ElementProxy
+         .getDefaultPrefix(EncryptionConstants.EncryptionSpecNS);
+   }
+}
diff --git a/src/org/apache/xml/security/utils/EncryptionElementProxy.java b/src/org/apache/xml/security/utils/EncryptionElementProxy.java
new file mode 100644
index 0000000..9ff7f85
--- /dev/null
+++ b/src/org/apache/xml/security/utils/EncryptionElementProxy.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * This is the base object for all objects which map directly to an Element from
+ * the xenc spec.
+ *
+ * @author $Author$
+ */
+public abstract class EncryptionElementProxy extends ElementProxy {
+
+   /**
+    * Constructor EncryptionElementProxy
+    *
+    * @param doc
+    */
+   public EncryptionElementProxy(Document doc) {
+      super(doc);
+   }
+
+   /**
+    * Constructor EncryptionElementProxy
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public EncryptionElementProxy(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+   }
+
+   /** @inheritDoc */
+   public final String getBaseNamespace() {
+      return EncryptionConstants.EncryptionSpecNS;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/HelperNodeList.java b/src/org/apache/xml/security/utils/HelperNodeList.java
new file mode 100644
index 0000000..2edcf40
--- /dev/null
+++ b/src/org/apache/xml/security/utils/HelperNodeList.java
@@ -0,0 +1,107 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.util.ArrayList;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+/**
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ *
+ */
+public class HelperNodeList implements NodeList {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+    org.apache.commons.logging.LogFactory.getLog(HelperNodeList.class.getName());
+
+   /** Field nodes */
+   ArrayList nodes = new ArrayList(20);
+
+   boolean _allNodesMustHaveSameParent = false;
+
+   /**
+    * 
+    */
+   public HelperNodeList() {
+      this(false);
+   }
+
+   
+   /**
+    * @param allNodesMustHaveSameParent
+    */
+   public HelperNodeList(boolean allNodesMustHaveSameParent) {
+      this._allNodesMustHaveSameParent = allNodesMustHaveSameParent;
+   }
+
+   /**
+    * Method item
+    *
+    * @param index
+    * @return node with inde i
+    */
+   public Node item(int index) {
+
+      // log.debug("item(" + index + ") of " + this.getLength() + " nodes");
+
+      return (Node) nodes.get(index);
+   }
+
+   /**
+    * Method getLength
+    *
+    *  @return length of the list
+    */
+   public int getLength() {
+      return nodes.size();
+   }
+
+   /**
+    * Method appendChild
+    *
+    * @param node
+    * @throws IllegalArgumentException
+    */
+   public void appendChild(Node node) throws IllegalArgumentException {
+      if (this._allNodesMustHaveSameParent && this.getLength() > 0) {
+         if (this.item(0).getParentNode() != node.getParentNode()) {
+            throw new IllegalArgumentException("Nodes have not the same Parent");
+         }
+      }
+      nodes.add(node);
+   }
+
+   /**
+    * @return the document that contains this nodelist
+    */
+   public Document getOwnerDocument() {
+      if (this.getLength() == 0) {
+         return null;
+      }
+      return XMLUtils.getOwnerDocument(this.item(0));
+   }
+}
diff --git a/src/org/apache/xml/security/utils/I18n.java b/src/org/apache/xml/security/utils/I18n.java
new file mode 100644
index 0000000..b827a68
--- /dev/null
+++ b/src/org/apache/xml/security/utils/I18n.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+
+/**
+ * The Internationalization (I18N) pack.
+ *
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class I18n {
+
+   /** Field NOT_INITIALIZED_MSG */
+   public static final String NOT_INITIALIZED_MSG =
+      "You must initialize the xml-security library correctly before you use it. "
+      + "Call the static method \"org.apache.xml.security.Init.init();\" to do that "
+      + "before you use any functionality from that library.";
+
+   /** Field defaultLanguageCode */
+   public static String defaultLanguageCode;    // will be set in static{} block
+
+   /** Field defaultCountryCode */
+   public static String defaultCountryCode;    // will be set in static{} block
+
+   /** Field resourceBundle */
+   protected static ResourceBundle resourceBundle;
+
+   /** Field alreadyInitialized */
+   protected static boolean alreadyInitialized = false;
+
+   /** Field _languageCode */
+   protected static String _languageCode = null;
+
+   /** Field _countryCode */
+   protected static String _countryCode = null;
+
+   /**
+    * Constructor I18n
+    *
+    */
+   private I18n() {
+
+      // we don't allow instantiation
+   }
+
+   /**
+    * Method translate
+    *
+    * translates a message ID into an internationalized String, see alse
+    * <CODE>XMLSecurityException.getExceptionMEssage()</CODE>. The strings are
+    * stored in the <CODE>ResourceBundle</CODE>, which is identified in
+    * <CODE>exceptionMessagesResourceBundleBase</CODE>
+    *
+    * @param message
+    * @param args is an <CODE>Object[]</CODE> array of strings which are inserted into the String which is retrieved from the <CODE>ResouceBundle</CODE>
+    * @return message translated
+    */
+   public static String translate(String message, Object[] args) {
+      return getExceptionMessage(message, args);
+   }
+
+   /**
+    * Method translate
+    *
+    * translates a message ID into an internationalized String, see alse
+    * <CODE>XMLSecurityException.getExceptionMEssage()</CODE>
+    *
+    * @param message
+    * @return message translated
+    */
+   public static String translate(String message) {
+      return getExceptionMessage(message);
+   }
+
+   /**
+    * Method getExceptionMessage
+    *
+    * @param msgID
+    * @return message translated
+    *
+    */
+   public static String getExceptionMessage(String msgID) {
+
+      try {
+         String s = resourceBundle.getString(msgID);
+
+         return s;
+      } catch (Throwable t) {
+         if (org.apache.xml.security.Init.isInitialized()) {
+            return "No message with ID \"" + msgID
+                   + "\" found in resource bundle \""
+                   + Constants.exceptionMessagesResourceBundleBase + "\"";
+         } 
+         return I18n.NOT_INITIALIZED_MSG;
+      }
+   }
+
+   /**
+    * Method getExceptionMessage
+    *
+    * @param msgID
+    * @param originalException
+    * @return message translated
+    */
+   public static String getExceptionMessage(String msgID,
+                                            Exception originalException) {
+
+      try {
+         Object exArgs[] = { originalException.getMessage() };
+         String s = MessageFormat.format(resourceBundle.getString(msgID),
+                                         exArgs);
+
+         return s;
+      } catch (Throwable t) {
+         if (org.apache.xml.security.Init.isInitialized()) {
+            return "No message with ID \"" + msgID
+                   + "\" found in resource bundle \""
+                   + Constants.exceptionMessagesResourceBundleBase
+                   + "\". Original Exception was a "
+                   + originalException.getClass().getName() + " and message "
+                   + originalException.getMessage();
+         } 
+          return I18n.NOT_INITIALIZED_MSG;
+      }
+   }
+
+   /**
+    * Method getExceptionMessage
+    *
+    * @param msgID
+    * @param exArgs
+    * @return message translated
+    */
+   public static String getExceptionMessage(String msgID, Object exArgs[]) {
+
+      try {
+         String s = MessageFormat.format(resourceBundle.getString(msgID),
+                                         exArgs);
+
+         return s;
+      } catch (Throwable t) {
+         if (org.apache.xml.security.Init.isInitialized()) {
+            return "No message with ID \"" + msgID
+                   + "\" found in resource bundle \""
+                   + Constants.exceptionMessagesResourceBundleBase + "\"";
+         } 
+         return I18n.NOT_INITIALIZED_MSG;
+      }
+   }
+
+   /**
+    * Method init
+    *
+    * @param _defaultLanguageCode
+    * @param _defaultCountryCode
+    */
+   public static void init(String _defaultLanguageCode,
+                           String _defaultCountryCode) {
+
+      I18n.defaultLanguageCode = _defaultLanguageCode;
+
+      if (I18n.defaultLanguageCode == null) {
+         I18n.defaultLanguageCode = Locale.getDefault().getLanguage();
+      }
+
+      I18n.defaultCountryCode = _defaultCountryCode;
+
+      if (I18n.defaultCountryCode == null) {
+         I18n.defaultCountryCode = Locale.getDefault().getCountry();
+      }
+
+      initLocale(I18n.defaultLanguageCode, I18n.defaultCountryCode);
+   }
+
+   /**
+    * Method initLocale
+    *
+    * @param languageCode
+    * @param countryCode
+    */
+   public static void initLocale(String languageCode, String countryCode) {
+
+      if (alreadyInitialized && languageCode.equals(_languageCode)
+              && countryCode.equals(_countryCode)) {
+         return;
+      }
+
+      if ((languageCode != null) && (countryCode != null)
+              && (languageCode.length() > 0) && (countryCode.length() > 0)) {
+         _languageCode = languageCode;
+         _countryCode = countryCode;
+      } else {
+         _countryCode = I18n.defaultCountryCode;
+         _languageCode = I18n.defaultLanguageCode;
+      }
+
+      I18n.resourceBundle =
+         ResourceBundle.getBundle(Constants.exceptionMessagesResourceBundleBase,
+                                  new Locale(_languageCode, _countryCode));
+   }
+}
diff --git a/src/org/apache/xml/security/utils/IdResolver.java b/src/org/apache/xml/security/utils/IdResolver.java
new file mode 100644
index 0000000..8ff478f
--- /dev/null
+++ b/src/org/apache/xml/security/utils/IdResolver.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import java.util.Arrays;
+import java.util.WeakHashMap;
+import java.lang.ref.WeakReference;
+
+
+/**
+ * Purpose of this class is to enable the XML Parser to keep track of ID
+ * attributes. This is done by 'registering' attributes of type ID at the
+ * IdResolver. This is necessary if we create a document from scratch and we
+ * sign some resources with a URI using a fragent identifier...
+ * <BR />
+ * The problem is that if you do not validate a document, you cannot use the
+ * <CODE>getElementByID</CODE> functionality. So this modules uses some implicit
+ * knowledge on selected Schemas and DTDs to pick the right Element for a given
+ * ID: We know that all <CODE>@Id</CODE> attributes in an Element from the XML
+ * Signature namespace are of type <CODE>ID</CODE>.
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.xml.com/lpt/a/2001/11/07/id.html">"Identity Crisis" on xml.com</A>
+ */
+public class IdResolver {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log =
+        org.apache.commons.logging.LogFactory.getLog(IdResolver.class.getName());
+
+   static WeakHashMap docMap = new WeakHashMap();
+    
+   /**
+    * Constructor IdResolver
+    *
+    */
+   private IdResolver() {
+
+      // we don't allow instantiation
+   }
+
+   /**
+    * Method registerElementById
+    *
+    * @param element
+    * @param idValue
+    */
+   public static void registerElementById(Element element, String idValue) {
+      Document doc = element.getOwnerDocument();
+      WeakHashMap elementMap = (WeakHashMap) docMap.get(doc);
+      if(elementMap == null) {
+          elementMap = new WeakHashMap();
+          docMap.put(doc, elementMap);
+      }
+      elementMap.put(idValue, new WeakReference(element));
+   }
+
+   /**
+    * Method registerElementById
+    *
+    * @param element
+    * @param id
+    */
+   public static void registerElementById(Element element, Attr id) {
+      IdResolver.registerElementById(element, id.getNodeValue());
+   }
+
+   /**
+    * Method getElementById
+    *
+    * @param doc
+    * @param id
+    * @return the element obtained by the Id, or null if it is not found.
+    */
+   public static Element getElementById(Document doc, String id) {
+
+      Element result = null;
+
+      result = IdResolver.getElementByIdType(doc, id);
+
+      if (result != null) {
+         log.debug(
+            "I could find an Element using the simple getElementByIdType method: "
+            + result.getTagName());
+
+         return result;
+      }
+
+       result = IdResolver.getElementByIdUsingDOM(doc, id);
+
+       if (result != null) {
+          log.debug(
+             "I could find an Element using the simple getElementByIdUsingDOM method: "
+            + result.getTagName());
+
+         return result;
+      }
+       // this must be done so that Xalan can catch ALL namespaces
+       //XMLUtils.circumventBug2650(doc);
+      result = IdResolver.getElementBySearching(doc, id);
+
+      if (result != null) {
+		  IdResolver.registerElementById(result, id);
+
+         return result;
+      }
+
+      return null;
+   }
+   
+
+    /**
+     * Method getElementByIdUsingDOM
+     *
+     * @param doc
+     * @param id
+     * @return the element obtained by the Id, or null if it is not found.
+     */
+    private static Element getElementByIdUsingDOM(Document doc, String id) {
+        if (log.isDebugEnabled())
+        	log.debug("getElementByIdUsingDOM() Search for ID " + id);
+        return doc.getElementById(id);
+    }
+
+   /**
+    * Method getElementByIdType
+    *
+    * @param doc
+    * @param id
+    * @return the element obtained by the Id, or null if it is not found.
+    */
+   private static Element getElementByIdType(Document doc, String id) {
+   	  if (log.isDebugEnabled())
+   	  	log.debug("getElementByIdType() Search for ID " + id);
+       WeakHashMap elementMap = (WeakHashMap) docMap.get(doc);
+       if (elementMap != null) {
+           WeakReference weakReference = (WeakReference) elementMap.get(id);
+           if (weakReference != null)
+           {
+                return (Element) weakReference.get();   
+           }
+       }
+       return null;
+   }
+
+   
+   static java.util.List names;
+   static {
+	   String namespaces[]={ Constants.SignatureSpecNS,
+			   EncryptionConstants.EncryptionSpecNS,
+			   "http://schemas.xmlsoap.org/soap/security/2000-12",
+			   "http://www.w3.org/2002/03/xkms#"	   	   
+		   };
+	   names=Arrays.asList(namespaces);
+   }
+   
+
+   private static Element getElementBySearching(Node root,String id) {
+	   Element []els=new Element[5];
+	   getElementBySearching(root,id,els);
+	   for (int i=0;i<els.length;i++) {
+		   if (els[i]!=null) {
+			   return els[i];
+		   }
+	   }
+	   return null;
+	   
+   }
+   private static int getElementBySearching(Node root,String id,Element []els) {
+	   switch (root.getNodeType()) {
+	   case Node.ELEMENT_NODE:
+		   Element el=(Element)root;
+		   if (el.hasAttributes()) {			  
+			   int index=names.indexOf(el.getNamespaceURI());
+			   if (index<0) {
+				   index=4;
+			   }		   
+			   if (el.getAttribute("Id").equals(id)) {				   
+				   els[index]=el;
+				   if (index==0) {
+					   return 1;
+				   }
+			   } else if ( el.getAttribute("id").equals(id) ) {
+				   if (index!=2) {
+					   index=4;
+				   }			    				   
+				   els[index]=el;
+			   } else if ( el.getAttribute("ID").equals(id) ) {
+				   if (index!=3) {
+					   index=4;
+				   }
+				   els[index]=el;				   
+			   } else if ((index==3)&&(
+				   el.getAttribute("OriginalRequestID").equals(id) ||
+				   el.getAttribute("RequestID").equals(id) ||
+				   el.getAttribute("ResponseID" ).equals(id))) {
+				   els[3]=el;				   
+			   }
+		   }
+	   	case Node.DOCUMENT_NODE:
+			Node sibling=root.getFirstChild();
+			while (sibling!=null) {
+				if (getElementBySearching(sibling,id,els)==1)
+					return 1;
+				sibling=sibling.getNextSibling();
+			}
+	   }
+	   return 0;
+   }
+
+}
diff --git a/src/org/apache/xml/security/utils/IgnoreAllErrorHandler.java b/src/org/apache/xml/security/utils/IgnoreAllErrorHandler.java
new file mode 100644
index 0000000..1dbdf83
--- /dev/null
+++ b/src/org/apache/xml/security/utils/IgnoreAllErrorHandler.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+
+/**
+ * This {@link org.xml.sax.ErrorHandler} does absulutely nothing but logging
+ * the events.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class IgnoreAllErrorHandler implements ErrorHandler {
+
+	/** {@link org.apache.commons.logging} logging facility */
+	static org.apache.commons.logging.Log log =
+		org.apache.commons.logging.LogFactory.getLog(
+			IgnoreAllErrorHandler.class.getName());
+
+	/** Field throwExceptions */
+	static final boolean warnOnExceptions =	System.getProperty(
+		"org.apache.xml.security.test.warn.on.exceptions", "false").equals("true");
+
+	/** Field throwExceptions           */
+	static final boolean throwExceptions = System.getProperty(
+		"org.apache.xml.security.test.throw.exceptions", "false").equals("true");
+
+	
+	/** @inheritDoc */
+	public void warning(SAXParseException ex) throws SAXException {
+		if (IgnoreAllErrorHandler.warnOnExceptions) {
+			log.warn("", ex);
+		}
+		if (IgnoreAllErrorHandler.throwExceptions) {
+			throw ex;
+		}
+	}
+
+
+	/** @inheritDoc */
+	public void error(SAXParseException ex) throws SAXException {
+		if (IgnoreAllErrorHandler.warnOnExceptions) {
+			log.error("", ex);
+		}
+		if (IgnoreAllErrorHandler.throwExceptions) {
+			throw ex;
+		}
+	}
+
+
+
+	/** @inheritDoc */
+	public void fatalError(SAXParseException ex) throws SAXException {
+		if (IgnoreAllErrorHandler.warnOnExceptions) {
+			log.warn("", ex);
+		}
+		if (IgnoreAllErrorHandler.throwExceptions) {
+			throw ex;
+		}
+	}
+}
diff --git a/src/org/apache/xml/security/utils/JavaUtils.java b/src/org/apache/xml/security/utils/JavaUtils.java
new file mode 100644
index 0000000..01dcd48
--- /dev/null
+++ b/src/org/apache/xml/security/utils/JavaUtils.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+
+/**
+ * A collection of different, general-purpose methods for JAVA-specific things
+ * @author Christian Geuer-Pollmann
+ *
+ */
+public class JavaUtils {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(JavaUtils.class.getName());
+
+   private JavaUtils() {
+     // we don't allow instantiation
+   }
+   /**
+    * Method getBytesFromFile
+    *
+    * @param fileName
+    * @return the bytes readed from the file
+    *
+    * @throws FileNotFoundException
+    * @throws IOException
+    */
+   public static byte[] getBytesFromFile(String fileName)
+           throws FileNotFoundException, IOException {
+
+      byte refBytes[] = null;
+
+      {
+         FileInputStream fisRef = new FileInputStream(fileName);
+         UnsyncByteArrayOutputStream baos = new UnsyncByteArrayOutputStream();
+         byte buf[] = new byte[1024];
+         int len;
+
+         while ((len = fisRef.read(buf)) > 0) {
+            baos.write(buf, 0, len);
+         }
+
+         refBytes = baos.toByteArray();
+      }
+
+      return refBytes;
+   }
+
+   /**
+    * Method writeBytesToFilename
+    *
+    * @param filename
+    * @param bytes
+    */
+   public static void writeBytesToFilename(String filename, byte[] bytes) {
+
+      try {
+         if (filename != null && bytes != null) {
+            File f = new File(filename);
+
+            FileOutputStream fos = new FileOutputStream(f);
+
+            fos.write(bytes);
+            fos.close();
+         } else {
+            log.debug("writeBytesToFilename got null byte[] pointed");
+         }
+      } catch (Exception ex) {}
+   }
+
+   /**
+    * This method reads all bytes from the given InputStream till EOF and returns
+    * them as a byte array.
+    *
+    * @param inputStream
+    * @return the bytes readed from the stream
+    *
+    * @throws FileNotFoundException
+    * @throws IOException
+    */
+   public static byte[] getBytesFromStream(InputStream inputStream) throws IOException {
+
+      byte refBytes[] = null;
+
+      {
+         UnsyncByteArrayOutputStream baos = new UnsyncByteArrayOutputStream();
+         byte buf[] = new byte[1024];
+         int len;
+
+         while ((len = inputStream.read(buf)) > 0) {
+            baos.write(buf, 0, len);
+         }
+
+         refBytes = baos.toByteArray();
+      }
+
+      return refBytes;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/RFC2253Parser.java b/src/org/apache/xml/security/utils/RFC2253Parser.java
new file mode 100644
index 0000000..d3aef0b
--- /dev/null
+++ b/src/org/apache/xml/security/utils/RFC2253Parser.java
@@ -0,0 +1,564 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.io.IOException;
+import java.io.StringReader;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class RFC2253Parser {
+
+    
+   /** {@link org.apache.commons.logging} logging facility */
+   /* static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(RFC2253Parser.class.getName());
+   */
+    
+   static boolean _TOXML = true;
+
+   /**
+    * Method rfc2253toXMLdsig
+    *
+    * @param dn
+    * @return normalized string
+    *
+    */
+   public static String rfc2253toXMLdsig(String dn) {
+
+      _TOXML = true;
+
+      // Transform from RFC1779 to RFC2253
+      String normalized = normalize(dn);
+
+      return rfctoXML(normalized);
+   }
+
+   /**
+    * Method xmldsigtoRFC2253
+    *
+    * @param dn
+    * @return normalized string
+    */
+   public static String xmldsigtoRFC2253(String dn) {
+
+      _TOXML = false;
+
+      // Transform from RFC1779 to RFC2253
+      String normalized = normalize(dn);
+
+      return xmltoRFC(normalized);
+   }
+
+   /**
+    * Method normalize
+    *
+    * @param dn
+    * @return normalized string
+    */
+   public static String normalize(String dn) {
+
+      //if empty string
+      if ((dn == null) || dn.equals("")) {
+         return "";
+      }
+
+      try {
+         String _DN = semicolonToComma(dn);
+         StringBuffer sb = new StringBuffer();
+         int i = 0;
+         int l = 0;
+         int k;
+
+         //for name component
+         for (int j = 0; (k = _DN.indexOf(",", j)) >= 0; j = k + 1) {
+            l += countQuotes(_DN, j, k);
+
+            if ((k > 0) && (_DN.charAt(k - 1) != '\\') && (l % 2) != 1) {
+               sb.append(parseRDN(_DN.substring(i, k).trim()) + ",");
+
+               i = k + 1;
+               l = 0;
+            }
+         }
+
+         sb.append(parseRDN(trim(_DN.substring(i))));
+
+         return sb.toString();
+      } catch (IOException ex) {
+         return dn;
+      }
+   }
+
+   /**
+    * Method parseRDN
+    *
+    * @param str
+    * @return normalized string
+    * @throws IOException
+    */
+   static String parseRDN(String str) throws IOException {
+
+      StringBuffer sb = new StringBuffer();
+      int i = 0;
+      int l = 0;
+      int k;
+
+      for (int j = 0; (k = str.indexOf("+", j)) >= 0; j = k + 1) {
+         l += countQuotes(str, j, k);
+
+         if ((k > 0) && (str.charAt(k - 1) != '\\') && (l % 2) != 1) {
+            sb.append(parseATAV(trim(str.substring(i, k))) + "+");
+
+            i = k + 1;
+            l = 0;
+         }
+      }
+
+      sb.append(parseATAV(trim(str.substring(i))));
+
+      return sb.toString();
+   }
+
+   /**
+    * Method parseATAV
+    *
+    * @param str
+    * @return normalized string
+    * @throws IOException
+    */
+   static String parseATAV(String str) throws IOException {
+
+      int i = str.indexOf("=");
+
+      if ((i == -1) || ((i > 0) && (str.charAt(i - 1) == '\\'))) {
+         return str;
+      } 
+      String attrType = normalizeAT(str.substring(0, i));
+      String attrValue = normalizeV(str.substring(i + 1));
+
+      return attrType + "=" + attrValue;
+      
+   }
+
+   /**
+    * Method normalizeAT
+    *
+    * @param str
+    * @return normalized string
+    */
+   static String normalizeAT(String str) {
+
+      String at = str.toUpperCase().trim();
+
+      if (at.startsWith("OID")) {
+         at = at.substring(3);
+      }
+
+      return at;
+   }
+
+   /**
+    * Method normalizeV
+    *
+    * @param str
+    * @return normalized string
+    * @throws IOException
+    */
+   static String normalizeV(String str) throws IOException {
+
+      String value = trim(str);
+
+      if (value.startsWith("\"")) {
+         StringBuffer sb = new StringBuffer();
+         StringReader sr = new StringReader(value.substring(1,
+                              value.length() - 1));
+         int i = 0;
+         char c;
+
+         for (; (i = sr.read()) > -1; ) {
+            c = (char) i;
+
+            //the following char is defined at 4.Relationship with RFC1779 and LDAPv2 inrfc2253
+            if ((c == ',') || (c == '=') || (c == '+') || (c == '<')
+                    || (c == '>') || (c == '#') || (c == ';')) {
+               sb.append('\\');
+            }
+
+            sb.append(c);
+         }
+
+         value = trim(sb.toString());
+      }
+
+      if (_TOXML == true) {
+         if (value.startsWith("#")) {
+            value = '\\' + value;
+         }
+      } else {
+         if (value.startsWith("\\#")) {
+            value = value.substring(1);
+         }
+      }
+
+      return value;
+   }
+
+   /**
+    * Method rfctoXML
+    *
+    * @param string
+    * @return normalized string
+    */
+   static String rfctoXML(String string) {
+
+      try {
+         String s = changeLess32toXML(string);
+
+         return changeWStoXML(s);
+      } catch (Exception e) {
+         return string;
+      }
+   }
+
+   /**
+    * Method xmltoRFC
+    *
+    * @param string
+    * @return normalized string
+    */
+   static String xmltoRFC(String string) {
+
+      try {
+         String s = changeLess32toRFC(string);
+
+         return changeWStoRFC(s);
+      } catch (Exception e) {
+         return string;
+      }
+   }
+
+   /**
+    * Method changeLess32toRFC
+    *
+    * @param string
+    * @return normalized string
+    * @throws IOException
+    */
+   static String changeLess32toRFC(String string) throws IOException {
+
+      StringBuffer sb = new StringBuffer();
+      StringReader sr = new StringReader(string);
+      int i = 0;
+      char c;
+
+      for (; (i = sr.read()) > -1; ) {
+         c = (char) i;
+
+         if (c == '\\') {
+            sb.append(c);
+
+            char c1 = (char) sr.read();
+            char c2 = (char) sr.read();
+
+            //65 (A) 97 (a)
+            if ((((c1 >= 48) && (c1 <= 57)) || ((c1 >= 65) && (c1 <= 70)) || ((c1 >= 97) && (c1 <= 102)))
+                    && (((c2 >= 48) && (c2 <= 57))
+                        || ((c2 >= 65) && (c2 <= 70))
+                        || ((c2 >= 97) && (c2 <= 102)))) {
+               char ch = (char) Byte.parseByte("" + c1 + c2, 16);
+
+               sb.append(ch);
+            } else {
+               sb.append(c1);
+               sb.append(c2);
+            }
+         } else {
+            sb.append(c);
+         }
+      }
+
+      return sb.toString();
+   }
+
+   /**
+    * Method changeLess32toXML
+    *
+    * @param string
+    * @return normalized string
+    * @throws IOException
+    */
+   static String changeLess32toXML(String string) throws IOException {
+
+      StringBuffer sb = new StringBuffer();
+      StringReader sr = new StringReader(string);
+      int i = 0;
+
+      for (; (i = sr.read()) > -1; ) {
+         if (i < 32) {
+            sb.append('\\');
+            sb.append(Integer.toHexString(i));
+         } else {
+            sb.append((char) i);
+         }
+      }
+
+      return sb.toString();
+   }
+
+   /**
+    * Method changeWStoXML
+    *
+    * @param string
+    * @return normalized string
+    * @throws IOException
+    */
+   static String changeWStoXML(String string) throws IOException {
+
+      StringBuffer sb = new StringBuffer();
+      StringReader sr = new StringReader(string);
+      int i = 0;
+      char c;
+
+      for (; (i = sr.read()) > -1; ) {
+         c = (char) i;
+
+         if (c == '\\') {
+            char c1 = (char) sr.read();
+
+            if (c1 == ' ') {
+               sb.append('\\');
+
+               String s = "20";
+
+               sb.append(s);
+            } else {
+               sb.append('\\');
+               sb.append(c1);
+            }
+         } else {
+            sb.append(c);
+         }
+      }
+
+      return sb.toString();
+   }
+
+   /**
+    * Method changeWStoRFC
+    *
+    * @param string
+    * @return normalized string
+    */
+   static String changeWStoRFC(String string) {
+
+      StringBuffer sb = new StringBuffer();
+      int i = 0;
+      int k;
+
+      for (int j = 0; (k = string.indexOf("\\20", j)) >= 0; j = k + 3) {
+         sb.append(trim(string.substring(i, k)) + "\\ ");
+
+         i = k + 3;
+      }
+
+      sb.append(string.substring(i));
+
+      return sb.toString();
+   }
+
+   /**
+    * Method semicolonToComma
+    *
+    * @param str
+    * @return normalized string
+    */
+   static String semicolonToComma(String str) {
+      return removeWSandReplace(str, ";", ",");
+   }
+
+   /**
+    * Method removeWhiteSpace
+    *
+    * @param str
+    * @param symbol
+    * @return normalized string
+    */
+   static String removeWhiteSpace(String str, String symbol) {
+      return removeWSandReplace(str, symbol, symbol);
+   }
+
+   /**
+    * Method removeWSandReplace
+    *
+    * @param str
+    * @param symbol
+    * @param replace
+    * @return normalized string
+    */
+   static String removeWSandReplace(String str, String symbol, String replace) {
+
+      StringBuffer sb = new StringBuffer();
+      int i = 0;
+      int l = 0;
+      int k;
+
+      for (int j = 0; (k = str.indexOf(symbol, j)) >= 0; j = k + 1) {
+         l += countQuotes(str, j, k);
+
+         if ((k > 0) && (str.charAt(k - 1) != '\\') && (l % 2) != 1) {
+            sb.append(trim(str.substring(i, k)) + replace);
+
+            i = k + 1;
+            l = 0;
+         }
+      }
+
+      sb.append(trim(str.substring(i)));
+
+      return sb.toString();
+   }
+
+   /**
+    * Returns the number of Quotation from i to j
+    *
+    * @param s
+    * @param i
+    * @param j
+    * @return number of quotes
+    */
+   private static int countQuotes(String s, int i, int j) {
+
+      int k = 0;
+
+      for (int l = i; l < j; l++) {
+         if (s.charAt(l) == '"') {
+            k++;
+         }
+      }
+
+      return k;
+   }
+
+   //only for the end of a space character occurring at the end of the string from rfc2253
+
+   /**
+    * Method trim
+    *
+    * @param str
+    * @return the string
+    */
+   static String trim(String str) {
+
+      String trimed = str.trim();
+      int i = str.indexOf(trimed.substring(0)) + trimed.length();
+
+      if ((str.length() > i) && trimed.endsWith("\\")
+              &&!trimed.endsWith("\\\\")) {
+         if (str.charAt(i) == ' ') {
+            trimed = trimed + " ";
+         }
+      }
+
+      return trimed;
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String[] args) throws Exception {
+
+      testToXML("CN=\"Steve, Kille\",  O=Isode Limited, C=GB");
+      testToXML("CN=Steve Kille    ,   O=Isode Limited,C=GB");
+      testToXML("\\ OU=Sales+CN=J. Smith,O=Widget Inc.,C=US\\ \\ ");
+      testToXML("CN=L. Eagle,O=Sue\\, Grabbit and Runn,C=GB");
+      testToXML("CN=Before\\0DAfter,O=Test,C=GB");
+      testToXML("CN=\"L. Eagle,O=Sue, = + < > # ;Grabbit and Runn\",C=GB");
+      testToXML("1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB");
+
+      {
+         StringBuffer sb = new StringBuffer();
+
+         sb.append('L');
+         sb.append('u');
+         sb.append('\uc48d');
+         sb.append('i');
+         sb.append('\uc487');
+
+         String test7 = "SN=" + sb.toString();
+
+         testToXML(test7);
+      }
+
+      testToRFC("CN=\"Steve, Kille\",  O=Isode Limited, C=GB");
+      testToRFC("CN=Steve Kille    ,   O=Isode Limited,C=GB");
+      testToRFC("\\20OU=Sales+CN=J. Smith,O=Widget Inc.,C=US\\20\\20 ");
+      testToRFC("CN=L. Eagle,O=Sue\\, Grabbit and Runn,C=GB");
+      testToRFC("CN=Before\\12After,O=Test,C=GB");
+      testToRFC("CN=\"L. Eagle,O=Sue, = + < > # ;Grabbit and Runn\",C=GB");
+      testToRFC("1.3.6.1.4.1.1466.0=\\#04024869,O=Test,C=GB");
+
+      {
+         StringBuffer sb = new StringBuffer();
+
+         sb.append('L');
+         sb.append('u');
+         sb.append('\uc48d');
+         sb.append('i');
+         sb.append('\uc487');
+
+         String test7 = "SN=" + sb.toString();
+
+         testToRFC(test7);
+      }
+   }
+
+   /** Field i */
+   static int counter = 0;
+
+   /**
+    * Method test
+    *
+    * @param st
+    */
+   static void testToXML(String st) {
+
+      System.out.println("start " + counter++ + ": " + st);
+      System.out.println("         " + rfc2253toXMLdsig(st));
+      System.out.println("");
+   }
+
+   /**
+    * Method testToRFC
+    *
+    * @param st
+    */
+   static void testToRFC(String st) {
+
+      System.out.println("start " + counter++ + ": " + st);
+      System.out.println("         " + xmldsigtoRFC2253(st));
+      System.out.println("");
+   }
+}
diff --git a/src/org/apache/xml/security/utils/SignatureElementProxy.java b/src/org/apache/xml/security/utils/SignatureElementProxy.java
new file mode 100644
index 0000000..abac67f
--- /dev/null
+++ b/src/org/apache/xml/security/utils/SignatureElementProxy.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * Class SignatureElementProxy
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public abstract class SignatureElementProxy extends ElementProxy {
+
+   /**
+    * Constructor SignatureElementProxy
+    *
+    * @param doc
+    */
+   public SignatureElementProxy(Document doc) {
+      super(doc);
+      //this._constructionElement.setAttributeNS(Constants.NamespaceSpecNS,"xmlns:ds",
+        //          Constants.SignatureSpecNS);
+   }
+
+   /**
+    * Constructor SignatureElementProxy
+    *
+    * @param element
+    * @param BaseURI
+    * @throws XMLSecurityException
+    */
+   public SignatureElementProxy(Element element, String BaseURI)
+           throws XMLSecurityException {
+      super(element, BaseURI);
+
+   }
+
+   /** @inheritDoc */
+   public String getBaseNamespace() {
+      return Constants.SignatureSpecNS;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/SignerOutputStream.java b/src/org/apache/xml/security/utils/SignerOutputStream.java
new file mode 100644
index 0000000..8e72293
--- /dev/null
+++ b/src/org/apache/xml/security/utils/SignerOutputStream.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+import java.io.ByteArrayOutputStream;
+
+import org.apache.xml.security.algorithms.SignatureAlgorithm;
+import org.apache.xml.security.signature.XMLSignatureException;
+
+/**
+ * @author raul
+ *
+ */
+public class SignerOutputStream extends ByteArrayOutputStream {
+    final static byte none[]="error".getBytes();
+    final SignatureAlgorithm sa;
+    /**
+     * @param sa
+     */
+    public SignerOutputStream(SignatureAlgorithm sa) {
+        this.sa=sa;       
+    }
+
+    /** @inheritDoc */
+    public byte[] toByteArray() {
+        return none;
+    }
+    
+    /** @inheritDoc */
+    public void write(byte[] arg0)  {
+        try {
+			sa.update(arg0);
+		} catch (XMLSignatureException e) {
+            throw new RuntimeException(""+e);
+		}
+    }
+    
+    /** @inheritDoc */
+    public void write(int arg0) {
+        try {
+            sa.update((byte)arg0);
+        } catch (XMLSignatureException e) {
+            throw new RuntimeException(""+e);
+        }
+    }
+    
+    /** @inheritDoc */
+    public void write(byte[] arg0, int arg1, int arg2) {
+        try {
+            sa.update(arg0,arg1,arg2);
+        } catch (XMLSignatureException e) {
+            throw new RuntimeException(""+e);
+        }
+    }
+    
+
+}
diff --git a/src/org/apache/xml/security/utils/UnsyncBufferedOutputStream.java b/src/org/apache/xml/security/utils/UnsyncBufferedOutputStream.java
new file mode 100644
index 0000000..3eeb8a2
--- /dev/null
+++ b/src/org/apache/xml/security/utils/UnsyncBufferedOutputStream.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * A class that buffers writte without synchronize its methods
+ * @author raul
+ *
+ */
+public class UnsyncBufferedOutputStream extends OutputStream {
+	final OutputStream out;
+	
+	final byte[] buf=(byte[])bufCahce.get();
+	static final int size=8*1024;
+	private static ThreadLocal bufCahce = new ThreadLocal() {
+        protected synchronized Object initialValue() {
+            return new byte[size];
+        }
+    };
+	int pointer=0;
+	/**
+	 * Creates a buffered output stream without synchronization
+	 * @param out the outputstream to buffer
+	 */
+	public UnsyncBufferedOutputStream(OutputStream out) {
+		this.out=out;
+	}
+	
+	/** @inheritDoc */
+	public void write(byte[] arg0) throws IOException {
+		write(arg0,0,arg0.length);
+	}
+	
+	/** @inheritDoc */
+	public void write(byte[] arg0, int arg1, int len) throws IOException {
+		int newLen=pointer+len;
+		if (newLen> size) {
+			flushBuffer();		
+			if (len>size) {
+				out.write(arg0,arg1,len);
+				return;
+			}
+			newLen=len;
+		}
+		System.arraycopy(arg0,arg1,buf,pointer,len);
+		pointer=newLen;
+	}
+	
+	private final void flushBuffer() throws IOException {
+		if (pointer>0)
+			out.write(buf,0,pointer);
+		pointer=0;
+		
+	}
+	
+	/** @inheritDoc */
+	public void write(int arg0) throws IOException {		
+		if (pointer>= size) {
+			flushBuffer();
+		}
+		buf[pointer++]=(byte)arg0;
+
+	}
+	
+	/** @inheritDoc */	
+	public void flush() throws IOException {
+		flushBuffer();
+		out.flush();
+	}
+
+	/** @inheritDoc */
+	public void close() throws IOException {
+		flush();				
+	}
+
+}
diff --git a/src/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java b/src/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java
new file mode 100644
index 0000000..9fcb1c7
--- /dev/null
+++ b/src/org/apache/xml/security/utils/UnsyncByteArrayOutputStream.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright  1999-2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+import java.io.OutputStream;
+
+/**
+ * A simple Unsynced ByteArryOutputStream
+ * @author raul
+ *
+ */
+public class UnsyncByteArrayOutputStream extends OutputStream  {	
+	private static ThreadLocal bufCahce = new ThreadLocal() {
+        protected synchronized Object initialValue() {
+            return new byte[8*1024];
+        }        
+    };
+    byte[] buf=(byte[])bufCahce.get();
+	int size=8*1024;//buf.length;	
+	int pos=0;
+	/** @inheritDoc */
+	public UnsyncByteArrayOutputStream() {	
+	}
+	public void write(byte[] arg0) {
+		int newPos=pos+arg0.length;
+		if (newPos>size) {
+			expandSize();
+		}
+		System.arraycopy(arg0,0,buf,pos,arg0.length);
+		pos=newPos;
+	}
+	/** @inheritDoc */
+	public void write(byte[] arg0, int arg1, int arg2) {
+		int newPos=pos+arg2;
+		if (newPos>size) {
+			expandSize();
+		}
+		System.arraycopy(arg0,arg1,buf,pos,arg2);
+		pos=newPos;
+	}
+	/** @inheritDoc */
+	public void write(int arg0) {		
+		if (pos>=size) {
+			expandSize();
+		}
+		buf[pos++]=(byte)arg0;		
+	}
+	/** @inheritDoc */
+	public byte[] toByteArray() {
+		byte result[]=new byte[pos];
+		System.arraycopy(buf,0,result,0,pos);
+		return result;
+	}
+	
+	/** @inheritDoc */
+	public void reset() {
+		pos=0;
+	}
+	
+	/** @inheritDoc */
+	void expandSize() {
+		int newSize=size<<2;
+		byte newBuf[]=new byte[newSize];
+		System.arraycopy(buf,0,newBuf,0,pos);		
+		buf=newBuf;
+		size=newSize;
+		
+	}
+}
diff --git a/src/org/apache/xml/security/utils/XMLUtils.java b/src/org/apache/xml/security/utils/XMLUtils.java
new file mode 100644
index 0000000..2ac8508
--- /dev/null
+++ b/src/org/apache/xml/security/utils/XMLUtils.java
@@ -0,0 +1,731 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+
+
+/**
+ * DOM and XML accessibility and comfort functions.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class XMLUtils {
+
+   /**
+    * Constructor XMLUtils
+    *
+    */
+   private XMLUtils() {
+
+      // we don't allow instantiation
+   }
+   public static Element getNextElement(Node el) {
+	   while ((el!=null) && (el.getNodeType()!=Node.ELEMENT_NODE)) {
+		   el=el.getNextSibling();
+	   }
+	   return (Element)el;
+	   
+   }
+   
+   /**
+    * @param rootNode
+    * @param result
+    * @param exclude
+    * @param com wheather comments or not
+    */   
+   public static void getSet(Node rootNode,Set result,Node exclude ,boolean com) {
+   	  if ((exclude!=null) && isDescendantOrSelf(exclude,rootNode)){
+   	  	return;
+      }
+      getSetRec(rootNode,result,exclude,com);
+   }
+   static final void getSetRec(final Node rootNode,final Set result,
+        final Node exclude ,final boolean com) {
+   	   //Set result = new HashSet();
+       if (rootNode==exclude) {
+          return;
+       }
+   	   switch (rootNode.getNodeType()) {   	   		   	   			
+   	   	case Node.ELEMENT_NODE:
+   	   			result.add(rootNode);
+   	   	        Element el=(Element)rootNode;
+                if (el.hasAttributes()) {
+   	   		        NamedNodeMap nl = ((Element)rootNode).getAttributes();
+   	   		        for (int i=0;i<nl.getLength();i++) {
+   	   		        	result.add(nl.item(i));
+   	   		        }
+                }
+                //no return keep working
+   	   	case Node.DOCUMENT_NODE:   	   			
+   	   			for (Node r=rootNode.getFirstChild();r!=null;r=r.getNextSibling()){                                    
+   	   				if (r.getNodeType()==Node.TEXT_NODE) {
+   	   					result.add(r); 
+   	   					while ((r!=null) && (r.getNodeType()==Node.TEXT_NODE)) {
+   	   						r=r.getNextSibling();
+   	   					}
+   	   					if (r==null)
+   	   						return;
+   	   				}  
+   	   				getSetRec(r,result,exclude,com);                
+   	   			}
+   	   			return;
+   	   		case Node.COMMENT_NODE:
+   	   			if (com) {
+   	   				result.add(rootNode);
+   	   			}
+   	   		    return;
+   	   		case Node.DOCUMENT_TYPE_NODE:
+   	   			return;
+   	   		default:
+   	   			result.add(rootNode);
+   	   }
+   	   return;
+   }
+
+
+   /**
+    * Outputs a DOM tree to an {@link OutputStream}.
+    *
+    * @param contextNode root node of the DOM tree
+    * @param os the {@link OutputStream}
+    */
+   public static void outputDOM(Node contextNode, OutputStream os) {
+      XMLUtils.outputDOM(contextNode, os, false);
+   }
+
+   /**
+    * Outputs a DOM tree to an {@link OutputStream}. <I>If an Exception is
+    * thrown during execution, it's StackTrace is output to System.out, but the
+    * Exception is not re-thrown.</I>
+    *
+    * @param contextNode root node of the DOM tree
+    * @param os the {@link OutputStream}
+    * @param addPreamble
+    */
+   public static void outputDOM(Node contextNode, OutputStream os,
+                                boolean addPreamble) {
+
+      try {
+         if (addPreamble) {
+            os.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".getBytes());
+         }
+
+         os.write(
+            Canonicalizer.getInstance(
+               Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS).canonicalizeSubtree(
+               contextNode));
+      } catch (IOException ex) {}
+      catch (InvalidCanonicalizerException ex) {
+         ex.printStackTrace();
+      } catch (CanonicalizationException ex) {
+         ex.printStackTrace();
+      }
+   }
+
+   /**
+    * Serializes the <CODE>contextNode</CODE> into the OutputStream, <I>but
+    * supresses all Exceptions</I>.
+    * <BR />
+    * NOTE: <I>This should only be used for debugging purposes,
+    * NOT in a production environment; this method ignores all exceptions,
+    * so you won't notice if something goes wrong. If you're asking what is to
+    * be used in a production environment, simply use the code inside the
+    * <code>try{}</code> statement, but handle the Exceptions appropriately.</I>
+    *
+    * @param contextNode
+    * @param os
+    */
+   public static void outputDOMc14nWithComments(Node contextNode,
+           OutputStream os) {
+
+      try {
+         os.write(
+            Canonicalizer.getInstance(
+               Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS).canonicalizeSubtree(
+               contextNode));
+      } catch (IOException ex) {
+
+         // throw new RuntimeException(ex.getMessage());
+      } catch (InvalidCanonicalizerException ex) {
+
+         // throw new RuntimeException(ex.getMessage());
+      } catch (CanonicalizationException ex) {
+
+         // throw new RuntimeException(ex.getMessage());
+      }
+   }
+
+ 
+   /**
+    * Method getFullTextChildrenFromElement
+    *
+    * @param element
+    * @return the string of chi;ds
+    */
+   public static String getFullTextChildrenFromElement(Element element) {
+
+      StringBuffer sb = new StringBuffer();
+      NodeList children = element.getChildNodes();
+      int iMax = children.getLength();
+
+      for (int i = 0; i < iMax; i++) {
+         Node curr = children.item(i);
+
+         if (curr.getNodeType() == Node.TEXT_NODE) {
+            sb.append(((Text) curr).getData());
+         }
+      }
+
+      return sb.toString();
+   }
+
+
+   /**
+    * Creates an Element in the XML Signature specification namespace.
+    *
+    * @param doc the factory Document
+    * @param elementName the local name of the Element
+    * @return the Element
+    */
+   public static Element createElementInSignatureSpace(Document doc,
+           String elementName) {
+
+      if (doc == null) {
+         throw new RuntimeException("Document is null");
+      }
+
+      String ds = Constants.getSignatureSpecNSprefix();
+
+      if ((ds == null) || (ds.length() == 0)) {
+         Element element = doc.createElementNS(Constants.SignatureSpecNS,
+                                               elementName);
+
+         element.setAttributeNS(Constants.NamespaceSpecNS, "xmlns",
+                                Constants.SignatureSpecNS);
+
+         return element;
+      } 
+         Element element = doc.createElementNS(Constants.SignatureSpecNS,
+                                               ds + ":" + elementName);         
+         element.setAttributeNS(Constants.NamespaceSpecNS, ElementProxy.getDefaultPrefixBindings(Constants.SignatureSpecNS),
+                                Constants.SignatureSpecNS);
+
+         return element;
+      
+   }
+
+
+   /**
+    * Returns true if the element is in XML Signature namespace and the local
+    * name equals the supplied one.
+    *
+    * @param element
+    * @param localName
+    * @return true if the element is in XML Signature namespace and the local name equals the supplied one
+    */
+   public static boolean elementIsInSignatureSpace(Element element,
+           String localName) {
+
+      if ((element == null) ||
+          Constants.SignatureSpecNS!=element.getNamespaceURI() ){
+         return false;
+      }
+
+      if (!element.getLocalName().equals(localName)) {
+         return false;
+      }
+
+      return true;
+   }
+
+   /**
+    * Returns true if the element is in XML Encryption namespace and the local
+    * name equals the supplied one.
+    *
+    * @param element
+    * @param localName
+    * @return true if the element is in XML Encryption namespace and the local name equals the supplied one
+    */
+   public static boolean elementIsInEncryptionSpace(Element element,
+           String localName) {
+
+      if ((element == null) || 
+            EncryptionConstants.EncryptionSpecNS!=element.getNamespaceURI() 
+          ){
+         return false;
+      }
+
+      if (!element.getLocalName().equals(localName)) {
+         return false;
+      }
+
+      return true;
+   }
+
+   /**
+    * This method returns the owner document of a particular node.
+    * This method is necessary because it <I>always</I> returns a
+    * {@link Document}. {@link Node#getOwnerDocument} returns <CODE>null</CODE>
+    * if the {@link Node} is a {@link Document}.
+    *
+    * @param node
+    * @return the owner document of the node
+    */
+   public static Document getOwnerDocument(Node node) {
+
+      if (node.getNodeType() == Node.DOCUMENT_NODE) {
+         return (Document) node;
+      } 
+         try {
+            return node.getOwnerDocument();
+         } catch (NullPointerException npe) {
+            throw new NullPointerException(I18n.translate("endorsed.jdk1.4.0")
+                                           + " Original message was \""
+                                           + npe.getMessage() + "\"");
+         }
+      
+   }
+
+    /**
+     * This method returns the first non-null owner document of the Node's in this Set.
+     * This method is necessary because it <I>always</I> returns a
+     * {@link Document}. {@link Node#getOwnerDocument} returns <CODE>null</CODE>
+     * if the {@link Node} is a {@link Document}.
+     *
+     * @param xpathNodeSet
+     * @return the owner document 
+     */
+    public static Document getOwnerDocument(Set xpathNodeSet) {
+       NullPointerException npe = null;
+       Iterator iterator = xpathNodeSet.iterator();
+       while(iterator.hasNext()) {
+           Node node = (Node) iterator.next();
+           int nodeType =node.getNodeType();
+           if (nodeType == Node.DOCUMENT_NODE) {
+              return (Document) node;
+           } 
+              try {
+                 if (nodeType==Node.ATTRIBUTE_NODE) {
+                    return ((Attr)node).getOwnerElement().getOwnerDocument();  
+                 }
+                 return node.getOwnerDocument();
+              } catch (NullPointerException e) {
+                  npe = e;
+              }
+           
+       }
+       throw new NullPointerException(I18n.translate("endorsed.jdk1.4.0")
+                                       + " Original message was \""
+                                       + (npe == null ? "" : npe.getMessage()) + "\"");
+    }
+    
+
+ 
+   /**
+    * Method createDSctx
+    *
+    * @param doc
+    * @param prefix
+    * @param namespace
+    * @return the element.
+    */
+   public static Element createDSctx(Document doc, String prefix,
+                                     String namespace) {
+
+      if ((prefix == null) || (prefix.trim().length() == 0)) {
+         throw new IllegalArgumentException("You must supply a prefix");
+      }
+
+      Element ctx = doc.createElementNS(null, "namespaceContext");
+
+      ctx.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:" + prefix.trim(),
+                         namespace);
+
+      return ctx;
+   }
+
+
+
+   /**
+    * Method addReturnToElement
+    *
+    * @param e
+    */
+   public static void addReturnToElement(Element e) {
+
+      Document doc = e.getOwnerDocument();
+
+      e.appendChild(doc.createTextNode("\n"));
+   }
+
+   /**
+    * Method convertNodelistToSet
+    *
+    * @param xpathNodeSet
+    * @return the set with the nodelist
+    */
+   public static Set convertNodelistToSet(NodeList xpathNodeSet) {
+
+      if (xpathNodeSet == null) {
+         return new HashSet();
+      }
+
+      int length = xpathNodeSet.getLength();
+      Set set = new HashSet(length);
+
+      for (int i = 0; i < length; i++) {
+         set.add(xpathNodeSet.item(i));
+      }
+
+      return set;
+   }
+
+
+   /**
+    * This method spreads all namespace attributes in a DOM document to their
+    * children. This is needed because the XML Signature XPath transform
+    * must evaluate the XPath against all nodes in the input, even against
+    * XPath namespace nodes. Through a bug in XalanJ2, the namespace nodes are
+    * not fully visible in the Xalan XPath model, so we have to do this by
+    * hand in DOM spaces so that the nodes become visible in XPath space.
+    *
+    * @param doc
+    * @see <A HREF="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2650">Namespace axis resolution is not XPath compliant </A>
+    */
+   public static void circumventBug2650(Document doc) {
+
+      Element documentElement = doc.getDocumentElement();
+
+      // if the document element has no xmlns definition, we add xmlns=""
+      Attr xmlnsAttr =
+         documentElement.getAttributeNodeNS(Constants.NamespaceSpecNS, "xmlns");
+
+      if (xmlnsAttr == null) {
+         documentElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "");
+      }
+
+      XMLUtils.circumventBug2650internal(doc);
+   }
+
+   /**
+    * This is the work horse for {@link #circumventBug2650}.
+    *
+    * @param node
+    * @see <A HREF="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2650">Namespace axis resolution is not XPath compliant </A>
+    */
+   private static void circumventBug2650internal(Node node) {
+	   Node parent=null;
+	   Node sibling=null;
+	   final String namespaceNs=Constants.NamespaceSpecNS;
+	   do {
+         switch (node.getNodeType()) {
+         case Node.ELEMENT_NODE :
+        	 Element element = (Element) node;
+             if (!element.hasChildNodes())
+            	 break;
+             if (element.hasAttributes()) {            	 
+             NamedNodeMap attributes = element.getAttributes();         	
+             int attributesLength = attributes.getLength();    
+             
+             for (Node child = element.getFirstChild(); child!=null; 
+             	child=child.getNextSibling()) {            
+
+             	if (child.getNodeType() != Node.ELEMENT_NODE) {
+             		continue;
+             	}
+             	Element childElement = (Element) child;
+
+             	for (int i = 0; i < attributesLength; i++) {
+             		Attr currentAttr = (Attr) attributes.item(i); 
+             		if (namespaceNs!=currentAttr.getNamespaceURI())
+             			continue;
+             		if (childElement.hasAttributeNS(namespaceNs,
+    							currentAttr.getLocalName())) {
+             				continue;
+             		}
+             		childElement.setAttributeNS(namespaceNs,
+                                                currentAttr.getName(),
+                                                currentAttr.getNodeValue());         					
+             				
+             			
+             	}
+             }            
+             }
+         case Node.ENTITY_REFERENCE_NODE :
+         case Node.DOCUMENT_NODE :
+        	 parent=node;
+        	 sibling=node.getFirstChild();
+             break;
+         }
+         while ((sibling==null) && (parent!=null)) {
+        		 sibling=parent.getNextSibling();
+        		 parent=parent.getParentNode();
+        	 };
+       if (sibling==null) {
+        		 return;
+        	 }
+       	
+         node=sibling;
+         sibling=node.getNextSibling();
+	   } while (true);
+   }
+
+   /**
+    * @param sibling
+    * @param nodeName
+    * @param number
+    * @return nodes with the constrain
+    */
+   public static Element selectDsNode(Node sibling, String nodeName, int number) {
+	while (sibling!=null) {
+		if (nodeName.equals(sibling.getLocalName())
+				&& Constants.SignatureSpecNS==sibling.getNamespaceURI()) {
+			if (number==0){
+				return (Element)sibling;
+			}
+			number--;
+		}
+		sibling=sibling.getNextSibling();
+	}
+	return null;
+   }
+   
+   /**
+    * @param sibling
+    * @param nodeName
+    * @param number
+    * @return nodes with the constrain
+    */
+
+   public static Element selectXencNode(Node sibling, String nodeName, int number) {
+	while (sibling!=null) {
+		if (nodeName.equals(sibling.getLocalName())
+				&& EncryptionConstants.EncryptionSpecNS==sibling.getNamespaceURI()) {
+			if (number==0){
+				return (Element)sibling;
+			}
+			number--;
+		}
+		sibling=sibling.getNextSibling();
+	}
+	return null;
+   }
+   
+
+   /**
+    * @param sibling
+    * @param nodeName
+    * @param number
+    * @return nodes with the constrain
+    */
+   public static Text selectDsNodeText(Node sibling, String nodeName, int number) {
+   	    Node n=selectDsNode(sibling,nodeName,number);
+        if (n==null) {
+        	return null;
+        }
+        n=n.getFirstChild();
+        while (n!=null && n.getNodeType()!=Node.TEXT_NODE) {
+        	n=n.getNextSibling();
+        }
+        return (Text)n;
+   }
+   
+   /**
+    * @param sibling
+    * @param uri
+    * @param nodeName
+    * @param number
+    * @return nodes with the constrain
+    */
+   public static Text selectNodeText(Node sibling, String uri, String nodeName, int number) {
+        Node n=selectNode(sibling,uri,nodeName,number);
+    if (n==null) {
+        return null;
+    }
+    n=n.getFirstChild();
+    while (n!=null && n.getNodeType()!=Node.TEXT_NODE) {
+        n=n.getNextSibling();
+    }
+    return (Text)n;
+   }
+   
+   /**
+    * @param sibling
+    * @param uri
+    * @param nodeName
+    * @param number
+    * @return nodes with the constrain
+    */
+   public static Element selectNode(Node sibling, String uri,String nodeName, int number) {
+	while (sibling!=null) {
+		if (nodeName.equals(sibling.getLocalName())
+				&& uri==sibling.getNamespaceURI()) {
+			if (number==0){
+				return (Element)sibling;
+			}
+			number--;
+		}
+		sibling=sibling.getNextSibling();
+	}
+	return null;
+   }
+   
+   /**
+    * @param sibling
+    * @param nodeName    
+    * @return nodes with the constrain
+    */
+   public static Element[] selectDsNodes(Node sibling,String nodeName) {
+     return selectConsecutiveNodes(sibling,Constants.SignatureSpecNS,nodeName);
+   }
+   /**
+    * @param sibling
+    * @param uri
+    * @param nodeName
+    * @return nodes with the constrain
+    */
+    public static Element[] selectConsecutiveNodes(Node sibling,String uri,String nodeName) {
+    	int size=20;
+    	Element[] a= new Element[size];
+    	int curr=0;
+    	//List list=new ArrayList();
+    	while (sibling!=null) {
+    		if (nodeName.equals(sibling.getLocalName())
+    				&& uri==sibling.getNamespaceURI()) {
+    			do {
+    				a[curr++]=(Element)sibling;
+    				if (size<=curr) {
+    					int cursize= size<<2;
+    					Element []cp=new Element[cursize];
+    					System.arraycopy(a,0,cp,0,size);
+    					a=cp;
+    					size=cursize;
+    				}
+    				sibling=sibling.getNextSibling();
+    			} while ((sibling!=null) && nodeName.equals(sibling.getLocalName())
+				&& uri==sibling.getNamespaceURI());    			
+    			break;
+    		}
+    		sibling=sibling.getNextSibling();
+    	}
+    	Element []af=new Element[curr];
+    	System.arraycopy(a,0,af,0,curr);
+    	return af;
+   }
+   /**
+    * @param sibling
+    * @param uri
+    * @param nodeName
+    * @return nodes with the constrain
+    */
+    public static Element[] selectNodes(Node sibling,String uri,String nodeName) {
+    	int size=20;
+    	Element[] a= new Element[size];
+    	int curr=0;
+    	//List list=new ArrayList();
+    	while (sibling!=null) {
+    		if (nodeName.equals(sibling.getLocalName())
+    				&& uri==sibling.getNamespaceURI()) {
+    			a[curr++]=(Element)sibling;
+    			if (size<=curr) {
+    				int cursize= size<<2;
+    				Element []cp=new Element[cursize];
+    				System.arraycopy(a,0,cp,0,size);
+    				a=cp;
+    				size=cursize;
+    			}   
+    		}
+    		sibling=sibling.getNextSibling();
+    	}
+    	Element []af=new Element[curr];
+    	System.arraycopy(a,0,af,0,curr);
+    	return af;
+   }
+
+   /**
+    * @param signatureElement
+    * @param inputSet
+    * @return nodes with the constrain
+    */
+    public static Set excludeNodeFromSet(Node signatureElement, Set inputSet) {
+	  Set resultSet = new HashSet();
+	  Iterator iterator = inputSet.iterator();
+
+	  while (iterator.hasNext()) {
+	    Node inputNode = (Node) iterator.next();
+
+	    if (!XMLUtils
+	            .isDescendantOrSelf(signatureElement, inputNode)) {
+	       resultSet.add(inputNode);
+	    }
+	 }
+	 return resultSet;
+     }
+
+   /**
+    * Returns true if the descendantOrSelf is on the descendant-or-self axis
+    * of the context node.
+    *
+    * @param ctx
+    * @param descendantOrSelf
+    * @return true if the node is descendant
+    */
+   static public boolean isDescendantOrSelf(Node ctx, Node descendantOrSelf) {
+
+      if (ctx == descendantOrSelf) {
+         return true;
+      }
+
+      Node parent = descendantOrSelf;
+
+      while (true) {
+         if (parent == null) {
+            return false;
+         }
+
+         if (parent == ctx) {
+            return true;
+         }
+
+         if (parent.getNodeType() == Node.ATTRIBUTE_NODE) {
+            parent = ((Attr) parent).getOwnerElement();
+         } else {
+            parent = parent.getParentNode();
+         }
+      }
+   }
+}
diff --git a/src/org/apache/xml/security/utils/XPathFuncHereAPI.java b/src/org/apache/xml/security/utils/XPathFuncHereAPI.java
new file mode 100644
index 0000000..4cbff02
--- /dev/null
+++ b/src/org/apache/xml/security/utils/XPathFuncHereAPI.java
@@ -0,0 +1,303 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils;
+
+
+
+import javax.xml.transform.TransformerException;
+
+import org.apache.xml.security.transforms.implementations.FuncHereContext;
+import org.apache.xml.utils.PrefixResolver;
+import org.apache.xml.utils.PrefixResolverDefault;
+import org.apache.xpath.XPath;
+import org.apache.xpath.objects.XObject;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.ProcessingInstruction;
+import org.w3c.dom.Text;
+import org.w3c.dom.traversal.NodeIterator;
+
+
+
+
+/**
+ * This class does the same as {@link org.apache.xpath.XPathAPI} except that the XPath strings
+ * are not supplied as Strings but as {@link Text}, {@link Attr}ibute or
+ * {ProcessingInstruction} nodes which contain the XPath string. This enables
+ * us to use the <CODE>here()</CODE> function.
+ * <BR>
+ * The methods in this class are convenience methods into the low-level XPath API.
+ * These functions tend to be a little slow, since a number of objects must be
+ * created for each evaluation.  A faster way is to precompile the
+ * XPaths using the low-level API, and then just use the XPaths
+ * over and over.
+ *
+ * @author $Author$
+ * @see <a href="http://www.w3.org/TR/xpath">XPath Specification</a>
+ */
+public class XPathFuncHereAPI {
+
+   /**
+    * Use an XPath string to select a single node. XPath namespace
+    * prefixes are resolved from the context node, which may not
+    * be what you want (see the next method).
+    *
+    * @param contextNode The node to start searching from.
+    * @param xpathnode A Node containing a valid XPath string.
+    * @return The first node found that matches the XPath, or null.
+    *
+    * @throws TransformerException
+    */
+   public static Node selectSingleNode(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return selectSingleNode(contextNode, xpathnode, contextNode);
+   }
+
+   /**
+    * Use an XPath string to select a single node.
+    * XPath namespace prefixes are resolved from the namespaceNode.
+    *
+    * @param contextNode The node to start searching from.
+    * @param xpathnode
+    * @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    * @return The first node found that matches the XPath, or null.
+    *
+    * @throws TransformerException
+    */
+   public static Node selectSingleNode(
+           Node contextNode, Node xpathnode, Node namespaceNode)
+              throws TransformerException {
+
+      // Have the XObject return its result as a NodeSetDTM.
+      NodeIterator nl = selectNodeIterator(contextNode, xpathnode,
+                                           namespaceNode);
+
+      // Return the first node, or null
+      return nl.nextNode();
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the contextNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    */
+   public static NodeIterator selectNodeIterator(
+           Node contextNode, Node xpathnode) throws TransformerException {
+      return selectNodeIterator(contextNode, xpathnode, contextNode);
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the namespaceNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    */
+   public static NodeIterator selectNodeIterator(
+           Node contextNode, Node xpathnode, Node namespaceNode)
+              throws TransformerException {
+
+      // Execute the XPath, and have it return the result
+      XObject list = eval(contextNode, xpathnode, namespaceNode);
+
+      // Have the XObject return its result as a NodeSetDTM.
+      return list.nodeset();
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the contextNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    */
+   public static NodeList selectNodeList(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return selectNodeList(contextNode, xpathnode, contextNode);
+   }
+
+   /**
+    *  Use an XPath string to select a nodelist.
+    *  XPath namespace prefixes are resolved from the namespaceNode.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    *  @return A NodeIterator, should never be null.
+    *
+    * @throws TransformerException
+    */
+   public static NodeList selectNodeList(
+           Node contextNode, Node xpathnode, Node namespaceNode)
+              throws TransformerException {
+
+      // Execute the XPath, and have it return the result
+      XObject list = eval(contextNode, xpathnode, namespaceNode);
+
+      // Return a NodeList.
+      return list.nodelist();
+   }
+
+   /**
+    *  Evaluate XPath string to an XObject.  Using this method,
+    *  XPath namespace prefixes will be resolved from the namespaceNode.
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @return An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
+    *  @see org.apache.xpath.objects.XObject
+    *  @see org.apache.xpath.objects.XNull
+    *  @see org.apache.xpath.objects.XBoolean
+    *  @see org.apache.xpath.objects.XNumber
+    *  @see org.apache.xpath.objects.XString
+    *  @see org.apache.xpath.objects.XRTreeFrag
+    *
+    * @throws TransformerException
+    */
+   public static XObject eval(Node contextNode, Node xpathnode)
+           throws TransformerException {
+      return eval(contextNode, xpathnode, contextNode);
+   }
+
+   /**
+    *  Evaluate XPath string to an XObject.
+    *  XPath namespace prefixes are resolved from the namespaceNode.
+    *  The implementation of this is a little slow, since it creates
+    *  a number of objects each time it is called.  This could be optimized
+    *  to keep the same objects around, but then thread-safety issues would arise.
+    *
+    *  @param contextNode The node to start searching from.
+    * @param xpathnode
+    *  @param namespaceNode The node from which prefixes in the XPath will be resolved to namespaces.
+    *  @return An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
+    *  @see org.apache.xpath.objects.XObject
+    *  @see org.apache.xpath.objects.XNull
+    *  @see org.apache.xpath.objects.XBoolean
+    *  @see org.apache.xpath.objects.XNumber
+    *  @see org.apache.xpath.objects.XString
+    *  @see org.apache.xpath.objects.XRTreeFrag
+    *
+    * @throws TransformerException
+    */
+   public static XObject eval(
+           Node contextNode, Node xpathnode, Node namespaceNode)
+              throws TransformerException {
+
+      // Since we don't have a XML Parser involved here, install some default support
+      // for things like namespaces, etc.
+      // (Changed from: XPathContext xpathSupport = new XPathContext();
+      //    because XPathContext is weak in a number of areas... perhaps
+      //    XPathContext should be done away with.)
+      FuncHereContext xpathSupport = new FuncHereContext(xpathnode);
+
+      // Create an object to resolve namespace prefixes.
+      // XPath namespaces are resolved from the input context node's document element
+      // if it is a root node, or else the current context node (for lack of a better
+      // resolution space, given the simplicity of this sample code).
+      PrefixResolverDefault prefixResolver =
+         new PrefixResolverDefault((namespaceNode.getNodeType()
+                                    == Node.DOCUMENT_NODE)
+                                   ? ((Document) namespaceNode)
+                                      .getDocumentElement()
+                                   : namespaceNode);
+      String str = getStrFromNode(xpathnode);
+
+      // Create the XPath object.
+      XPath xpath = new XPath(str, null, prefixResolver, XPath.SELECT, null);
+
+      // Execute the XPath, and have it return the result
+      // return xpath.execute(xpathSupport, contextNode, prefixResolver);
+      int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode);
+
+      return xpath.execute(xpathSupport, ctxtNode, prefixResolver);
+   }
+
+   /**
+    *   Evaluate XPath string to an XObject.
+    *   XPath namespace prefixes are resolved from the namespaceNode.
+    *   The implementation of this is a little slow, since it creates
+    *   a number of objects each time it is called.  This could be optimized
+    *   to keep the same objects around, but then thread-safety issues would arise.
+    *
+    *   @param contextNode The node to start searching from.
+    * @param xpathnode
+    *   @param prefixResolver Will be called if the parser encounters namespace
+    *                         prefixes, to resolve the prefixes to URLs.
+    *   @return An XObject, which can be used to obtain a string, number, nodelist, etc, should never be null.
+    *   @see org.apache.xpath.objects.XObject
+    *   @see org.apache.xpath.objects.XNull
+    *   @see org.apache.xpath.objects.XBoolean
+    *   @see org.apache.xpath.objects.XNumber
+    *   @see org.apache.xpath.objects.XString
+    *   @see org.apache.xpath.objects.XRTreeFrag
+    *
+    * @throws TransformerException
+    */
+   public static XObject eval(
+           Node contextNode, Node xpathnode, PrefixResolver prefixResolver)
+              throws TransformerException {
+
+      String str = getStrFromNode(xpathnode);
+
+      // Since we don't have a XML Parser involved here, install some default support
+      // for things like namespaces, etc.
+      // (Changed from: XPathContext xpathSupport = new XPathContext();
+      //    because XPathContext is weak in a number of areas... perhaps
+      //    XPathContext should be done away with.)
+      // Create the XPath object.
+      XPath xpath = new XPath(str, null, prefixResolver, XPath.SELECT, null);
+
+      // Execute the XPath, and have it return the result
+      FuncHereContext xpathSupport = new FuncHereContext(xpathnode);
+      int ctxtNode = xpathSupport.getDTMHandleFromNode(contextNode);
+
+      return xpath.execute(xpathSupport, ctxtNode, prefixResolver);
+   }
+
+   /**
+    * Method getStrFromNode
+    *
+    * @param xpathnode
+    * @return the string from the node
+    */
+   private static String getStrFromNode(Node xpathnode) {
+
+      if (xpathnode.getNodeType() == Node.TEXT_NODE) {
+         return ((Text) xpathnode).getData();
+      } else if (xpathnode.getNodeType() == Node.ATTRIBUTE_NODE) {
+         return ((Attr) xpathnode).getNodeValue();
+      } else if (xpathnode.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE) {
+         return ((ProcessingInstruction) xpathnode).getNodeValue();
+      }
+
+      return "";
+   }
+}
diff --git a/src/org/apache/xml/security/utils/package.html b/src/org/apache/xml/security/utils/package.html
new file mode 100644
index 0000000..6136337
--- /dev/null
+++ b/src/org/apache/xml/security/utils/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+general utility classes.
+</P></BODY></HTML>
diff --git a/src/org/apache/xml/security/utils/resolver/ResourceResolver.java b/src/org/apache/xml/security/utils/resolver/ResourceResolver.java
new file mode 100644
index 0000000..9ecae82
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/ResourceResolver.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.w3c.dom.Attr;
+
+/**
+ * During reference validation, we have to retrieve resources from somewhere.
+ * This is done by retrieving a Resolver. The resolver needs two arguments: The
+ * URI in which the link to the new resource is defined and the BaseURI of the
+ * file/entity in which the URI occurs (the BaseURI is the same as the SystemId.
+ *
+ * <UL xml:lang="DE" LANG="DE">
+ * <LI> Verschiedene Implementierungen k??nnen sich als Resolver registrieren.
+ * <LI> Standardm????ig werden erste Implementierungen auf dem XML config file registrirt.
+ * <LI> Der Benutzer kann bei Bedarf Implementierungen voranstellen oder anf??gen.
+ * <LI> Implementierungen k??nnen mittels Features customized werden ??
+ *      (z.B. um Proxy-Passworter ??bergeben zu k??nnen).
+ * <LI> Jede Implementierung bekommt das URI Attribut und den Base URI
+ *      ??bergeben und muss antworten, ob sie aufl??sen kann.
+ * <LI> Die erste Implementierung, die die Aufgabe erf??llt, f??hrt die Aufl??sung durch.
+ * </UL>
+ *
+ * @author $Author$
+ */
+public class ResourceResolver {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(ResourceResolver.class.getName());
+
+   /** Field _alreadyInitialized */
+   static boolean _alreadyInitialized = false;
+
+   /** these are the system-wide resolvers */
+   static List _resolverVector = null;
+
+   /** Field _individualResolverVector */
+   List _individualResolverVector = null;
+
+   /** Field transformSpi */
+   protected ResourceResolverSpi _resolverSpi = null;
+
+   /**
+    * Constructor ResourceResolver
+    *
+    * @param className
+    * @throws ClassNotFoundException
+    * @throws IllegalAccessException
+    * @throws InstantiationException
+    */
+   private ResourceResolver(String className)
+           throws ClassNotFoundException, IllegalAccessException,
+                  InstantiationException {
+      this._resolverSpi =
+         (ResourceResolverSpi) Class.forName(className).newInstance();
+   }
+
+   /**
+    * Constructor ResourceResolver
+    *
+    * @param resourceResolver
+    */
+   public ResourceResolver(ResourceResolverSpi resourceResolver) {
+      this._resolverSpi = resourceResolver;
+   }
+
+   /**
+    * Method getInstance
+    *
+    * @param uri
+    * @param BaseURI
+    * @return the instnace
+    *
+    * @throws ResourceResolverException
+    */
+   public static final ResourceResolver getInstance(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+      int length=ResourceResolver._resolverVector.size();
+      for (int i = 0; i < length; i++) {
+		  ResourceResolver resolver =
+            (ResourceResolver) ResourceResolver._resolverVector.get(i);
+         
+
+         if (log.isDebugEnabled())
+         	log.debug("check resolvability by class " + resolver._resolverSpi.getClass().getName());
+
+         if ((resolver != null) && resolver.canResolve(uri, BaseURI)) {
+            return resolver;
+         }
+      }
+
+      Object exArgs[] = { ((uri != null)
+                           ? uri.getNodeValue()
+                           : "null"), BaseURI };
+
+      throw new ResourceResolverException("utils.resolver.noClass", exArgs,
+                                          uri, BaseURI);
+   }
+   /**
+    * Method getInstance
+    *
+    * @param uri
+    * @param BaseURI
+    * @param individualResolvers
+    * @return the instance
+    *
+    * @throws ResourceResolverException
+    */
+   public static final ResourceResolver getInstance(
+           Attr uri, String BaseURI, List individualResolvers)
+              throws ResourceResolverException {
+      if (log.isDebugEnabled()) {
+      	log.debug("I was asked to create a ResourceResolver and got " + individualResolvers.size());
+      	log.debug(" extra resolvers to my existing " + ResourceResolver._resolverVector.size() + " system-wide resolvers");
+      }
+
+      // first check the individual Resolvers
+	  int size=0;
+      if ((individualResolvers != null) && ((size=individualResolvers.size()) > 0)) {
+         for (int i = 0; i < size; i++) {
+            ResourceResolver resolver =
+               (ResourceResolver) individualResolvers.get(i);
+
+            if (resolver != null) {
+               String currentClass = resolver._resolverSpi.getClass().getName();
+               if (log.isDebugEnabled())
+               	log.debug("check resolvability by class " + currentClass);
+
+               if (resolver.canResolve(uri, BaseURI)) {
+                  return resolver;
+               }
+            }
+         }
+      }
+
+	  return getInstance(uri,BaseURI);
+   }
+
+   /**
+    * The init() function is called by org.apache.xml.security.Init.init()
+    */
+   public static void init() {
+
+      if (!ResourceResolver._alreadyInitialized) {
+         ResourceResolver._resolverVector = new ArrayList(10);
+         _alreadyInitialized = true;
+      }
+   }
+
+    /**
+     * Registers a ResourceResolverSpi class. This method logs a warning if
+     * the class cannot be registered.
+     *
+     * @param className the name of the ResourceResolverSpi class to be 
+     *    registered
+     */
+    public static void register(String className) {
+ 	register(className, false);
+    }
+
+    /**
+     * Registers a ResourceResolverSpi class at the beginning of the provider
+     * list. This method logs a warning if the class cannot be registered.
+     *
+     * @param className the name of the ResourceResolverSpi class to be 
+     *    registered
+     */
+    public static void registerAtStart(String className) {
+	register(className, true);
+    }
+
+    private static void register(String className, boolean start) {
+        try {
+            ResourceResolver resolver = new ResourceResolver(className);
+	    if (start) {
+	        ResourceResolver._resolverVector.add(0, resolver);
+	        log.debug("registered resolver");
+	    } else {
+	        ResourceResolver._resolverVector.add(resolver);
+	    }
+        } catch (Exception e) {
+	    log.warn("Error loading resolver " + className +" disabling it");
+        } catch (NoClassDefFoundError e) {
+	    log.warn("Error loading resolver " + className +" disabling it");
+        }
+    }
+
+   /**
+    * Method resolve
+    *
+    * @param uri
+    * @param BaseURI
+    * @return the resource
+    *
+    * @throws ResourceResolverException
+    */
+   public static XMLSignatureInput resolveStatic(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+      ResourceResolver myResolver = ResourceResolver.getInstance(uri, BaseURI);
+
+      return myResolver.resolve(uri, BaseURI);
+   }
+
+   /**
+    * Method resolve
+    *
+    * @param uri
+    * @param BaseURI
+    * @return the resource
+    *
+    * @throws ResourceResolverException
+    */
+   public XMLSignatureInput resolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+      return this._resolverSpi.engineResolve(uri, BaseURI);
+   }
+
+   /**
+    * Method setProperty
+    *
+    * @param key
+    * @param value
+    */
+   public void setProperty(String key, String value) {
+      this._resolverSpi.engineSetProperty(key, value);
+   }
+
+   /**
+    * Method getProperty
+    *
+    * @param key
+    * @return the value of the property
+    */
+   public String getProperty(String key) {
+      return this._resolverSpi.engineGetProperty(key);
+   }
+
+   /**
+    * Method addProperties
+    *
+    * @param properties
+    */
+   public void addProperties(Map properties) {
+      this._resolverSpi.engineAddProperies(properties);
+   }
+
+   /**
+    * Method getPropertyKeys
+    *
+    * @return all property keys.
+    */
+   public String[] getPropertyKeys() {
+      return this._resolverSpi.engineGetPropertyKeys();
+   }
+
+   /**
+    * Method understandsProperty
+    *
+    * @param propertyToTest
+    * @return true if the resolver understands the property
+    */
+   public boolean understandsProperty(String propertyToTest) {
+      return this._resolverSpi.understandsProperty(propertyToTest);
+   }
+
+   /**
+    * Method canResolve
+    *
+    * @param uri
+    * @param BaseURI
+    * @return true if it can resolve the uri
+    */
+   private boolean canResolve(Attr uri, String BaseURI) {
+      return this._resolverSpi.engineCanResolve(uri, BaseURI);
+   }
+}
diff --git a/src/org/apache/xml/security/utils/resolver/ResourceResolverException.java b/src/org/apache/xml/security/utils/resolver/ResourceResolverException.java
new file mode 100644
index 0000000..529cbd4
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/ResourceResolverException.java
@@ -0,0 +1,142 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver;
+
+
+
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.w3c.dom.Attr;
+
+
+/**
+ * This Exception is thrown if something related to the
+ * {@link org.apache.xml.security.utils.resolver.ResourceResolver} goes wrong.
+ *
+ * @author $Author$
+ */
+public class ResourceResolverException extends XMLSecurityException {
+
+   /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+   /**
+    * Constructor ResourceResolverException
+    *
+    * @param _msgID
+    * @param uri
+    * @param BaseURI
+    */
+   public ResourceResolverException(String _msgID, Attr uri, String BaseURI) {
+
+      super(_msgID);
+
+      this._uri = uri;
+      this._BaseURI = BaseURI;
+   }
+
+   /**
+    * Constructor ResourceResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param uri
+    * @param BaseURI
+    */
+   public ResourceResolverException(String _msgID, Object exArgs[], Attr uri,
+                                    String BaseURI) {
+
+      super(_msgID, exArgs);
+
+      this._uri = uri;
+      this._BaseURI = BaseURI;
+   }
+
+   /**
+    * Constructor ResourceResolverException
+    *
+    * @param _msgID
+    * @param _originalException
+    * @param uri
+    * @param BaseURI
+    */
+   public ResourceResolverException(String _msgID, Exception _originalException,
+                                    Attr uri, String BaseURI) {
+
+      super(_msgID, _originalException);
+
+      this._uri = uri;
+      this._BaseURI = BaseURI;
+   }
+
+   /**
+    * Constructor ResourceResolverException
+    *
+    * @param _msgID
+    * @param exArgs
+    * @param _originalException
+    * @param uri
+    * @param BaseURI
+    */
+   public ResourceResolverException(String _msgID, Object exArgs[],
+                                    Exception _originalException, Attr uri,
+                                    String BaseURI) {
+
+      super(_msgID, exArgs, _originalException);
+
+      this._uri = uri;
+      this._BaseURI = BaseURI;
+   }
+
+   //J-
+   Attr _uri = null;
+   /**
+    * 
+    * @param uri
+    */
+   public void setURI(Attr uri) {
+      this._uri = uri;
+   }
+   
+   /**
+    * 
+    * @return the uri
+    */
+   public Attr getURI() {
+      return this._uri;
+   }
+
+   String _BaseURI;
+   
+   /**
+    * 
+    * @param BaseURI
+    */
+   public void setBaseURI(String BaseURI) {
+      this._BaseURI = BaseURI;
+   }
+   
+   /**
+    * 
+    * @return the basUri
+    */
+   public String getBaseURI() {
+      return this._BaseURI;
+   }
+   //J+
+}
diff --git a/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java b/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java
new file mode 100644
index 0000000..7503d4c
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/ResourceResolverSpi.java
@@ -0,0 +1,194 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver;
+
+
+import java.util.Map;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.w3c.dom.Attr;
+
+
+/**
+ * During reference validation, we have to retrieve resources from somewhere.
+ *
+ * @author $Author$
+ */
+public abstract class ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    ResourceResolverSpi.class.getName());
+
+   /** Field _properties */
+   protected java.util.Map _properties = new java.util.HashMap(10);
+
+   /**
+    * This is the workhorse method used to resolve resources.
+    *
+    * @param uri
+    * @param BaseURI
+    * @return the resource wrapped arround a XMLSignatureInput
+    *
+    * @throws ResourceResolverException
+    */
+   public abstract XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+      throws ResourceResolverException;
+
+   /**
+    * Method engineSetProperty
+    *
+    * @param key
+    * @param value
+    */
+   public void engineSetProperty(String key, String value) {
+
+      java.util.Iterator i = this._properties.keySet().iterator();
+
+      while (i.hasNext()) {
+         String c = (String) i.next();
+
+         if (c.equals(key)) {
+            key = c;
+
+            break;
+         }
+      }
+
+      this._properties.put(key, value);
+   }
+
+   /**
+    * Method engineGetProperty
+    *
+    * @param key
+    * @return the value of the property
+    */
+   public String engineGetProperty(String key) {
+
+      java.util.Iterator i = this._properties.keySet().iterator();
+
+      while (i.hasNext()) {
+         String c = (String) i.next();
+
+         if (c.equals(key)) {
+            key = c;
+
+            break;
+         }
+      }
+
+      return (String) this._properties.get(key);
+   }
+
+   /**
+    * 
+    * @param properties
+    */
+   public void engineAddProperies(Map properties) {
+      this._properties.putAll(properties);
+   }
+
+   /**
+    * This method helps the {@link ResourceResolver} to decide whether a
+    * {@link ResourceResolverSpi} is able to perform the requested action.
+    *
+    * @param uri
+    * @param BaseURI
+    * @return true if the engine can resolve the uri
+    */
+   public abstract boolean engineCanResolve(Attr uri, String BaseURI);
+
+   /**
+    * Method engineGetPropertyKeys
+    *
+    * @return the property keys
+    */
+   public String[] engineGetPropertyKeys() {
+      return new String[0];
+   }
+
+   /**
+    * Method understandsProperty
+    *
+    * @param propertyToTest
+    * @return true if understands the property
+    */
+   public boolean understandsProperty(String propertyToTest) {
+
+      String[] understood = this.engineGetPropertyKeys();
+
+      if (understood != null) {
+         for (int i = 0; i < understood.length; i++) {
+            if (understood[i].equals(propertyToTest)) {
+               return true;
+            }
+         }
+      }
+
+      return false;
+   }
+
+
+   /**
+    * Fixes a platform dependent filename to standard URI form.
+    *
+    * @param str The string to fix.
+    *
+    * @return Returns the fixed URI string.
+    */
+   public static String fixURI(String str) {
+
+      // handle platform dependent strings
+      str = str.replace(java.io.File.separatorChar, '/');
+
+      if (str.length() >= 4) {
+
+         // str =~ /^\W:\/([^/])/ # to speak perl ;-))
+         char ch0 = Character.toUpperCase(str.charAt(0));
+         char ch1 = str.charAt(1);
+         char ch2 = str.charAt(2);
+         char ch3 = str.charAt(3);
+         boolean isDosFilename = ((('A' <= ch0) && (ch0 <= 'Z'))
+                                  && (ch1 == ':') && (ch2 == '/')
+                                  && (ch3 != '/'));
+
+         if (isDosFilename) {
+            if (log.isDebugEnabled())
+            	log.debug("Found DOS filename: " + str);
+         }
+      }
+
+      // Windows fix
+      if (str.length() >= 2) {
+         char ch1 = str.charAt(1);
+
+         if (ch1 == ':') {
+            char ch0 = Character.toUpperCase(str.charAt(0));
+
+            if (('A' <= ch0) && (ch0 <= 'Z')) {
+               str = "/" + str;
+            }
+         }
+      }
+
+      // done
+      return str;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java b/src/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java
new file mode 100644
index 0000000..86fa9b2
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/implementations/ResolverAnonymous.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.utils.resolver.implementations;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+
+/**
+ *
+ * @author $Author$
+ */
+
+public class ResolverAnonymous extends ResourceResolverSpi {
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                        ResolverAnonymous.class.getName());
+
+   private XMLSignatureInput _input = null;
+
+   /**
+    * @param filename
+     * @throws FileNotFoundException
+     * @throws IOException
+     */
+   public ResolverAnonymous(String filename) throws FileNotFoundException, IOException {
+      this._input = new XMLSignatureInput(new FileInputStream(filename));
+   }
+
+   /**
+    * @param is
+     */
+   public ResolverAnonymous(InputStream is) {
+      this._input = new XMLSignatureInput(is);
+   }
+
+   /** @inheritDoc */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI) {
+      return this._input;
+   }
+
+   /**    
+    * @inheritDoc
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+      if (uri == null) {
+         return true;
+      }
+      return false;
+   }
+
+   /** @inheritDoc */
+   public String[] engineGetPropertyKeys() {
+      return new String[0];
+   }
+}
\ No newline at end of file
diff --git a/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java b/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java
new file mode 100644
index 0000000..ef57e72
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/implementations/ResolverDirectHTTP.java
@@ -0,0 +1,294 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver.implementations;
+
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.xml.utils.URI;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+
+
+/**
+ * A simple ResourceResolver for HTTP requests. This class handles only 'pure'
+ * HTTP URIs which means without a fragment. The Fragment handling is done by the
+ * {@link ResolverFragment} class.
+ * <BR>
+ * If the user has a corporate HTTP proxy which is to be used, the usage can be
+ * switched on by setting properties for the resolver:
+ * <PRE>
+ * resourceResolver.setProperty("http.proxy.host", "proxy.company.com");
+ * resourceResolver.setProperty("http.proxy.port", "8080");
+ *
+ * // if we need a password for the proxy
+ * resourceResolver.setProperty("http.proxy.username", "proxyuser3");
+ * resourceResolver.setProperty("http.proxy.password", "secretca");
+ * </PRE>
+ *
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.javaworld.com/javaworld/javatips/jw-javatip42_p.html">Java Tip 42: Write Java apps that work with proxy-based firewalls</A>
+ * @see <A HREF="http://java.sun.com/j2se/1.4/docs/guide/net/properties.html">SUN J2SE docs for network properties</A>
+ * @see <A HREF="http://metalab.unc.edu/javafaq/javafaq.html#proxy">The JAVA FAQ Question 9.5: How do I make Java work with a proxy server?</A>
+ * $todo$ the proxy behaviour seems not to work; if a on-existing proxy is set, it works ?!?
+ */
+public class ResolverDirectHTTP extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                            ResolverDirectHTTP.class.getName());
+
+   /** Field properties[] */
+   static final String properties[] = { "http.proxy.host", "http.proxy.port",
+                                        "http.proxy.username",
+                                        "http.proxy.password",
+                                        "http.basic.username",
+                                        "http.basic.password" };
+
+   /** Field HttpProxyHost */
+   private static final int HttpProxyHost = 0;
+
+   /** Field HttpProxyPort */
+   private static final int HttpProxyPort = 1;
+
+   /** Field HttpProxyUser */
+   private static final int HttpProxyUser = 2;
+
+   /** Field HttpProxyPass */
+   private static final int HttpProxyPass = 3;
+
+   /** Field HttpProxyUser */
+   private static final int HttpBasicUser = 4;
+
+   /** Field HttpProxyPass */
+   private static final int HttpBasicPass = 5;
+
+   /**
+    * Method resolve
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    * @throws ResourceResolverException
+    * @return 
+    * $todo$ calculate the correct URI from the attribute and the BaseURI
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+      try {
+         boolean useProxy = false;
+         String proxyHost =
+            engineGetProperty(ResolverDirectHTTP
+               .properties[ResolverDirectHTTP.HttpProxyHost]);
+         String proxyPort =
+            engineGetProperty(ResolverDirectHTTP
+               .properties[ResolverDirectHTTP.HttpProxyPort]);
+
+         if ((proxyHost != null) && (proxyPort != null)) {
+            useProxy = true;
+         }
+
+         String oldProxySet =
+            (String) System.getProperties().get("http.proxySet");
+         String oldProxyHost =
+            (String) System.getProperties().get("http.proxyHost");
+         String oldProxyPort =
+            (String) System.getProperties().get("http.proxyPort");
+         boolean switchBackProxy = ((oldProxySet != null)
+                                    && (oldProxyHost != null)
+                                    && (oldProxyPort != null));
+
+         // switch on proxy usage
+         if (useProxy) {
+            if (log.isDebugEnabled())
+            	log.debug("Use of HTTP proxy enabled: " + proxyHost + ":"
+                      + proxyPort);
+            System.getProperties().put("http.proxySet", "true");
+            System.getProperties().put("http.proxyHost", proxyHost);
+            System.getProperties().put("http.proxyPort", proxyPort);
+         }
+
+         // calculate new URI
+         URI uriNew = getNewURI(uri.getNodeValue(), BaseURI);
+
+         // if the URI contains a fragment, ignore it
+         URI uriNewNoFrag = new URI(uriNew);
+
+         uriNewNoFrag.setFragment(null);
+
+         URL url = new URL(uriNewNoFrag.toString());
+         URLConnection urlConnection = url.openConnection();
+
+         {
+
+            // set proxy pass
+            String proxyUser =
+               engineGetProperty(ResolverDirectHTTP
+                  .properties[ResolverDirectHTTP.HttpProxyUser]);
+            String proxyPass =
+               engineGetProperty(ResolverDirectHTTP
+                  .properties[ResolverDirectHTTP.HttpProxyPass]);
+
+            if ((proxyUser != null) && (proxyPass != null)) {
+               String password = proxyUser + ":" + proxyPass;
+               String encodedPassword = Base64.encode(password.getBytes());
+
+               // or was it Proxy-Authenticate ?
+               urlConnection.setRequestProperty("Proxy-Authorization",
+                                                encodedPassword);
+            }
+         }
+
+         {
+
+            // check if Basic authentication is required
+            String auth = urlConnection.getHeaderField("WWW-Authenticate");
+
+            if (auth != null) {
+
+               // do http basic authentication
+               if (auth.startsWith("Basic")) {
+                  String user =
+                     engineGetProperty(ResolverDirectHTTP
+                        .properties[ResolverDirectHTTP.HttpBasicUser]);
+                  String pass =
+                     engineGetProperty(ResolverDirectHTTP
+                        .properties[ResolverDirectHTTP.HttpBasicPass]);
+
+                  if ((user != null) && (pass != null)) {
+                     urlConnection = url.openConnection();
+
+                     String password = user + ":" + pass;
+                     String encodedPassword =
+                        Base64.encode(password.getBytes());
+
+                     // set authentication property in the http header
+                     urlConnection.setRequestProperty("Authorization",
+                                                      "Basic "
+                                                      + encodedPassword);
+                  }
+               }
+            }
+         }
+
+         String mimeType = urlConnection.getHeaderField("Content-Type");
+         InputStream inputStream = urlConnection.getInputStream();
+         ByteArrayOutputStream baos = new ByteArrayOutputStream();
+         byte buf[] = new byte[4096];
+         int read = 0;
+         int summarized = 0;
+
+         while ((read = inputStream.read(buf)) >= 0) {
+            baos.write(buf, 0, read);
+
+            summarized += read;
+         }
+
+         log.debug("Fetched " + summarized + " bytes from URI "
+                   + uriNew.toString());
+
+         XMLSignatureInput result = new XMLSignatureInput(baos.toByteArray());
+
+         // XMLSignatureInput result = new XMLSignatureInput(inputStream);
+         result.setSourceURI(uriNew.toString());
+         result.setMIMEType(mimeType);
+
+         // switch off proxy usage
+         if (switchBackProxy) {
+            System.getProperties().put("http.proxySet", oldProxySet);
+            System.getProperties().put("http.proxyHost", oldProxyHost);
+            System.getProperties().put("http.proxyPort", oldProxyPort);
+         }
+
+         return result;
+      } catch (MalformedURLException ex) {
+         throw new ResourceResolverException("generic.EmptyMessage", ex, uri,
+                                             BaseURI);
+      } catch (IOException ex) {
+         throw new ResourceResolverException("generic.EmptyMessage", ex, uri,
+                                             BaseURI);
+      }
+   }
+
+   /**
+    * We resolve http URIs <I>without</I> fragment...
+    *
+    * @param uri
+    * @param BaseURI
+    *  @return true if can be resolved
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+      if (uri == null) {
+         log.debug("quick fail, uri == null");
+
+         return false;
+      }
+
+      String uriNodeValue = uri.getNodeValue();
+
+      if (uriNodeValue.equals("") || (uriNodeValue.charAt(0)=='#')) {
+         log.debug("quick fail for empty URIs and local ones");
+
+         return false;
+      }
+
+      if (log.isDebugEnabled())
+      	log.debug("I was asked whether I can resolve " + uriNodeValue);
+
+      if ( uriNodeValue.startsWith("http:") ||
+				 BaseURI.startsWith("http:")) {
+         if (log.isDebugEnabled())
+         	log.debug("I state that I can resolve " + uriNodeValue);
+
+         return true;
+      }
+
+      if (log.isDebugEnabled())
+      	log.debug("I state that I can't resolve " + uriNodeValue);
+
+      return false;
+   }
+
+   /**
+    * @inheritDoc 
+    */
+   public String[] engineGetPropertyKeys() {
+      return ResolverDirectHTTP.properties;
+   }
+
+   private URI getNewURI(String uri, String BaseURI)
+           throws URI.MalformedURIException {
+
+      if ((BaseURI == null) || "".equals(BaseURI)) {
+         return new URI(uri);
+      }
+      return new URI(new URI(BaseURI), uri);
+   }
+}
diff --git a/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java b/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java
new file mode 100644
index 0000000..ffa5c3d
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/implementations/ResolverFragment.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver.implementations;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+
+/**
+ * This resolver is used for resolving same-document URIs like URI="" of URI="#id".
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#sec-ReferenceProcessingModel">The Reference processing model in the XML Signature spec</A>
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#sec-Same-Document">Same-Document URI-References in the XML Signature spec</A>
+ * @see <A HREF="http://www.ietf.org/rfc/rfc2396.txt">Section 4.2 of RFC 2396</A>
+ */
+public class ResolverFragment extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                            ResolverFragment.class.getName());
+
+   /**
+    * Method engineResolve
+    *
+    * Wird das gleiche Dokument referenziert?
+    * Wird ein anderes Dokument referenziert?
+    * @inheritDoc
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI) 
+       throws ResourceResolverException
+   {
+
+      String uriNodeValue = uri.getNodeValue();
+      Document doc = uri.getOwnerElement().getOwnerDocument();
+
+
+      Node selectedElem = null;
+      if (uriNodeValue.equals("")) {
+
+         /*
+          * Identifies the node-set (minus any comment nodes) of the XML
+          * resource containing the signature
+          */
+
+         log.debug("ResolverFragment with empty URI (means complete document)");
+	 selectedElem = doc;
+      } else {
+
+         /*
+          * URI="#chapter1"
+          * Identifies a node-set containing the element with ID attribute
+          * value 'chapter1' of the XML resource containing the signature.
+          * XML Signature (and its applications) modify this node-set to
+          * include the element plus all descendents including namespaces and
+          * attributes -- but not comments.
+          */
+         String id = uriNodeValue.substring(1);
+
+         // Element selectedElem = doc.getElementById(id);
+         selectedElem = IdResolver.getElementById(doc, id);
+         if (selectedElem==null) {
+         	Object exArgs[] = { id };
+            throw new ResourceResolverException(
+               "signature.Verification.MissingID", exArgs, uri, BaseURI);
+         }
+         if (log.isDebugEnabled())
+         	log.debug("Try to catch an Element with ID " + id + " and Element was " + selectedElem);
+      }
+
+      XMLSignatureInput result = new XMLSignatureInput(selectedElem);
+      result.setExcludeComments(true);
+
+      //log.debug("We return a nodeset with " + resultSet.size() + " nodes");
+      result.setMIMEType("text/xml");	  
+	  result.setSourceURI((BaseURI != null) ? BaseURI.concat(uri.getNodeValue()) :
+		  uri.getNodeValue());      
+      return result;
+   }
+
+   /**
+    * Method engineCanResolve
+    * @inheritDoc
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+
+      if (uri == null) {
+         log.debug("Quick fail for null uri");
+         return false;
+      }
+
+      String uriNodeValue = uri.getNodeValue();
+
+      if (uriNodeValue.equals("")
+              || ((uriNodeValue.charAt(0)=='#')
+                  &&!uriNodeValue.startsWith("#xpointer("))) {
+         if (log.isDebugEnabled())
+         	log.debug("State I can resolve reference: \"" + uriNodeValue + "\"");
+         return true;
+      }
+      if (log.isDebugEnabled())
+      	log.debug("Do not seem to be able to resolve reference: \"" + uriNodeValue + "\"");
+      return false;
+   }
+
+}
diff --git a/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java b/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
new file mode 100644
index 0000000..736a79a
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/implementations/ResolverLocalFilesystem.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver.implementations;
+
+
+
+import java.io.FileInputStream;
+
+import org.apache.xml.utils.URI;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+
+
+/**
+ * A simple ResourceResolver for requests into the local filesystem.
+ *
+ * @author $Author$
+ */
+public class ResolverLocalFilesystem extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    ResolverLocalFilesystem.class.getName());
+
+   /**
+    * @inheritDoc
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+     try {
+        URI uriNew = new URI(new URI(BaseURI), uri.getNodeValue());
+
+        // if the URI contains a fragment, ignore it
+        URI uriNewNoFrag = new URI(uriNew);
+
+        uriNewNoFrag.setFragment(null);
+
+        String fileName =
+           ResolverLocalFilesystem
+              .translateUriToFilename(uriNewNoFrag.toString());
+        FileInputStream inputStream = new FileInputStream(fileName);
+        XMLSignatureInput result = new XMLSignatureInput(inputStream);
+
+        result.setSourceURI(uriNew.toString());
+
+        return result;
+     } catch (Exception e) {
+        throw new ResourceResolverException("generic.EmptyMessage", e, uri,
+                                            BaseURI);
+      }
+   }
+
+   /**
+    * Method translateUriToFilename
+    *
+    * @param uri
+    * @return the string of the filename
+    */
+   private static String translateUriToFilename(String uri) {
+
+      String subStr = uri.substring("file:/".length());
+
+      if (subStr.indexOf("%20") > -1)
+      {
+        int offset = 0;
+        int index = 0;
+        StringBuffer temp = new StringBuffer(subStr.length());
+        do
+        {
+          index = subStr.indexOf("%20",offset);
+          if (index == -1) temp.append(subStr.substring(offset));
+          else
+          {
+            temp.append(subStr.substring(offset,index));
+            temp.append(' ');
+            offset = index+3;
+          }
+        }
+        while(index != -1);
+        subStr = temp.toString();
+      }
+
+      if (subStr.charAt(1) == ':') {
+      	 // we're running M$ Windows, so this works fine
+         return subStr;
+      }
+      // we're running some UNIX, so we have to prepend a slash
+      return "/" + subStr;
+   }
+
+   /**
+    * @inheritDoc
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+
+      if (uri == null) {
+         return false;
+      }
+
+      String uriNodeValue = uri.getNodeValue();
+
+      if (uriNodeValue.equals("") || (uriNodeValue.charAt(0)=='#')) {
+         return false;
+      }
+
+      try {
+	         //URI uriNew = new URI(new URI(BaseURI), uri.getNodeValue());
+	         if (log.isDebugEnabled())
+	         	log.debug("I was asked whether I can resolve " + uriNodeValue/*uriNew.toString()*/);
+
+	         if ( uriNodeValue.startsWith("file:") ||
+					 BaseURI.startsWith("file:")/*uriNew.getScheme().equals("file")*/) {
+	            if (log.isDebugEnabled())
+	            	log.debug("I state that I can resolve " + uriNodeValue/*uriNew.toString()*/);
+
+	            return true;
+	         }
+      } catch (Exception e) {}
+
+      log.debug("But I can't");
+
+      return false;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java b/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java
new file mode 100644
index 0000000..1a31210
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/implementations/ResolverXPointer.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.utils.resolver.implementations;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+
+/**
+ * Handles barename XPointer Reference URIs.
+ * <BR />
+ * To retain comments while selecting an element by an identifier ID,
+ * use the following full XPointer: URI='#xpointer(id('ID'))'.
+ * <BR />
+ * To retain comments while selecting the entire document,
+ * use the following full XPointer: URI='#xpointer(/)'.
+ * This XPointer contains a simple XPath expression that includes
+ * the root node, which the second to last step above replaces with all
+ * nodes of the parse tree (all descendants, plus all attributes,
+ * plus all namespaces nodes).
+ *
+ * @author $Author$
+ */
+public class ResolverXPointer extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                            ResolverXPointer.class.getName());
+
+   /**
+    * @inheritDoc
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+      Node resultNode = null;
+      Document doc = uri.getOwnerElement().getOwnerDocument();
+
+      	String uriStr=uri.getNodeValue();
+         if (isXPointerSlash(uriStr)) {
+            resultNode = doc;
+               
+         } else if (isXPointerId(uriStr)) {
+            String id = getXPointerId(uriStr);
+            resultNode =IdResolver.getElementById(doc, id);
+
+            // log.debug("Use #xpointer(id('" + id + "')) on element " + selectedElem);
+
+            if (resultNode == null) {
+               Object exArgs[] = { id };
+
+               throw new ResourceResolverException(
+                  "signature.Verification.MissingID", exArgs, uri, BaseURI);
+            }
+            /*
+            resultNodes =
+               cXPathAPI
+                  .selectNodeList(selectedElem, Canonicalizer
+                     .XPATH_C14N_WITH_COMMENTS_SINGLE_NODE);*/
+         }
+      
+
+      XMLSignatureInput result = new XMLSignatureInput(resultNode);
+
+      result.setMIMEType("text/xml");
+      if (BaseURI != null && BaseURI.length() > 0) {
+	  result.setSourceURI(BaseURI.concat(uri.getNodeValue()));      
+      } else {
+	  result.setSourceURI(uri.getNodeValue());      
+      }
+
+      return result;
+   }
+
+   /**
+    * @inheritDoc
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+
+      if (uri == null) {
+         return false;
+      }
+	  String uriStr =uri.getNodeValue();
+      if (isXPointerSlash(uriStr) || isXPointerId(uriStr)) {
+         return true;
+      }
+
+      return false;
+   }
+
+   /**
+    * Method isXPointerSlash
+    *
+    * @param uri
+    * @return true if begins with xpointer
+    */
+   private static boolean isXPointerSlash(String uri) {
+
+      if (uri.equals("#xpointer(/)")) {
+         return true;
+      }
+
+      return false;
+   }
+
+   
+   private static final String XP="#xpointer(id(";
+   private static final int XP_LENGTH=XP.length();
+   /**
+    * Method isXPointerId
+    *
+    * @param uri
+    * @return it it has an xpointer id
+    *
+    */
+   private static boolean isXPointerId(String uri) {
+      
+
+      if (uri.startsWith(XP)
+              && uri.endsWith("))")) {
+         String idPlusDelim = uri.substring(XP_LENGTH,
+                                                     uri.length()
+                                                     - 2);
+
+         // log.debug("idPlusDelim=" + idPlusDelim);
+		 int idLen=idPlusDelim.length() -1;
+         if (((idPlusDelim.charAt(0) == '"') && (idPlusDelim
+                 .charAt(idLen) == '"')) || ((idPlusDelim
+                 .charAt(0) == '\'') && (idPlusDelim
+                 .charAt(idLen) == '\''))) {
+            if (log.isDebugEnabled())
+            	log.debug("Id="
+                      + idPlusDelim.substring(1, idLen));
+
+            return true;
+         }
+      }
+
+      return false;
+   }
+
+   /**
+    * Method getXPointerId
+    *
+    * @param uri
+    * @return xpointerId to search.
+    */
+   private static String getXPointerId(String uri) {
+
+
+      if (uri.startsWith(XP)
+              && uri.endsWith("))")) {
+         String idPlusDelim = uri.substring(XP_LENGTH,uri.length()
+                                                     - 2);
+		 int idLen=idPlusDelim.length() -1;
+         if (((idPlusDelim.charAt(0) == '"') && (idPlusDelim
+                 .charAt(idLen) == '"')) || ((idPlusDelim
+                 .charAt(0) == '\'') && (idPlusDelim
+                 .charAt(idLen) == '\''))) {
+            return idPlusDelim.substring(1, idLen);
+         }
+      }
+
+      return null;
+   }
+}
diff --git a/src/org/apache/xml/security/utils/resolver/implementations/package.html b/src/org/apache/xml/security/utils/resolver/implementations/package.html
new file mode 100644
index 0000000..153c91a
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/implementations/package.html
@@ -0,0 +1,8 @@
+<HTML> 
+<HEAD> </HEAD> 
+<BODY> 
+<P>
+implememtations of different ResourceResolver classes used to resolve ds:Reference URIs.
+</P>
+</BODY> 
+</HTML>
diff --git a/src/org/apache/xml/security/utils/resolver/package.html b/src/org/apache/xml/security/utils/resolver/package.html
new file mode 100644
index 0000000..4a3aafb
--- /dev/null
+++ b/src/org/apache/xml/security/utils/resolver/package.html
@@ -0,0 +1,8 @@
+<HTML> 
+<HEAD> </HEAD> 
+<BODY> 
+<P>
+the ResourceResolver classes used to resolve ds:Reference URIs.
+</P>
+</BODY> 
+</HTML>
diff --git a/src/org/jcp/xml/dsig/internal/DigesterOutputStream.java b/src/org/jcp/xml/dsig/internal/DigesterOutputStream.java
new file mode 100644
index 0000000..354798f
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/DigesterOutputStream.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id: DigesterOutputStream.java,v 1.5 2005/12/20 20:02:39 mullan Exp $
+ */
+package org.jcp.xml.dsig.internal;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.MessageDigest;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import org.apache.xml.security.utils.UnsyncByteArrayOutputStream;
+
+/**
+ * This class has been modified slightly to use java.security.MessageDigest
+ * objects as input, rather than 
+ * org.apache.xml.security.algorithms.MessageDigestAlgorithm objects.
+ * It also optionally caches the input bytes.
+ *
+ * @author raul
+ * @author Sean Mullan
+ */
+public class DigesterOutputStream extends OutputStream {
+    private boolean buffer = false;
+    private UnsyncByteArrayOutputStream bos;
+    private final MessageDigest md;
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal");
+
+    /**
+     * Creates a DigesterOutputStream.
+     *
+     * @param md the MessageDigest
+     */
+    public DigesterOutputStream(MessageDigest md) {
+	this(md, false);
+    }
+
+    /**
+     * Creates a DigesterOutputStream.
+     *
+     * @param md the MessageDigest
+     * @param buffer if true, caches the input bytes
+     */
+    public DigesterOutputStream(MessageDigest md, boolean buffer) {
+        this.md = md;
+	this.buffer = buffer;
+	if (buffer) {
+	    bos = new UnsyncByteArrayOutputStream();
+	}
+    }
+
+    /** @inheritDoc */
+    public void write(byte[] input) {
+	write(input, 0, input.length);
+    }
+    
+    /** @inheritDoc */
+    public void write(int input) {
+	if (buffer) {
+	    bos.write(input);
+	}
+	md.update((byte)input);
+    }
+    
+    /** @inheritDoc */
+    public void write(byte[] input, int offset, int len) {
+	if (buffer) {
+	    bos.write(input, offset, len);
+	}
+        if (log.isLoggable(Level.FINER)) {
+	    log.log(Level.FINER, "Pre-digested input:");
+	    StringBuffer sb = new StringBuffer(len);
+            for (int i=offset; i<(offset+len); i++) {
+		sb.append((char) input[i]);
+            }
+	    log.log(Level.FINER, sb.toString());
+	}
+	md.update(input, offset, len);
+    }
+    
+    /**
+     * @return the digest value 
+     */
+    public byte[] getDigestValue() {
+         return md.digest();   
+    }
+
+    /**
+     * @return an input stream containing the cached bytes, or
+     *    null if not cached
+     */
+    public InputStream getInputStream() {
+	if (buffer) {
+	    return new ByteArrayInputStream(bos.toByteArray());
+	} else {
+	    return null;
+	}
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/HmacSHA1.java b/src/org/jcp/xml/dsig/internal/HmacSHA1.java
new file mode 100644
index 0000000..592ef99
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/HmacSHA1.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * ===========================================================================
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal;
+
+import java.security.Key;
+import java.security.InvalidKeyException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.SignatureException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * An implementation of the HMAC-SHA1 (RFC 2104)
+ *  
+ * @author Joyce Leung
+ */
+
+public class HmacSHA1 {
+    
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal");
+    
+    private static final int SHA1_BLOCK = 64;        // 512 bit block in SHA-1
+    private byte[] key_opad;
+        
+    private boolean initialized = false;
+    private Key key;
+    private MessageDigest digest;
+    private int byte_length;
+    
+    /**
+     * Initialize with the key
+     *
+     * @param key a Hmac key
+     * @param length output length in byte. length should be > 0 for a
+     * specified length or -1 for unspecified length (length of the signed output)
+     * @exception InvalidKeyException if key is null
+     */
+    public void init(Key key, int length) throws InvalidKeyException {
+        if (key == null) {
+            throw new InvalidKeyException("The key should not be null");
+        }
+        try {
+            this.digest = MessageDigest.getInstance("SHA1");
+            initialize(key);
+        } catch (NoSuchAlgorithmException nsae) {
+            // FIXME: should throw some other exception instead of
+            //        InvalidKeyException
+            throw new InvalidKeyException("SHA1 not supported");
+        }
+        if(length > 0 ) {
+            this.byte_length = length / 8;
+        }
+        else {
+            byte_length = -1;
+        }
+	if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "byte_length: " + byte_length);
+	}
+        initialized = true;
+    }
+    
+    /**
+     * update the engine with data
+     *
+     * @param data information to be signed or verified
+     */
+    public void update(byte[] data) {
+        this.digest.update(data);
+    }
+    public void update(byte data) {
+        this.digest.update(data);
+    }
+    public void update(byte[] data, int offset, int len) {
+        this.digest.update(data, offset, len);
+    }
+
+    /**
+     * Signs the data
+     */
+    public byte[] sign() throws SignatureException {
+        
+        if (byte_length == 0) {
+            throw new SignatureException
+	      ("length should be -1 or greater than zero, but is " + byte_length);
+        }
+        
+        byte[] value = this.digest.digest();
+        
+        this.digest.reset();
+        this.digest.update(this.key_opad);
+        this.digest.update(value);
+        byte[] result = this.digest.digest();
+        
+        if (byte_length > 0 && result.length > byte_length) {
+            byte[] truncated = new byte[byte_length];
+            System.arraycopy(result, 0, truncated, 0, byte_length);
+            result = truncated;
+        }
+        return result;
+    }
+    
+    /**
+     * Verifies the signature
+     * 
+     * @param siganture the signature to be verified
+     */
+    public boolean verify(byte[] signature) throws SignatureException {
+        return MessageDigest.isEqual(signature, this.sign());
+    }
+
+    private void initialize(Key key) {
+        byte[] rawKey = key.getEncoded();
+        byte[] normalizedKey = new byte[SHA1_BLOCK];
+        if (rawKey.length > SHA1_BLOCK) {
+            this.digest.reset();
+            rawKey = this.digest.digest(rawKey);
+        }
+        System.arraycopy(rawKey, 0, normalizedKey, 0, rawKey.length);
+        for (int i = rawKey.length;  i < SHA1_BLOCK;  i ++) {
+            normalizedKey[i] = 0;
+        }
+        byte[] key_ipad = new byte[SHA1_BLOCK];
+        key_opad = new byte[SHA1_BLOCK];
+        for (int i = 0;  i < SHA1_BLOCK;  i ++) {
+            key_ipad[i] = (byte)(normalizedKey[i] ^ 0x36);
+            key_opad[i] = (byte)(normalizedKey[i] ^ 0x5c);
+        }
+
+        this.digest.reset();
+        this.digest.update(key_ipad);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/MacOutputStream.java b/src/org/jcp/xml/dsig/internal/MacOutputStream.java
new file mode 100644
index 0000000..a185360
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/MacOutputStream.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.jcp.xml.dsig.internal;
+
+import java.io.ByteArrayOutputStream;
+
+/**
+ * Derived from Apache sources and changed to use HmacSHA1 objects
+ * objects instead of org.apache.xml.security.algorithms.SignatureAlgorithm
+ * objects.
+ *
+ * @author raul
+ * @author Sean Mullan
+ *
+ */
+public class MacOutputStream extends ByteArrayOutputStream {
+    private final static byte none[]="error".getBytes();
+    private final HmacSHA1 mac;
+
+    public MacOutputStream(HmacSHA1 mac) {
+        this.mac = mac;
+    }
+
+    /** @inheritDoc */
+    public byte[] toByteArray() {
+        return none;
+    }
+    
+    /** @inheritDoc */
+    public void write(byte[] arg0)  {
+        mac.update(arg0);
+    }
+    
+    /** @inheritDoc */
+    public void write(int arg0) {
+        mac.update((byte)arg0);
+    }
+    
+    /** @inheritDoc */
+    public void write(byte[] arg0, int arg1, int arg2) {
+        mac.update(arg0,arg1,arg2);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/SignerOutputStream.java b/src/org/jcp/xml/dsig/internal/SignerOutputStream.java
new file mode 100644
index 0000000..1b57687
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/SignerOutputStream.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id: SignerOutputStream.java,v 1.2 2005/09/15 14:29:02 mullan Exp $
+ */
+package org.jcp.xml.dsig.internal;
+
+import java.io.ByteArrayOutputStream;
+import java.security.Signature;
+import java.security.SignatureException;
+
+/**
+ * Derived from Apache sources and changed to use java.security.Signature 
+ * objects as input instead of org.apache.xml.security.algorithms.SignatureAlgorithm
+ * objects.
+ *
+ * @author raul
+ * @author Sean Mullan
+ */
+public class SignerOutputStream extends ByteArrayOutputStream {
+    private final Signature sig;
+
+    public SignerOutputStream(Signature sig) {
+        this.sig=sig;       
+    }
+
+    /** @inheritDoc */
+    public void write(byte[] arg0)  {
+	super.write(arg0, 0, arg0.length);
+        try {
+	    sig.update(arg0);
+	} catch (SignatureException e) {
+            throw new RuntimeException(""+e);
+	}
+    }
+    
+    /** @inheritDoc */
+    public void write(int arg0) {
+	super.write(arg0);
+        try {
+            sig.update((byte)arg0);
+        } catch (SignatureException e) {
+            throw new RuntimeException(""+e);
+        }
+    }
+    
+    /** @inheritDoc */
+    public void write(byte[] arg0, int arg1, int arg2) {
+	super.write(arg0, arg1, arg2);
+        try {
+            sig.update(arg0,arg1,arg2);
+        } catch (SignatureException e) {
+            throw new RuntimeException(""+e);
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java b/src/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java
new file mode 100644
index 0000000..012293f
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.InvalidAlgorithmParameterException;
+import java.util.Set;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.TransformException;
+import javax.xml.crypto.dsig.TransformService;
+import javax.xml.crypto.dsig.XMLSignatureException;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transform;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+public abstract class ApacheCanonicalizer extends TransformService {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    protected Canonicalizer apacheCanonicalizer;
+    private Transform apacheTransform;
+    protected String inclusiveNamespaces;
+    protected C14NMethodParameterSpec params;
+    protected Document ownerDoc;
+    protected Element transformElem;
+    
+    public final AlgorithmParameterSpec getParameterSpec() {
+	return params;
+    }
+
+    public void init(XMLStructure parent, XMLCryptoContext context)
+	throws InvalidAlgorithmParameterException {
+	if (context != null && !(context instanceof DOMCryptoContext)) {
+	    throw new ClassCastException
+		("context must be of type DOMCryptoContext");
+	}
+        transformElem = (Element)
+            ((javax.xml.crypto.dom.DOMStructure) parent).getNode();
+        ownerDoc = DOMUtils.getOwnerDocument(transformElem);
+    }
+
+    public void marshalParams(XMLStructure parent, XMLCryptoContext context)
+	throws MarshalException {
+	if (context != null && !(context instanceof DOMCryptoContext)) {
+	    throw new ClassCastException
+		("context must be of type DOMCryptoContext");
+	}
+        transformElem = (Element)
+            ((javax.xml.crypto.dom.DOMStructure) parent).getNode();
+        ownerDoc = DOMUtils.getOwnerDocument(transformElem);
+    }
+    
+    public Data canonicalize(Data data, XMLCryptoContext xc) 
+	throws TransformException {
+	return canonicalize(data, xc, null);
+    }
+
+    public Data canonicalize(Data data, XMLCryptoContext xc, OutputStream os) 
+	throws TransformException {
+
+	if (apacheCanonicalizer == null) {
+	    try {
+                apacheCanonicalizer = Canonicalizer.getInstance(getAlgorithm());
+		if (log.isLoggable(Level.FINE)) {
+                    log.log(Level.FINE, "Created canonicalizer for algorithm: " 
+		        + getAlgorithm());
+		}
+	    } catch (InvalidCanonicalizerException ice) {
+                throw new TransformException
+		    ("Couldn't find Canonicalizer for: " + getAlgorithm() +
+			": " + ice.getMessage(), ice);
+	    }
+	}
+
+	if (os != null) {
+	    apacheCanonicalizer.setWriter(os);
+	} else {
+	    apacheCanonicalizer.setWriter(new ByteArrayOutputStream());
+	}
+
+	try {
+	    Set nodeSet = null;
+	    if (data instanceof ApacheData) {
+		XMLSignatureInput in = 
+		    ((ApacheData) data).getXMLSignatureInput();
+		if (in.isElement()) {
+		    if (inclusiveNamespaces != null) {
+                        return new OctetStreamData(new ByteArrayInputStream
+                            (apacheCanonicalizer.canonicalizeSubtree
+                                (in.getSubNode(), inclusiveNamespaces)));
+                    } else {
+                        return new OctetStreamData(new ByteArrayInputStream
+                            (apacheCanonicalizer.canonicalizeSubtree
+                                (in.getSubNode())));
+                    }
+                } else if (in.isNodeSet()) {
+                    nodeSet = in.getNodeSet();
+		} else {
+		    return new OctetStreamData(new ByteArrayInputStream(
+		        apacheCanonicalizer.canonicalize(
+        		    Utils.readBytesFromStream(in.getOctetStream()))));
+		}
+	    } else if (data instanceof DOMSubTreeData) {
+	        DOMSubTreeData subTree = (DOMSubTreeData) data;
+	        if (inclusiveNamespaces != null) {
+	            return new OctetStreamData(new ByteArrayInputStream
+		        (apacheCanonicalizer.canonicalizeSubtree
+		         (subTree.getRoot(), inclusiveNamespaces)));
+	        } else {
+	            return new OctetStreamData(new ByteArrayInputStream
+		        (apacheCanonicalizer.canonicalizeSubtree
+		         (subTree.getRoot())));
+	        }
+	    } else if (data instanceof NodeSetData) {
+	        NodeSetData nsd = (NodeSetData) data;
+	        // convert Iterator to Set
+	        nodeSet = Utils.toNodeSet(nsd.iterator());
+		if (log.isLoggable(Level.FINE)) {
+	            log.log(Level.FINE, "Canonicalizing " + nodeSet.size() 
+		        + " nodes");
+		}
+            } else {
+		return new OctetStreamData(new ByteArrayInputStream(
+		    apacheCanonicalizer.canonicalize(
+        		Utils.readBytesFromStream(
+        		((OctetStreamData)data).getOctetStream()))));
+	    }
+	    if (inclusiveNamespaces != null) {
+	        return new OctetStreamData(new ByteArrayInputStream(
+                    apacheCanonicalizer.canonicalizeXPathNodeSet
+		        (nodeSet, inclusiveNamespaces)));
+	    } else {
+	        return new OctetStreamData(new ByteArrayInputStream(
+                    apacheCanonicalizer.canonicalizeXPathNodeSet(nodeSet)));
+	    }
+	} catch (Exception e) {
+            throw new TransformException(e);
+	}
+    }
+
+    public Data transform(Data data, XMLCryptoContext xc, OutputStream os)
+        throws TransformException {
+	if (data == null) {
+	    throw new NullPointerException("data must not be null");
+	}
+	if (os == null) {
+	    throw new NullPointerException("output stream must not be null");
+	}
+
+        if (ownerDoc == null) {
+            throw new TransformException("transform must be marshalled");
+        }
+
+        if (apacheTransform == null) {
+            try {
+                apacheTransform = Transform.getInstance
+                    (ownerDoc, getAlgorithm(), transformElem.getChildNodes());
+                apacheTransform.setElement(transformElem, xc.getBaseURI());
+		if (log.isLoggable(Level.FINE)) {
+                    log.log(Level.FINE, "Created transform for algorithm: " 
+		        + getAlgorithm());            
+		}
+	    } catch (Exception ex) {
+                throw new TransformException
+                    ("Couldn't find Transform for: " + getAlgorithm(), ex);
+            }
+        }
+
+        XMLSignatureInput in;
+        if (data instanceof ApacheData) {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "ApacheData = true");
+	    }
+            in = ((ApacheData) data).getXMLSignatureInput();
+        } else if (data instanceof NodeSetData) {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "isNodeSet() = true");
+	    }
+            if (data instanceof DOMSubTreeData) {
+                DOMSubTreeData subTree = (DOMSubTreeData) data;
+                in = new XMLSignatureInput(subTree.getRoot());
+		in.setExcludeComments(subTree.excludeComments());
+            } else {
+                Set nodeSet =
+                    Utils.toNodeSet(((NodeSetData) data).iterator());
+                in = new XMLSignatureInput(nodeSet);
+            }
+        } else {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "isNodeSet() = false");
+	    }
+            try {
+                in = new XMLSignatureInput
+                    (((OctetStreamData)data).getOctetStream());
+            } catch (Exception ex) {
+                throw new TransformException(ex);
+            }
+        }
+
+        try {
+            if (os != null) {
+                in = apacheTransform.performTransform(in, os);
+		if (!in.isNodeSet() && !in.isElement()) {
+		    return null;
+		}
+            } else {
+                in = apacheTransform.performTransform(in);
+            }
+	    if (in.isOctetStream()) {
+                return new ApacheOctetStreamData(in);
+	    } else {
+                return new ApacheNodeSetData(in);
+	    }
+        } catch (Exception ex) {
+            throw new TransformException(ex);
+        }
+    }
+
+    public final boolean isFeatureSupported(String feature) {
+        if (feature == null) {
+            throw new NullPointerException();
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/ApacheData.java b/src/org/jcp/xml/dsig/internal/dom/ApacheData.java
new file mode 100644
index 0000000..64cd75d
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/ApacheData.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.Data;
+import org.apache.xml.security.signature.XMLSignatureInput;
+
+/**
+ * XMLSignatureInput Data wrapper. 
+ *
+ * @author Sean Mullan
+ */
+public interface ApacheData extends Data {
+
+    /**
+     * Returns the XMLSignatureInput.
+     */
+    public XMLSignatureInput getXMLSignatureInput();
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java b/src/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java
new file mode 100644
index 0000000..f6688b3
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/ApacheNodeSetData.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import javax.xml.crypto.NodeSetData;
+import org.w3c.dom.Node;
+import org.apache.xml.security.signature.NodeFilter;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.XMLUtils;
+
+public class ApacheNodeSetData implements ApacheData, NodeSetData {
+
+    private XMLSignatureInput xi;
+
+    public ApacheNodeSetData(XMLSignatureInput xi) {
+        this.xi = xi;
+    }
+
+    public Iterator iterator() {
+	// If nodefilters are set, must execute them first to create node-set
+        if (xi.getNodeFilters() != null) {
+            return Collections.unmodifiableSet
+                (getNodeSet(xi.getNodeFilters())).iterator();
+        }
+	try {
+	    return Collections.unmodifiableSet(xi.getNodeSet()).iterator();
+	} catch (Exception e) {
+	    // should not occur
+	    throw new RuntimeException
+		("unrecoverable error retrieving nodeset", e);
+	}
+    }
+
+    public XMLSignatureInput getXMLSignatureInput() {
+        return xi;
+    }
+
+    private Set getNodeSet(List nodeFilters) {
+        if (xi.isNeedsToBeExpanded()) {
+            XMLUtils.circumventBug2650
+                (XMLUtils.getOwnerDocument(xi.getSubNode()));
+        }
+
+        Set inputSet = new LinkedHashSet();
+        XMLUtils.getSet
+          (xi.getSubNode(), inputSet, null, !xi.isExcludeComments());
+        Set nodeSet = new LinkedHashSet();
+        Iterator i = inputSet.iterator();
+        while (i.hasNext()) {
+            Node currentNode = (Node) i.next();
+            Iterator it = nodeFilters.iterator();
+            boolean skipNode = false;
+            while (it.hasNext() && !skipNode) {
+                NodeFilter nf = (NodeFilter) it.next();
+                if (!nf.isNodeInclude(currentNode)) {
+                    skipNode = true;
+                }
+            }
+            if (!skipNode) {
+                nodeSet.add(currentNode);
+            }
+        }
+        return nodeSet;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java b/src/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java
new file mode 100644
index 0000000..a20f1ad
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/ApacheOctetStreamData.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.IOException;
+import javax.xml.crypto.OctetStreamData;
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+
+public class ApacheOctetStreamData extends OctetStreamData 
+    implements ApacheData {
+
+    private XMLSignatureInput xi;
+
+    public ApacheOctetStreamData(XMLSignatureInput xi) 
+	throws CanonicalizationException, IOException {
+	super(xi.getOctetStream(), xi.getSourceURI(), xi.getMIMEType());
+        this.xi = xi;
+    }
+
+    public XMLSignatureInput getXMLSignatureInput() {
+        return xi;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/ApacheTransform.java b/src/org/jcp/xml/dsig/internal/dom/ApacheTransform.java
new file mode 100644
index 0000000..dd0736f
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/ApacheTransform.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.OutputStream;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transform;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+/**
+ * This is a wrapper/glue class which invokes the Apache XML-Security
+ * Transform.
+ *
+ * @author Sean Mullan
+ * @author Erwin van der Koogh
+ */
+public abstract class ApacheTransform extends TransformService {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private Transform apacheTransform;
+    protected Document ownerDoc;
+    protected Element transformElem;
+    protected TransformParameterSpec params;
+    
+    public final AlgorithmParameterSpec getParameterSpec() {
+	return params;
+    }
+
+    public void init(XMLStructure parent, XMLCryptoContext context)
+	throws InvalidAlgorithmParameterException {
+        if (context != null && !(context instanceof DOMCryptoContext)) {
+            throw new ClassCastException
+                ("context must be of type DOMCryptoContext");
+        }
+	transformElem = (Element) 
+	    ((javax.xml.crypto.dom.DOMStructure) parent).getNode();
+	ownerDoc = DOMUtils.getOwnerDocument(transformElem);
+    }
+
+    public void marshalParams(XMLStructure parent, XMLCryptoContext context)
+	throws MarshalException {
+        if (context != null && !(context instanceof DOMCryptoContext)) {
+            throw new ClassCastException
+                ("context must be of type DOMCryptoContext");
+        }
+	transformElem = (Element) 
+	    ((javax.xml.crypto.dom.DOMStructure) parent).getNode();
+	ownerDoc = DOMUtils.getOwnerDocument(transformElem);
+    }
+
+    public Data transform(Data data, XMLCryptoContext xc) 
+	throws TransformException {
+	if (data == null) {
+	    throw new NullPointerException("data must not be null");
+	}
+	return transformIt(data, xc, (OutputStream) null);
+    }
+
+    public Data transform(Data data, XMLCryptoContext xc, OutputStream os) 
+	throws TransformException {
+	if (data == null) {
+	    throw new NullPointerException("data must not be null");
+	}
+	if (os == null) {
+	    throw new NullPointerException("output stream must not be null");
+	}
+	return transformIt(data, xc, os);
+    }
+
+    private Data transformIt(Data data, XMLCryptoContext xc, OutputStream os) 
+	throws TransformException {
+
+        if (ownerDoc == null) {
+            throw new TransformException("transform must be marshalled");
+        }
+
+	if (apacheTransform == null) {
+            try {
+                apacheTransform = Transform.getInstance
+		    (ownerDoc, getAlgorithm(), transformElem.getChildNodes());
+		apacheTransform.setElement(transformElem, xc.getBaseURI());
+		if (log.isLoggable(Level.FINE)) {
+                    log.log(Level.FINE, "Created transform for algorithm: " 
+		        + getAlgorithm());
+		}
+            } catch (Exception ex) {
+                throw new TransformException
+		    ("Couldn't find Transform for: " + getAlgorithm(), ex);
+            } 
+	}
+
+        XMLSignatureInput in;
+	if (data instanceof ApacheData) {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "ApacheData = true");
+	    }
+	    in = ((ApacheData) data).getXMLSignatureInput();
+	} else if (data instanceof NodeSetData) {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "isNodeSet() = true");
+	    }
+	    if (data instanceof DOMSubTreeData) {
+		if (log.isLoggable(Level.FINE)) {
+                    log.log(Level.FINE, "DOMSubTreeData = true");
+                }
+		DOMSubTreeData subTree = (DOMSubTreeData) data;
+                in = new XMLSignatureInput(subTree.getRoot());
+		in.setExcludeComments(subTree.excludeComments());
+	    } else {
+		Set nodeSet = 
+		    Utils.toNodeSet(((NodeSetData) data).iterator());
+                in = new XMLSignatureInput(nodeSet);
+	    }
+        } else {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "isNodeSet() = false");
+	    }
+            try {
+                in = new XMLSignatureInput
+		    (((OctetStreamData)data).getOctetStream());
+            } catch (Exception ex) {
+                throw new TransformException(ex);
+            }
+        }
+
+	try {
+	    if (os != null) {
+	        in = apacheTransform.performTransform(in, os);
+		if (!in.isNodeSet() && !in.isElement()) {
+		    return null;
+		}
+	    } else {
+	        in = apacheTransform.performTransform(in);
+	    }
+	    if (in.isOctetStream()) {
+	        return new ApacheOctetStreamData(in);
+	    } else {
+	        return new ApacheNodeSetData(in);
+	    }
+	} catch (Exception ex) {
+            throw new TransformException(ex);
+        }
+    }
+
+    public final boolean isFeatureSupported(String feature) {
+        if (feature == null) {
+            throw new NullPointerException();
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java b/src/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java
new file mode 100644
index 0000000..305e4d2
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMBase64Transform.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.security.InvalidAlgorithmParameterException;
+
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+/**
+ * DOM-based implementation of Base64 Encoding Transform.
+ * (Uses Apache XML-Sec Transform implementation)
+ *
+ * @author Sean Mullan
+ */
+public final class DOMBase64Transform extends ApacheTransform {
+ 
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+        if (params != null) {
+	    throw new InvalidAlgorithmParameterException("params must be null");
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java
new file mode 100644
index 0000000..eee2dd4
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalXMLC14NMethod.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+import java.security.InvalidAlgorithmParameterException;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+
+/**
+ * DOM-based implementation of CanonicalizationMethod for Canonical XML
+ * (with or without comments). Uses Apache XML-Sec Canonicalizer.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMCanonicalXMLC14NMethod extends ApacheCanonicalizer {
+
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+        if (params != null) {
+            throw new InvalidAlgorithmParameterException("no parameters " +
+                "should be specified for Canonical XML C14N algorithm");
+        }
+    }
+
+    public Data transform(Data data, XMLCryptoContext xc)
+	throws TransformException {
+
+        // ignore comments if dereferencing same-document URI that requires
+	// you to omit comments, even if the Transform says otherwise -
+        // this is to be compliant with section 4.3.3.3 of W3C Rec.
+	if (data instanceof DOMSubTreeData) {
+	    DOMSubTreeData subTree = (DOMSubTreeData) data;
+	    if (subTree.excludeComments()) {
+                try {
+                    apacheCanonicalizer = Canonicalizer.getInstance
+			(CanonicalizationMethod.INCLUSIVE);
+                } catch (InvalidCanonicalizerException ice) {
+		    throw new TransformException
+                        ("Couldn't find Canonicalizer for: " +
+		         CanonicalizationMethod.INCLUSIVE + ": " +
+		         ice.getMessage(), ice);
+                }
+	    }
+	}
+
+	return canonicalize(data, xc);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
new file mode 100644
index 0000000..e1bcdbf
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.OutputStream;
+import java.security.InvalidAlgorithmParameterException;
+
+import org.w3c.dom.Element;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+
+/**
+ * DOM-based abstract implementation of CanonicalizationMethod.
+ *
+ * @author Sean Mullan
+ */
+public class DOMCanonicalizationMethod extends DOMTransform 
+    implements CanonicalizationMethod {
+
+    /**
+     * Creates a <code>DOMCanonicalizationMethod</code>.
+     *
+     * @param spi TransformService
+     */
+    public DOMCanonicalizationMethod(TransformService spi)
+	throws InvalidAlgorithmParameterException {
+	super(spi);
+    }
+
+    /**
+     * Creates a <code>DOMCanonicalizationMethod</code> from an element. This 
+     * ctor invokes the abstract {@link #unmarshalParams unmarshalParams} 
+     * method to unmarshal any algorithm-specific input parameters.
+     *
+     * @param cmElem a CanonicalizationMethod element
+     */
+    public DOMCanonicalizationMethod(Element cmElem, XMLCryptoContext context) 
+	throws MarshalException{
+	super(cmElem, context);
+    }
+
+    /**
+     * Canonicalizes the specified data using the underlying canonicalization
+     * algorithm. This is a convenience method that is equivalent to invoking
+     * the {@link #transform transform} method.
+     *
+     * @param data the data to be canonicalized
+     * @param xc the <code>XMLCryptoContext</code> containing
+     *     additional context (may be <code>null</code> if not applicable)
+     * @return the canonicalized data
+     * @throws NullPointerException if <code>data</code> is <code>null</code>
+     * @throws XMLSignatureException if an unexpected error occurs while
+     *    canonicalizing the data
+     */
+    public Data canonicalize(Data data, XMLCryptoContext xc) 
+	throws TransformException {
+	return transform(data, xc);
+    }
+
+    public Data canonicalize(Data data, XMLCryptoContext xc, OutputStream os) 
+	throws TransformException {
+	return transform(data, xc, os);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof CanonicalizationMethod)) {
+            return false;
+	}
+        CanonicalizationMethod ocm = (CanonicalizationMethod) o;
+
+	return (getAlgorithm().equals(ocm.getAlgorithm()) && 
+	    DOMUtils.paramsEqual(getParameterSpec(), ocm.getParameterSpec()));
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java b/src/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java
new file mode 100644
index 0000000..a8c829c
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMCryptoBinary.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.math.BigInteger;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+import org.apache.xml.security.utils.Base64;
+
+/**
+ * A DOM-based representation of the XML <code>CryptoBinary</code> simple type 
+ * as defined in the W3C specification for XML-Signature Syntax and Processing.
+ * The XML Schema Definition is defined as:
+ *
+ * <xmp>
+ * <simpleType name="CryptoBinary">
+ *   <restriction base = "base64Binary">
+ *   </restriction>
+ * </simpleType>
+ * </xmp>
+ * 
+ * @author Sean Mullan
+ */
+public final class DOMCryptoBinary extends DOMStructure {
+
+    private final BigInteger bigNum;
+    private final String value;
+
+    /**
+     * Create a <code>DOMCryptoBinary</code> instance from the specified
+     * <code>BigInteger</code>
+     *
+     * @param bigNum the arbitrary-length integer
+     * @throws NullPointerException if <code>bigNum</code> is <code>null</code>
+     */
+    public DOMCryptoBinary(BigInteger bigNum) {
+        if (bigNum == null) {
+            throw new NullPointerException("bigNum is null");
+        }
+        this.bigNum = bigNum;
+        // convert to bitstring
+        value = Base64.encode(bigNum);
+    }
+
+    /**
+     * Creates a <code>DOMCryptoBinary</code> from a node.
+     *
+     * @param cbNode a CryptoBinary text node
+     * @throws MarshalException if value cannot be decoded (invalid format)
+     */
+    public DOMCryptoBinary(Node cbNode) throws MarshalException {
+        value = cbNode.getNodeValue();
+        try {
+            bigNum = Base64.decodeBigIntegerFromText((Text) cbNode);
+        } catch (Exception ex) {
+            throw new MarshalException(ex);
+        }
+    }
+
+    /**
+     * Returns the <code>BigInteger</code> that this object contains.
+     *
+     * @return the <code>BigInteger</code> that this object contains
+     */
+    public BigInteger getBigNum() {
+	return bigNum;
+    }
+
+    public void marshal(Node parent, String prefix, DOMCryptoContext context) 
+	throws MarshalException {
+        parent.appendChild
+	    (DOMUtils.getOwnerDocument(parent).createTextNode(value));
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMDSASignatureMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMDSASignatureMethod.java
new file mode 100644
index 0000000..c07a33c
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMDSASignatureMethod.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.NoSuchAlgorithmException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Element;
+
+import org.jcp.xml.dsig.internal.SignerOutputStream;
+
+/**
+ * DOM-based implementation of SignatureMethod for DSA algorithm.
+ * Use DOMHMACSignatureMethod for HMAC algorithms.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMDSASignatureMethod extends DOMSignatureMethod { 
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private Signature signature;
+
+    /**
+     * Creates a <code>DOMDSASignatureMethod</code> with the specified 
+     * input parameters.
+     *
+     * @param params algorithm-specific parameters (may be null)
+     * @throws InvalidAlgorithmParameterException if the parameters are not
+     *    appropriate for this signature method
+     */
+    public DOMDSASignatureMethod(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	super(SignatureMethod.DSA_SHA1, params);
+    }
+
+    /**
+     * Creates a <code>DOMDSASignatureMethod</code> from an element.
+     *
+     * @param smElem a SignatureMethod element
+     */
+    public DOMDSASignatureMethod(Element smElem) throws MarshalException {
+	super(smElem);
+    }
+
+    protected void checkParams(SignatureMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+        if (params != null) {
+            throw new InvalidAlgorithmParameterException("no parameters " +
+                "should be specified for DSA signature algorithm");
+        }
+    }
+
+    protected SignatureMethodParameterSpec unmarshalParams(Element paramsElem)
+        throws MarshalException {
+        throw new MarshalException("no parameters should " +
+            "be specified for DSA signature algorithm");
+    }
+
+    protected void marshalParams(Element parent, String prefix)
+        throws MarshalException {
+        // should never get invoked
+        throw new MarshalException("no parameters should " +
+            "be specified for DSA signature algorithm");
+    }
+
+    protected boolean paramsEqual(AlgorithmParameterSpec spec) {
+	// params should always be null
+	return (getParameterSpec() == spec);
+    }
+
+    public boolean verify(Key key, DOMSignedInfo si, byte[] sig,
+	XMLValidateContext context) 
+	throws InvalidKeyException, SignatureException, XMLSignatureException {
+	if (key == null) {
+	    throw new NullPointerException("key cannot be null");
+	} else if (sig == null) {
+	    throw new NullPointerException("signature cannot be null");
+	} else if (si == null) {
+	    throw new NullPointerException("signedInfo cannot be null");
+	}
+	if (signature == null) {
+	    try {
+                signature = Signature.getInstance("SHA1withDSA");
+	    } catch (NoSuchAlgorithmException nsae) {
+		throw new SignatureException("SHA1withDSA Signature not found");
+	    }
+	}
+        try {
+            if (!(key instanceof PublicKey)) {
+	        throw new InvalidKeyException("key must be PublicKey");
+            }
+            signature.initVerify((PublicKey) key);
+	    si.canonicalize(context, new SignerOutputStream(signature));
+
+	    // avoid overhead of converting key to String unless necessary
+            if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "verifying with key: " + key);
+	    }
+            return signature.verify(convertXMLDSIGtoASN1(sig));  
+        } catch (IOException ioex) {
+	    // should never occur!
+	    throw new RuntimeException(ioex.getMessage());
+	}
+    }
+
+    public byte[] sign(Key key, DOMSignedInfo si, XMLSignContext context) 
+	throws InvalidKeyException, XMLSignatureException {
+	if (key == null || si == null) {
+	    throw new NullPointerException();
+	}
+
+        if (!(key instanceof PrivateKey)) {
+	    throw new InvalidKeyException("key must be PrivateKey");
+        }
+	if (signature == null) {
+	    try {
+                signature = Signature.getInstance("SHA1withDSA");
+	    } catch (NoSuchAlgorithmException nsae) {
+		throw new InvalidKeyException("SHA1withDSA Signature not found");
+	    }
+	}
+
+        // avoid overhead of converting key to String unless necessary
+        if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "Signing with key: " + key);
+	}
+        signature.initSign((PrivateKey) key);
+	si.canonicalize(context, new SignerOutputStream(signature));
+
+        try {
+	    return convertASN1toXMLDSIG(signature.sign());
+        } catch (SignatureException se) {
+	    // should never occur!
+	    throw new RuntimeException(se.getMessage());
+	} catch (IOException ioex) {
+	    // should never occur!
+	    throw new RuntimeException(ioex.getMessage());
+	}
+    }
+    
+    /**
+     * Converts an ASN.1 DSA value to a XML Signature DSA Value.
+     *
+     * The JAVA JCE DSA Signature algorithm creates ASN.1 encoded (r,s) value
+     * pairs; the XML Signature requires the core BigInteger values.
+     *
+     * @param asn1Bytes
+     *
+     * @throws IOException
+     * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#dsa-sha1">6.4.1 DSA</A>
+     */
+    private static byte[] convertASN1toXMLDSIG(byte asn1Bytes[])
+        throws IOException {
+
+        // THIS CODE IS COPIED FROM APACHE (see copyright at top of file)
+        byte rLength = asn1Bytes[3];
+        int i;
+
+        for (i = rLength; (i > 0) && (asn1Bytes[(4 + rLength) - i] == 0); i--);
+
+        byte sLength = asn1Bytes[5 + rLength];
+        int j;
+
+        for (j = sLength;
+            (j > 0) && (asn1Bytes[(6 + rLength + sLength) - j] == 0); j--);
+
+        if ((asn1Bytes[0] != 48) || (asn1Bytes[1] != asn1Bytes.length - 2)
+            || (asn1Bytes[2] != 2) || (i > 20)
+            || (asn1Bytes[4 + rLength] != 2) || (j > 20)) {
+            throw new IOException("Invalid ASN.1 format of DSA signature");
+        } else {
+            byte xmldsigBytes[] = new byte[40];
+
+            System.arraycopy(asn1Bytes, (4+rLength)-i, xmldsigBytes, 20-i, i);
+            System.arraycopy(asn1Bytes, (6+rLength+sLength)-j, xmldsigBytes,
+                          40 - j, j);
+
+            return xmldsigBytes;
+        }
+    }
+
+    /**
+     * Converts a XML Signature DSA Value to an ASN.1 DSA value.
+     *
+     * The JAVA JCE DSA Signature algorithm creates ASN.1 encoded (r,s) value
+     * pairs; the XML Signature requires the core BigInteger values.
+     *
+     * @param xmldsigBytes
+     *
+     * @throws IOException
+     * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#dsa-sha1">6.4.1 DSA</A>
+     */
+    private static byte[] convertXMLDSIGtoASN1(byte xmldsigBytes[])
+        throws IOException {
+
+        // THIS CODE IS COPIED FROM APACHE (see copyright at top of file)
+        if (xmldsigBytes.length != 40) {
+            throw new IOException("Invalid XMLDSIG format of DSA signature");
+        }
+
+        int i;
+
+        for (i = 20; (i > 0) && (xmldsigBytes[20 - i] == 0); i--);
+
+        int j = i;
+
+        if (xmldsigBytes[20 - i] < 0) {
+            j += 1;
+        }
+
+        int k;
+
+        for (k = 20; (k > 0) && (xmldsigBytes[40 - k] == 0); k--);
+
+        int l = k;
+
+        if (xmldsigBytes[40 - k] < 0) {
+            l += 1;
+        }
+
+        byte asn1Bytes[] = new byte[6 + j + l];
+
+        asn1Bytes[0] = 48;
+        asn1Bytes[1] = (byte) (4 + j + l);
+        asn1Bytes[2] = 2;
+        asn1Bytes[3] = (byte) j;
+
+        System.arraycopy(xmldsigBytes, 20 - i, asn1Bytes, (4 + j) - i, i);
+
+        asn1Bytes[4 + j] = 2;
+        asn1Bytes[5 + j] = (byte) l;
+
+        System.arraycopy(xmldsigBytes, 40 - k, asn1Bytes, (6 + j + l) - k, k);
+
+        return asn1Bytes;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java
new file mode 100644
index 0000000..b7fa8a0
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.security.DigestException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.spec.AlgorithmParameterSpec;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based abstract implementation of DigestMethod.
+ *
+ * @author Sean Mullan
+ */
+public abstract class DOMDigestMethod extends DOMStructure 
+    implements DigestMethod {
+
+    private String algorithm;
+    private DigestMethodParameterSpec params;
+
+    /**
+     * Creates a <code>DOMDigestMethod</code>.
+     *
+     * @param algorithm the URI identifying the digest algorithm
+     * @param params the algorithm-specific params (may be <code>null</code>)
+     * @throws InvalidAlgorithmParameterException if the parameters are not
+     *    appropriate for this digest method
+     */
+    protected DOMDigestMethod(String algorithm, AlgorithmParameterSpec params)
+	throws InvalidAlgorithmParameterException {
+	if (algorithm == null) {
+	    throw new NullPointerException("algorithm cannot be null");
+	}
+	if (params != null && !(params instanceof DigestMethodParameterSpec)) {
+	    throw new InvalidAlgorithmParameterException
+		("params must be of type DigestMethodParameterSpec");
+	}
+	checkParams((DigestMethodParameterSpec) params);
+	this.algorithm = algorithm;
+	this.params = (DigestMethodParameterSpec) params;
+    }
+
+    /**
+     * Creates a <code>DOMDigestMethod</code> from an element. This constructor
+     * invokes the abstract {@link #unmarshalParams unmarshalParams} method to
+     * unmarshal any algorithm-specific input parameters.
+     *
+     * @param dmElem a DigestMethod element
+     */
+    protected DOMDigestMethod(Element dmElem) throws MarshalException {
+        algorithm = DOMUtils.getAttributeValue(dmElem, "Algorithm");
+	Element paramsElem = DOMUtils.getFirstChildElement(dmElem);
+	if (paramsElem != null) {
+	    params = unmarshalParams(paramsElem);
+	}
+	try {
+	    checkParams(params);
+	} catch (InvalidAlgorithmParameterException iape) {
+	    throw new MarshalException(iape);
+	}
+    }
+
+    static DigestMethod unmarshal(Element dmElem) throws MarshalException {
+        String alg = DOMUtils.getAttributeValue(dmElem, "Algorithm");
+        if (alg.equals(DigestMethod.SHA1)) {
+            return new DOMSHA1DigestMethod(dmElem);
+        } else {
+            throw new MarshalException("unsupported digest algorithm: " + alg);
+        }
+    }
+
+    /**
+     * Checks if the specified parameters are valid for this algorithm.
+     *
+     * @param params the algorithm-specific params (may be <code>null</code>)
+     * @throws InvalidAlgorithmParameterException if the parameters are not
+     *    appropriate for this digest method
+     */
+    protected abstract void checkParams(DigestMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException;
+
+    public final AlgorithmParameterSpec getParameterSpec() {
+	return params;
+    }
+
+    public final String getAlgorithm() {
+	return algorithm;
+    }
+
+    /**
+     * Unmarshals <code>DigestMethodParameterSpec</code> from the specified 
+     * <code>Element</code>. Subclasses should implement this to unmarshal
+     * the algorithm-specific parameters.
+     *
+     * @param paramsElem the <code>Element</code> holding the input params
+     * @return the algorithm-specific <code>DigestMethodParameterSpec</code>
+     * @throws MarshalException if the parameters cannot be unmarshalled
+     */
+    protected abstract DigestMethodParameterSpec 
+	unmarshalParams(Element paramsElem) throws MarshalException;
+
+    /**
+     * This method invokes the abstract {@link #marshalParams marshalParams} 
+     * method to marshal any algorithm-specific parameters.
+     */
+    public void marshal(Node parent, String prefix, DOMCryptoContext context) 
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element dmElem = DOMUtils.createElement
+	    (ownerDoc, "DigestMethod", XMLSignature.XMLNS, prefix);
+        DOMUtils.setAttribute(dmElem, "Algorithm", algorithm);
+
+        if (params != null) {
+	    marshalParams(dmElem, prefix);
+        }
+
+        parent.appendChild(dmElem);
+    }
+
+    /**
+     * Digests the specified data using the underlying message digest algorithm.
+     *
+     * @param is the input stream containing the data to be digested
+     * @return the resulting hash value
+     * @throws IOException if an I/O error occurs while reading from the stream
+     * @throws DigestException if an unexpected error occurs while digesting
+     * @throws NullPointerException if <code>is</code> is <code>null</code>
+     */
+    public abstract byte[] digest(InputStream is) 
+	throws IOException, DigestException;
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof DigestMethod)) {
+            return false;
+	}
+        DigestMethod odm = (DigestMethod) o;
+
+	boolean paramsEqual = (params == null ? odm.getParameterSpec() == null :
+	    params.equals(odm.getParameterSpec()));
+
+	return (algorithm.equals(odm.getAlgorithm()) && paramsEqual);
+    }
+
+    /**
+     * Marshals the algorithm-specific parameters to an Element and
+     * appends it to the specified parent element.
+     *
+     * @param parent the parent element to append the parameters to
+     * @param the namespace prefix to use
+     * @throws MarshalException if the parameters cannot be marshalled
+     */
+    protected abstract void marshalParams(Element parent, String prefix)
+	throws MarshalException;
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java b/src/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java
new file mode 100644
index 0000000..57c6bb7
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMEnvelopedTransform.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.security.InvalidAlgorithmParameterException;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+/**
+ * DOM-based implementation of Enveloped Signature Transform.
+ * (Uses Apache XML-Sec Transform implementation)
+ *
+ * @author Sean Mullan
+ */
+public final class DOMEnvelopedTransform extends ApacheTransform {
+
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+        if (params != null) {
+	    throw new InvalidAlgorithmParameterException("params must be null");
+	}
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java
new file mode 100644
index 0000000..4d286fb
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMExcC14NMethod.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.ExcC14NParameterSpec;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.*;
+import org.w3c.dom.Element;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+
+/**
+ * DOM-based implementation of CanonicalizationMethod for Exclusive
+ * Canonical XML algorithm (with or without comments).
+ * Uses Apache XML-Sec Canonicalizer.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMExcC14NMethod extends ApacheCanonicalizer {
+
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+        if (params != null) {
+            if (!(params instanceof ExcC14NParameterSpec)) {
+                throw new InvalidAlgorithmParameterException
+                    ("params must be of type ExcC14NParameterSpec");
+            }
+	    this.params = (C14NMethodParameterSpec) params;
+        }
+    }
+
+    public void init(XMLStructure parent, XMLCryptoContext context)
+        throws InvalidAlgorithmParameterException {
+	super.init(parent, context);
+	Element paramsElem = DOMUtils.getFirstChildElement(transformElem);
+	if (paramsElem == null) {
+	    this.params = null;
+	    this.inclusiveNamespaces = null;
+	    return;
+	}
+	unmarshalParams(paramsElem);
+    }
+
+    private void unmarshalParams(Element paramsElem) {
+	String prefixListAttr = paramsElem.getAttributeNS(null, "PrefixList");
+	this.inclusiveNamespaces = prefixListAttr;
+	int begin = 0;
+	int end = prefixListAttr.indexOf(' ');
+	List prefixList = new ArrayList();
+	while (end != -1) {
+	    prefixList.add(prefixListAttr.substring(begin, end));
+	    begin = end + 1;
+	    end = prefixListAttr.indexOf(' ', begin);
+	}
+	if (begin <= prefixListAttr.length()) {
+            prefixList.add(prefixListAttr.substring(begin));
+        }
+	this.params = new ExcC14NParameterSpec(prefixList);
+    }
+
+    public void marshalParams(XMLStructure parent, XMLCryptoContext context)
+        throws MarshalException {
+
+	super.marshalParams(parent, context);
+	AlgorithmParameterSpec spec = getParameterSpec();
+	if (spec == null) {
+	    return;
+	}
+
+	String prefix = 
+	    DOMUtils.getNSPrefix(context, CanonicalizationMethod.EXCLUSIVE);
+        Element excElem = DOMUtils.createElement
+	    (ownerDoc, "InclusiveNamespaces", 
+	     CanonicalizationMethod.EXCLUSIVE, prefix);
+	if (prefix == null) {
+	    excElem.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns",
+	        CanonicalizationMethod.EXCLUSIVE);
+	} else {
+	    excElem.setAttributeNS("http://www.w3.org/2000/xmlns/", 
+		"xmlns:" + prefix, CanonicalizationMethod.EXCLUSIVE);
+	}
+
+	ExcC14NParameterSpec params = (ExcC14NParameterSpec) spec;
+	StringBuffer prefixListAttr = new StringBuffer("");
+	List prefixList = params.getPrefixList();
+	for (int i = 0, size = prefixList.size(); i < size; i++) {
+	    prefixListAttr.append((String) prefixList.get(i));
+	    if (i < size - 1) {
+		prefixListAttr.append(" ");
+	    }
+	}
+	DOMUtils.setAttribute(excElem, "PrefixList", prefixListAttr.toString());
+	this.inclusiveNamespaces = prefixListAttr.toString();
+	transformElem.appendChild(excElem);
+    }
+
+    public String getParamsNSURI() {
+	return CanonicalizationMethod.EXCLUSIVE;
+    }
+
+    public Data transform(Data data, XMLCryptoContext xc)
+	throws TransformException {
+
+	// ignore comments if dereferencing same-document URI that require
+	// you to omit comments, even if the Transform says otherwise -
+	// this is to be compliant with section 4.3.3.3 of W3C Rec.
+	if (data instanceof DOMSubTreeData) {
+	    DOMSubTreeData subTree = (DOMSubTreeData) data;
+	    if (subTree.excludeComments()) {
+		try {
+                    apacheCanonicalizer = Canonicalizer.getInstance
+			(CanonicalizationMethod.EXCLUSIVE);
+		} catch (InvalidCanonicalizerException ice) {
+		    throw new TransformException
+			("Couldn't find Canonicalizer for: " +
+			 CanonicalizationMethod.EXCLUSIVE + ": " +
+			 ice.getMessage(), ice);
+		}
+            }
+	}
+
+	return canonicalize(data, xc);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java
new file mode 100644
index 0000000..c5d6deb
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.HMACParameterSpec;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+import org.jcp.xml.dsig.internal.HmacSHA1;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.SignatureException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.jcp.xml.dsig.internal.MacOutputStream;
+
+/**
+ * DOM-based implementation of HMAC SignatureMethod.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMHMACSignatureMethod extends DOMSignatureMethod {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private HmacSHA1 hmac = new HmacSHA1();
+    private int outputLength;
+
+    /**
+     * Creates a <code>DOMHMACSignatureMethod</code> with the specified params 
+     *
+     * @param params algorithm-specific parameters (may be <code>null</code>)
+     * @throws InvalidAlgorithmParameterException if params are inappropriate
+     */
+    public DOMHMACSignatureMethod(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	super(SignatureMethod.HMAC_SHA1, params);
+    }
+
+    /**
+     * Creates a <code>DOMHMACSignatureMethod</code> from an element.
+     *
+     * @param smElem a SignatureMethod element
+     */
+    public DOMHMACSignatureMethod(Element smElem) throws MarshalException {
+	super(smElem);
+    }
+
+    protected void checkParams(SignatureMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+        if (params != null) {
+            if (!(params instanceof HMACParameterSpec)) {
+	        throw new InvalidAlgorithmParameterException
+	            ("params must be of type HMACParameterSpec");
+	    }
+	    outputLength = ((HMACParameterSpec) params).getOutputLength();
+	    if (log.isLoggable(Level.FINE)) {
+	        log.log(Level.FINE, 
+		    "Setting outputLength from HMACParameterSpec to: "
+		    + outputLength);
+	    }
+        } else {
+	    outputLength = -1;
+        }
+    }
+
+    protected SignatureMethodParameterSpec unmarshalParams(Element paramsElem) 
+	throws MarshalException {
+        outputLength = new Integer
+	    (paramsElem.getFirstChild().getNodeValue()).intValue();
+        if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "unmarshalled outputLength: " + outputLength);
+	}
+	return new HMACParameterSpec(outputLength);
+    }
+
+    protected void marshalParams(Element parent, String prefix)
+	throws MarshalException {
+
+	Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+        Element hmacElem = DOMUtils.createElement(ownerDoc, "HMACOutputLength", 
+	    XMLSignature.XMLNS, prefix);
+        hmacElem.appendChild(ownerDoc.createTextNode
+	   (String.valueOf(outputLength)));
+
+        parent.appendChild(hmacElem);
+    }
+
+    public boolean verify(Key key, DOMSignedInfo si, byte[] sig,
+	XMLValidateContext context) 
+	throws InvalidKeyException, SignatureException, XMLSignatureException {
+        if (key == null || si == null || sig == null) {
+            throw new NullPointerException
+		("key, signedinfo or signature data can't be null");
+        }
+        if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "outputLength = " + outputLength);
+	}
+        hmac.init(key, outputLength);
+	si.canonicalize(context, new MacOutputStream(hmac));
+        return hmac.verify(sig);
+    }
+
+    public byte[] sign(Key key, DOMSignedInfo si, XMLSignContext context) 
+	throws InvalidKeyException, XMLSignatureException {
+        if (key == null || si == null) {
+            throw new NullPointerException();
+        }
+        hmac.init(key, outputLength);
+	si.canonicalize(context, new MacOutputStream(hmac));
+
+        try {
+            return hmac.sign();
+        } catch (SignatureException se) {
+            // should never occur!
+            throw new RuntimeException(se.getMessage());
+        }
+    }
+
+    public boolean paramsEqual(AlgorithmParameterSpec spec) {
+	if (getParameterSpec() == spec) {
+	    return true;
+	}
+        if (!(spec instanceof HMACParameterSpec)) {
+	    return false;
+	}
+	HMACParameterSpec ospec = (HMACParameterSpec) spec;
+
+	return (outputLength == ospec.getOutputLength());
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java b/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
new file mode 100644
index 0000000..579900f
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dom.*;
+
+import java.util.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * DOM-based implementation of KeyInfo.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMKeyInfo extends DOMStructure implements KeyInfo {
+
+    private final String id;
+    private final List keyInfoTypes;
+
+    /**
+     * Creates a <code>DOMKeyInfo</code>.
+     *
+     * @param content a list of one or more {@link XMLStructure}s representing
+     *    key information types. The list is defensively copied to protect
+     *    against subsequent modification.
+     * @param id an ID attribute
+     * @throws NullPointerException if <code>content</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>content</code> is empty
+     * @throws ClassCastException if <code>content</code> contains any entries
+     *    that are not of type {@link XMLStructure}
+     */
+    public DOMKeyInfo(List content, String id) {
+        if (content == null) {
+            throw new NullPointerException("content cannot be null");
+	}
+	List typesCopy = new ArrayList(content);
+	if (typesCopy.isEmpty()) {
+	    throw new IllegalArgumentException("content cannot be empty");
+	}
+	for (int i = 0; i < typesCopy.size(); i++) {
+	    if (!(typesCopy.get(i) instanceof XMLStructure)) {
+		throw new ClassCastException
+		    ("content["+i+"] is not a valid KeyInfo type");
+	    }
+	}
+	this.keyInfoTypes = Collections.unmodifiableList(typesCopy);
+        this.id = id;
+    }
+
+    /**
+     * Creates a <code>DOMKeyInfo</code> from XML.
+     *
+     * @param input XML input
+     */
+    public DOMKeyInfo(Element kiElem, XMLCryptoContext context) 
+	throws MarshalException {
+	// get Id attribute, if specified
+	id = DOMUtils.getAttributeValue(kiElem, "Id");
+
+        // get all children nodes
+        NodeList nl = kiElem.getChildNodes();
+	if (nl.getLength() < 1) {
+	    throw new MarshalException
+		("KeyInfo must contain at least one type");
+	}
+	List content = new ArrayList(nl.getLength());
+        for (int i = 0; i < nl.getLength(); i++) {
+            Node child = nl.item(i);
+            // ignore all non-Element nodes
+            if (child.getNodeType() != Node.ELEMENT_NODE) {
+                continue;
+	    }
+            Element childElem = (Element) child;
+            if (childElem.getLocalName().equals("KeyName")) {
+	        content.add(new DOMKeyName(childElem));
+            } else if (childElem.getLocalName().equals("KeyValue")) {
+	        content.add(new DOMKeyValue(childElem));
+            } else if (childElem.getLocalName().equals("RetrievalMethod")) {
+	        content.add(new DOMRetrievalMethod(childElem, context));
+            } else if (childElem.getLocalName().equals("X509Data")) {
+	        content.add(new DOMX509Data(childElem));
+	    } else { //may be MgmtData, SPKIData or element from other namespace
+	        content.add(new javax.xml.crypto.dom.DOMStructure((childElem)));
+	    }
+        }
+	keyInfoTypes = Collections.unmodifiableList(content);
+    }
+
+    public String getId() {
+	return id;
+    }
+
+    public List getContent() {
+	return keyInfoTypes;
+    }
+
+    public void marshal(XMLStructure parent, XMLCryptoContext context)
+        throws MarshalException {
+        if (parent == null) {
+            throw new NullPointerException("parent is null");
+        }
+
+        marshal(((javax.xml.crypto.dom.DOMStructure) parent).getNode(),
+            DOMUtils.getSignaturePrefix(context), (DOMCryptoContext) context);
+    }
+
+    public void marshal(Node parent, String dsPrefix, 
+	DOMCryptoContext context) throws MarshalException {
+	marshal(parent, null, dsPrefix, context);
+    }
+
+    public void marshal(Node parent, Node nextSibling, String dsPrefix,
+	DOMCryptoContext context) throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element kiElem = DOMUtils.createElement
+	    (ownerDoc, "KeyInfo", XMLSignature.XMLNS, dsPrefix);
+
+        // create and append KeyInfoType elements
+	Iterator i = this.keyInfoTypes.iterator();
+	while (i.hasNext()) {
+	    XMLStructure kiType = (XMLStructure) i.next();
+	    if (kiType instanceof DOMStructure) {
+		((DOMStructure) kiType).marshal(kiElem, dsPrefix, context);
+	    } else {
+		DOMUtils.appendChild(kiElem,
+		    ((javax.xml.crypto.dom.DOMStructure) kiType).getNode());
+	    }
+        }
+
+        // append id attribute
+        DOMUtils.setAttributeID(kiElem, "Id", id);
+
+	parent.insertBefore(kiElem, nextSibling);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof KeyInfo)) {
+            return false;
+	}
+        KeyInfo oki = (KeyInfo) o;
+
+	boolean idsEqual = (id == null ? oki.getId() == null :
+	    id.equals(oki.getId()));
+
+	return (keyInfoTypes.equals(oki.getContent()) && idsEqual);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java b/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java
new file mode 100644
index 0000000..1f1dded
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.math.BigInteger;
+import java.security.*;
+import java.util.List;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based implementation of KeyInfoFactory.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMKeyInfoFactory extends KeyInfoFactory {
+
+    static {
+        AccessController.doPrivileged(new PrivilegedAction() {
+            public Object run() {
+                Security.addProvider(new XMLDSigRI());
+                return null;
+            }
+        });
+    }
+
+    public DOMKeyInfoFactory() { }
+
+    public KeyInfo newKeyInfo(List content) {
+	return newKeyInfo(content, null);
+    }
+
+    public KeyInfo newKeyInfo(List content, String id) {
+	return new DOMKeyInfo(content, id);
+    }
+
+    public KeyName newKeyName(String name) {
+	return new DOMKeyName(name);
+    }
+
+    public KeyValue newKeyValue(PublicKey key)  throws KeyException {
+	return new DOMKeyValue(key);
+    }
+
+    public PGPData newPGPData(byte[] keyId) {
+	return newPGPData(keyId, null, null);
+    }
+
+    public PGPData newPGPData(byte[] keyId, byte[] keyPacket, List other) {
+	return new DOMPGPData(keyId, keyPacket, other);
+    }
+
+    public PGPData newPGPData(byte[] keyPacket, List other) {
+	return new DOMPGPData(keyPacket, other);
+    }
+
+    public RetrievalMethod newRetrievalMethod(String uri) {
+	return newRetrievalMethod(uri, null, null);
+    }
+
+    public RetrievalMethod newRetrievalMethod(String uri, String type,
+        List transforms) {
+	if (uri == null) {
+	    throw new NullPointerException("uri must not be null");
+	}
+	return new DOMRetrievalMethod(uri, type, transforms);
+    }
+
+    public X509Data newX509Data(List content) {
+	return new DOMX509Data(content);
+    }
+
+    public X509IssuerSerial newX509IssuerSerial(String issuerName, 
+	BigInteger serialNumber) {
+	return new DOMX509IssuerSerial(issuerName, serialNumber);
+    }
+
+    public boolean isFeatureSupported(String feature) {
+        if (feature == null) {
+            throw new NullPointerException();
+        } else {
+            return false;
+        }
+    }
+
+    public URIDereferencer getURIDereferencer() {
+	return DOMURIDereferencer.INSTANCE;
+    }
+
+    public KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure) 
+	throws MarshalException {
+        if (xmlStructure == null) {
+            throw new NullPointerException("xmlStructure cannot be null");
+        }
+        Node node = 
+	    ((javax.xml.crypto.dom.DOMStructure) xmlStructure).getNode();
+        node.normalize();
+
+        Element element = null;
+        if (node.getNodeType() == Node.DOCUMENT_NODE) {
+            element = ((Document) node).getDocumentElement();
+        } else if (node.getNodeType() == Node.ELEMENT_NODE) {
+            element = (Element) node;
+        } else {
+            throw new MarshalException
+		("xmlStructure does not contain a proper Node");
+        }
+
+        // check tag
+        String tag = element.getLocalName();
+        if (tag == null) {
+            throw new MarshalException("Document implementation must " +
+                "support DOM Level 2 and be namespace aware");
+        }
+        if (tag.equals("KeyInfo")) {
+            return new DOMKeyInfo(element, null);
+        } else {
+            throw new MarshalException("invalid KeyInfo tag: " + tag);
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java b/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java
new file mode 100644
index 0000000..9bb50a1
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.KeyName;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based implementation of KeyName.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMKeyName extends DOMStructure implements KeyName {
+
+    private final String name;
+
+    /**
+     * Creates a <code>DOMKeyName</code>. 
+     *
+     * @param name the name of the key identifier
+     * @throws NullPointerException if <code>name</code> is null
+     */
+    public DOMKeyName(String name) {
+	if (name == null) {
+	    throw new NullPointerException("name cannot be null");
+	}
+	this.name = name;
+    }
+
+    /**
+     * Creates a <code>DOMKeyName</code> from a KeyName element.
+     *
+     * @param knElem a KeyName element
+     */
+    public DOMKeyName(Element knElem) {
+	name = knElem.getFirstChild().getNodeValue();
+    }
+
+    public String getName() {
+	return name;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+	Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+	// prepend namespace prefix, if necessary
+	Element knElem = DOMUtils.createElement
+	    (ownerDoc, "KeyName", XMLSignature.XMLNS, dsPrefix);
+        knElem.appendChild(ownerDoc.createTextNode(name));
+	parent.appendChild(knElem);
+    }
+
+    public boolean equals(Object obj) {
+	if (this == obj) {
+            return true;
+	}
+        if (!(obj instanceof KeyName)) {
+            return false;
+	}
+        KeyName okn = (KeyName) obj;
+	return name.equals(okn.getName());
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java b/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java
new file mode 100644
index 0000000..2dcd375
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.KeyValue;
+
+import java.security.KeyException;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
+import java.security.interfaces.DSAParams;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.security.spec.RSAPublicKeySpec;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based implementation of KeyValue.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMKeyValue extends DOMStructure implements KeyValue {
+
+    private KeyFactory rsakf, dsakf;
+    private PublicKey publicKey;
+    private javax.xml.crypto.dom.DOMStructure externalPublicKey;
+
+    // DSAKeyValue CryptoBinaries
+    private DOMCryptoBinary p, q, g, y, j, seed, pgen;
+
+    // RSAKeyValue CryptoBinaries
+    private DOMCryptoBinary modulus, exponent;
+
+    public DOMKeyValue(PublicKey key)  throws KeyException {
+	if (key == null) {
+	    throw new NullPointerException("key cannot be null");
+	}
+	this.publicKey = key;
+	if (key instanceof DSAPublicKey) {
+	    DSAPublicKey dkey = (DSAPublicKey) key;
+	    DSAParams params = dkey.getParams();
+	    p = new DOMCryptoBinary(params.getP());
+	    q = new DOMCryptoBinary(params.getQ());
+	    g = new DOMCryptoBinary(params.getG());
+	    y = new DOMCryptoBinary(dkey.getY());
+	} else if (key instanceof RSAPublicKey) {
+	    RSAPublicKey rkey = (RSAPublicKey) key;
+	    exponent = new DOMCryptoBinary(rkey.getPublicExponent());
+	    modulus = new DOMCryptoBinary(rkey.getModulus());
+	} else {
+	    throw new KeyException("unsupported key algorithm: " +
+		key.getAlgorithm());
+	}
+    }
+
+    /**
+     * Creates a <code>DOMKeyValue</code> from an element.
+     *
+     * @param kvElem a KeyValue element
+     */
+    public DOMKeyValue(Element kvElem) throws MarshalException {
+	Element kvtElem = DOMUtils.getFirstChildElement(kvElem);
+        if (kvtElem.getLocalName().equals("DSAKeyValue")) {
+            publicKey = unmarshalDSAKeyValue(kvtElem);
+        } else if (kvtElem.getLocalName().equals("RSAKeyValue")) {
+            publicKey = unmarshalRSAKeyValue(kvtElem);
+        } else {
+	    publicKey = null;
+	    externalPublicKey = new javax.xml.crypto.dom.DOMStructure(kvtElem);
+	}
+    }
+
+    public PublicKey getPublicKey() throws KeyException {
+	if (publicKey == null) {
+	    throw new KeyException("can't convert KeyValue to PublicKey");
+	} else {
+            return publicKey;
+	}
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        // create KeyValue element
+        Element kvElem = DOMUtils.createElement
+	    (ownerDoc, "KeyValue", XMLSignature.XMLNS, dsPrefix);
+        marshalPublicKey(kvElem, ownerDoc, dsPrefix, context);
+
+        parent.appendChild(kvElem);
+    }
+
+    private void marshalPublicKey(Node parent, Document doc, String dsPrefix,
+	DOMCryptoContext context) throws MarshalException {
+        if (publicKey != null) {
+            if (publicKey instanceof DSAPublicKey) {
+                // create and append DSAKeyValue element
+                marshalDSAPublicKey(parent, doc, dsPrefix, context);
+            } else if (publicKey instanceof RSAPublicKey) {
+                // create and append RSAKeyValue element
+                marshalRSAPublicKey(parent, doc, dsPrefix, context);
+            } else {
+                throw new MarshalException(publicKey.getAlgorithm() +
+                    " public key algorithm not supported");
+            }
+        } else {
+	    parent.appendChild(externalPublicKey.getNode());
+        }
+    }
+
+    private void marshalDSAPublicKey(Node parent, Document doc, 
+	String dsPrefix, DOMCryptoContext context) throws MarshalException {
+        Element dsaElem = DOMUtils.createElement
+	    (doc, "DSAKeyValue", XMLSignature.XMLNS, dsPrefix);
+        // parameters J, Seed & PgenCounter are not included
+        Element pElem = DOMUtils.createElement
+	    (doc, "P", XMLSignature.XMLNS, dsPrefix);
+        Element qElem = DOMUtils.createElement
+	    (doc, "Q", XMLSignature.XMLNS, dsPrefix);
+        Element gElem = DOMUtils.createElement
+	    (doc, "G", XMLSignature.XMLNS, dsPrefix);
+        Element yElem = DOMUtils.createElement
+	    (doc, "Y", XMLSignature.XMLNS, dsPrefix);
+        p.marshal(pElem, dsPrefix, context);
+        q.marshal(qElem, dsPrefix, context);
+        g.marshal(gElem, dsPrefix, context);
+        y.marshal(yElem, dsPrefix, context);
+        dsaElem.appendChild(pElem);
+        dsaElem.appendChild(qElem);
+        dsaElem.appendChild(gElem);
+        dsaElem.appendChild(yElem);
+        parent.appendChild(dsaElem);
+    }
+
+    private void marshalRSAPublicKey(Node parent, Document doc, 
+	String dsPrefix, DOMCryptoContext context) throws MarshalException {
+        Element rsaElem = DOMUtils.createElement
+	    (doc, "RSAKeyValue", XMLSignature.XMLNS, dsPrefix);
+        Element modulusElem = DOMUtils.createElement
+	    (doc, "Modulus", XMLSignature.XMLNS, dsPrefix);
+        Element exponentElem = DOMUtils.createElement
+	    (doc, "Exponent", XMLSignature.XMLNS, dsPrefix);
+	modulus.marshal(modulusElem, dsPrefix, context);
+	exponent.marshal(exponentElem, dsPrefix, context);
+        rsaElem.appendChild(modulusElem);
+        rsaElem.appendChild(exponentElem);
+        parent.appendChild(rsaElem);
+    }
+
+    private DSAPublicKey unmarshalDSAKeyValue(Element kvtElem) 
+	throws MarshalException {
+	if (dsakf == null) {
+	    try {
+	        dsakf = KeyFactory.getInstance("DSA");
+	    } catch (NoSuchAlgorithmException e) {
+	        throw new RuntimeException("unable to create DSA KeyFactory: " +
+		    e.getMessage());
+	    }
+	}
+	Element curElem = DOMUtils.getFirstChildElement(kvtElem);
+	// check for P and Q
+	if (curElem.getLocalName().equals("P")) {
+	    p = new DOMCryptoBinary(curElem.getFirstChild());
+	    curElem = DOMUtils.getNextSiblingElement(curElem);
+	    q = new DOMCryptoBinary(curElem.getFirstChild());
+	    curElem = DOMUtils.getNextSiblingElement(curElem);
+	} 
+        if (curElem.getLocalName().equals("G")) {
+            g = new DOMCryptoBinary(curElem.getFirstChild());
+	    curElem = DOMUtils.getNextSiblingElement(curElem);
+	}
+        y = new DOMCryptoBinary(curElem.getFirstChild());
+        curElem = DOMUtils.getNextSiblingElement(curElem);
+        if (curElem != null && curElem.getLocalName().equals("J")) {
+	    j = new DOMCryptoBinary(curElem.getFirstChild());
+	    curElem = DOMUtils.getNextSiblingElement(curElem);
+	}
+	if (curElem != null) {
+	    seed = new DOMCryptoBinary(curElem.getFirstChild());
+	    curElem = DOMUtils.getNextSiblingElement(curElem);
+	    pgen = new DOMCryptoBinary(curElem.getFirstChild());
+	}
+	//@@@ do we care about j, pgenCounter or seed?
+	DSAPublicKeySpec spec = new DSAPublicKeySpec
+	    (y.getBigNum(), p.getBigNum(), q.getBigNum(), g.getBigNum());
+        return (DSAPublicKey) generatePublicKey(dsakf, spec);
+    }
+
+    private RSAPublicKey unmarshalRSAKeyValue(Element kvtElem) 
+	throws MarshalException {
+	if (rsakf == null) {
+	    try {
+	        rsakf = KeyFactory.getInstance("RSA");
+	    } catch (NoSuchAlgorithmException e) {
+	        throw new RuntimeException("unable to create RSA KeyFactory: " +
+		    e.getMessage());
+	    }
+	}
+	Element modulusElem = DOMUtils.getFirstChildElement(kvtElem);
+        modulus = new DOMCryptoBinary(modulusElem.getFirstChild());
+	Element exponentElem = DOMUtils.getNextSiblingElement(modulusElem);
+        exponent = new DOMCryptoBinary(exponentElem.getFirstChild());
+        RSAPublicKeySpec spec = new RSAPublicKeySpec
+	    (modulus.getBigNum(), exponent.getBigNum());
+        return (RSAPublicKey) generatePublicKey(rsakf, spec);
+    }
+
+    private PublicKey generatePublicKey(KeyFactory kf, KeySpec keyspec) {
+        try {
+            return kf.generatePublic(keyspec);
+        } catch (InvalidKeySpecException e) {
+	    //@@@ should dump exception to log
+	    return null;
+        }
+    }
+    
+    public boolean equals(Object obj) {
+	if (this == obj) {
+	    return true;
+	}
+        if (!(obj instanceof KeyValue)) {
+            return false;
+        }
+	try {
+            KeyValue kv = (KeyValue) obj;
+            if (publicKey == null ) {
+                if (kv.getPublicKey() != null) {
+                    return false;
+                }
+            } else if (!publicKey.equals(kv.getPublicKey())) {
+                return false;
+            }
+	} catch (KeyException ke) {
+	    // no practical way to determine if the keys are equal
+	    return false;
+	}
+        
+        return true;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java b/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java
new file mode 100644
index 0000000..4e3f584
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+
+import java.util.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based implementation of Manifest.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMManifest extends DOMStructure implements Manifest {
+
+    private final List references;
+    private final String id;
+
+    /**
+     * Creates a <code>DOMManifest</code> containing the specified
+     * list of {@link Reference}s and optional id.
+     *
+     * @param references a list of one or more <code>Reference</code>s. The list
+     *    is defensively copied to protect against subsequent modification.
+     * @param id the id (may be <code>null</code>
+     * @throws NullPointerException if <code>references</code> is
+     *    <code>null</code>
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws ClassCastException if <code>references</code> contains any
+     *    entries that are not of type {@link Reference}
+     */
+    public DOMManifest(List references, String id) {
+	if (references == null) {
+	    throw new NullPointerException("references cannot be null");
+	}
+	List refCopy = new ArrayList(references);
+	if (refCopy.isEmpty()) {
+	    throw new IllegalArgumentException("list of references must " +
+	        "contain at least one entry");
+	}
+        for (int i = 0, size = refCopy.size(); i < size; i++) {
+            if (!(refCopy.get(i) instanceof Reference)) {
+                throw new ClassCastException
+                    ("references["+i+"] is not a valid type");
+            }
+        }
+	this.references = Collections.unmodifiableList(refCopy);
+	this.id = id;
+    }
+
+    /**
+     * Creates a <code>DOMManifest</code> from an element.
+     *
+     * @param manElem a Manifest element
+     */
+    public DOMManifest(Element manElem, XMLCryptoContext context) 
+	throws MarshalException {
+        this.id = DOMUtils.getAttributeValue(manElem, "Id");
+        Element refElem = DOMUtils.getFirstChildElement(manElem);
+	List refs = new ArrayList();
+	while (refElem != null) {
+	    refs.add(new DOMReference(refElem, context));
+	    refElem = DOMUtils.getNextSiblingElement(refElem);
+	}
+	this.references = Collections.unmodifiableList(refs);
+    }
+
+    public String getId() {
+	return id;
+    }
+    
+    public List getReferences() {
+        return references;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element manElem = DOMUtils.createElement
+            (ownerDoc, "Manifest", XMLSignature.XMLNS, dsPrefix);
+
+        DOMUtils.setAttributeID(manElem, "Id", id);
+
+	// add references
+	for (int i = 0, size = references.size(); i < size; i++) {
+	    DOMReference ref = (DOMReference) references.get(i);
+	    ref.marshal(manElem, dsPrefix, context);
+	}
+        parent.appendChild(manElem);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+	if (!(o instanceof Manifest)) {
+            return false;
+	}
+        Manifest oman = (Manifest) o;
+
+	boolean idsEqual = (id == null ? oman.getId() == null :
+            id.equals(oman.getId()));
+
+	return (idsEqual && references.equals(oman.getReferences()));
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMPGPData.java b/src/org/jcp/xml/dsig/internal/dom/DOMPGPData.java
new file mode 100644
index 0000000..d23b11a
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMPGPData.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.PGPData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.utils.Base64;
+
+/**
+ * DOM-based implementation of PGPData.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMPGPData extends DOMStructure implements PGPData {
+
+    private final byte[] keyId;
+    private final byte[] keyPacket;
+    private final List externalElements;
+
+    /**
+     * Creates a <code>DOMPGPData</code> containing the specified key packet. 
+     * and optional list of external elements.
+     *
+     * @param keyPacket a PGP Key Material Packet as defined in section 5.5 of 
+     *    <a href="http://www.ietf.org/rfc/rfc2440.txt"/>RFC 2440</a>. The 
+     *    array is cloned to prevent subsequent modification.
+     * @param other a list of {@link XMLStructure}s representing elements from
+     *    an external namespace. The list is defensively copied to prevent
+     *    subsequent modification. May be <code>null</code> or empty.
+     * @throws NullPointerException if <code>keyPacket</code> is 
+     *    <code>null</code>
+     * @throws IllegalArgumentException if the key packet is not in the 
+     *    correct format
+     * @throws ClassCastException if <code>other</code> contains any
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public DOMPGPData(byte[] keyPacket, List other) {
+	if (keyPacket == null) {
+	    throw new NullPointerException("keyPacket cannot be null");
+	}
+	if (other == null || other.isEmpty()) {
+	    this.externalElements = Collections.EMPTY_LIST;
+	} else {
+            List otherCopy = new ArrayList(other);
+            for (int i = 0, size = otherCopy.size(); i < size; i++) {
+                if (!(otherCopy.get(i) instanceof XMLStructure)) {
+                    throw new ClassCastException
+                        ("other["+i+"] is not a valid PGPData type");
+                }
+            }
+            this.externalElements = Collections.unmodifiableList(otherCopy);
+	}
+	this.keyPacket = (byte []) keyPacket.clone();
+	checkKeyPacket(keyPacket);
+	this.keyId = null;
+    }
+
+    /**
+     * Creates a <code>DOMPGPData</code> containing the specified key id and
+     * optional key packet and list of external elements.
+     *
+     * @param keyId a PGP public key id as defined in section 11.2 of 
+     *    <a href="http://www.ietf.org/rfc/rfc2440.txt"/>RFC 2440</a>. The 
+     *    array is cloned to prevent subsequent modification.
+     * @param keyPacket a PGP Key Material Packet as defined in section 5.5 of 
+     *    <a href="http://www.ietf.org/rfc/rfc2440.txt"/>RFC 2440</a> (may
+     *    be <code>null</code>). The array is cloned to prevent subsequent 
+     *    modification.
+     * @param other a list of {@link XMLStructure}s representing elements from
+     *    an external namespace. The list is defensively copied to prevent
+     *    subsequent modification. May be <code>null</code> or empty.
+     * @throws NullPointerException if <code>keyId</code> is <code>null</code>
+     * @throws IllegalArgumentException if the key id or packet is not in the 
+     *    correct format
+     * @throws ClassCastException if <code>other</code> contains any
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public DOMPGPData(byte[] keyId, byte[] keyPacket, List other) {
+	if (keyId == null) {
+	    throw new NullPointerException("keyId cannot be null");
+	}
+	// key ids must be 8 bytes
+	if (keyId.length != 8) {
+	    throw new IllegalArgumentException("keyId must be 8 bytes long");
+	}
+	if (other == null || other.isEmpty()) {
+	    this.externalElements = Collections.EMPTY_LIST;
+	} else {
+            List otherCopy = new ArrayList(other);
+            for (int i = 0, size = otherCopy.size(); i < size; i++) {
+                if (!(otherCopy.get(i) instanceof XMLStructure)) {
+                    throw new ClassCastException
+                        ("other["+i+"] is not a valid PGPData type");
+                }
+            }
+            this.externalElements = Collections.unmodifiableList(otherCopy);
+	}
+	this.keyId = (byte []) keyId.clone();
+	this.keyPacket = keyPacket == null ? null : (byte []) keyPacket.clone();
+	if (keyPacket != null) {
+	    checkKeyPacket(keyPacket);
+	}
+    }
+
+    /**
+     * Creates a <code>DOMPGPData</code> from an element.
+     *
+     * @param pdElem a PGPData element
+     */
+    public DOMPGPData(Element pdElem) throws MarshalException {
+        // get all children nodes
+	byte[] keyId = null;
+	byte[] keyPacket = null;
+        NodeList nl = pdElem.getChildNodes();
+	int length = nl.getLength();
+	List other = new ArrayList(length);
+        for (int x = 0; x < length; x++) {
+            Node n = nl.item(x);
+            if (n.getNodeType() == Node.ELEMENT_NODE) {
+                Element childElem = (Element) n;
+		String localName = childElem.getLocalName();
+		try {
+                    if (localName.equals("PGPKeyID")) {
+                        keyId = Base64.decode(childElem);
+                    } else if (localName.equals("PGPKeyPacket")){
+                        keyPacket = Base64.decode(childElem);
+                    } else {
+		        other.add
+			    (new javax.xml.crypto.dom.DOMStructure(childElem));
+                    }
+	 	} catch (Base64DecodingException bde) {
+		    throw new MarshalException(bde);
+		}
+            }
+        }
+	this.keyId = keyId;
+	this.keyPacket = keyPacket;
+	this.externalElements = Collections.unmodifiableList(other);
+    }
+
+    public byte[] getKeyId() {
+	return (keyId == null ? null : (byte []) keyId.clone());
+    }
+
+    public byte[] getKeyPacket() {
+	return (keyPacket == null ? null : (byte []) keyPacket.clone());
+    }
+
+    public List getExternalElements() {
+        return externalElements;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element pdElem = DOMUtils.createElement
+            (ownerDoc, "PGPData", XMLSignature.XMLNS, dsPrefix);
+
+        // create and append PGPKeyID element
+        if (keyId != null) {
+            Element keyIdElem = DOMUtils.createElement
+		(ownerDoc, "PGPKeyID", XMLSignature.XMLNS, dsPrefix);
+            keyIdElem.appendChild
+		(ownerDoc.createTextNode(Base64.encode(keyId)));
+            pdElem.appendChild(keyIdElem);
+        }
+
+        // create and append PGPKeyPacket element
+        if (keyPacket != null) {
+            Element keyPktElem = DOMUtils.createElement
+		(ownerDoc, "PGPKeyPacket", XMLSignature.XMLNS, dsPrefix);
+            keyPktElem.appendChild
+		(ownerDoc.createTextNode(Base64.encode(keyPacket)));
+            pdElem.appendChild(keyPktElem);
+        }
+
+        // create and append any elements
+	for (int i = 0, size = externalElements.size(); i < size; i++) {
+	    DOMUtils.appendChild(pdElem, ((javax.xml.crypto.dom.DOMStructure) 
+		externalElements.get(i)).getNode());
+        }
+
+        parent.appendChild(pdElem);
+    }
+
+    /**
+     * We assume packets use the new format packet syntax, as specified in
+     * section 4 of RFC 2440.
+     *
+     * This method only checks if the packet contains a valid tag. The
+     * contents of the packet should be checked by the application. 
+     */
+    private void checkKeyPacket(byte[] keyPacket) {
+	// length must be at least 3 (one byte for tag, one byte for length,
+        // and minimally one byte of content
+	if (keyPacket.length < 3) {
+	    throw new IllegalArgumentException("keypacket must be at least " +
+		"3 bytes long");
+	}
+
+	int tag = keyPacket[0];
+	// first bit must be set
+	if ((tag & 128) != 128) {
+	    throw new IllegalArgumentException("keypacket tag is invalid: " +
+		"bit 7 is not set");
+	}
+	// make sure using new format
+	if ((tag & 64) != 64) {
+	    throw new IllegalArgumentException("old keypacket tag format is " +
+		"unsupported");
+	}
+
+	// tag value must be 6, 14, 5 or 7
+	if (((tag & 6) != 6) && ((tag & 14) != 14) && 
+	    ((tag & 5) != 5) && ((tag & 7) != 7)) {
+	    throw new IllegalArgumentException("keypacket tag is invalid: " +
+		"must be 6, 14, 5, or 7");
+	}
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMRSASignatureMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMRSASignatureMethod.java
new file mode 100644
index 0000000..1295ccf
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMRSASignatureMethod.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.NoSuchAlgorithmException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Element;
+
+import org.jcp.xml.dsig.internal.SignerOutputStream;
+
+/**
+ * DOM-based implementation of SignatureMethod for RSA algorithm.
+ * Use DOMHMACSignatureMethod for HMAC algorithms.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMRSASignatureMethod extends DOMSignatureMethod { 
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private Signature signature;
+
+    /**
+     * Creates a <code>DOMRSASignatureMethod</code> for the specified 
+     * input parameters.
+     *
+     * @param params algorithm-specific parameters (may be null)
+     * @throws InvalidAlgorithmParameterException if the parameters are not
+     *    appropriate for this signature method
+     */
+    public DOMRSASignatureMethod(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	super(SignatureMethod.RSA_SHA1, params);
+    }
+
+    /**
+     * Creates a <code>DOMRSASignatureMethod</code> from an element.
+     *
+     * @param smElem a SignatureMethod element
+     */
+    public DOMRSASignatureMethod(Element smElem) throws MarshalException {
+	super(smElem);
+    }
+
+    protected void checkParams(SignatureMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+        if (params != null) {
+            throw new InvalidAlgorithmParameterException("no parameters " +
+                "should be specified for RSA signature algorithm");
+        }
+    }
+
+    protected SignatureMethodParameterSpec unmarshalParams(Element paramsElem)
+        throws MarshalException {
+        throw new MarshalException("no parameters should " +
+            "be specified for RSA signature algorithm");
+    }
+
+    protected void marshalParams(Element parent, String dsPrefix)
+        throws MarshalException {
+        // should never get invoked
+        throw new MarshalException("no parameters should " +
+            "be specified for RSA signature algorithm");
+    }
+
+    protected boolean paramsEqual(AlgorithmParameterSpec spec) {
+	// params should always be null
+	return (getParameterSpec() == spec);
+    }
+
+    public boolean verify(Key key, DOMSignedInfo si, byte[] sig,
+	XMLValidateContext context) 
+	throws InvalidKeyException, SignatureException, XMLSignatureException {
+    	if (key == null || si == null || sig == null) {
+    	    throw new NullPointerException
+		("key, signed info or signature cannot be null");
+    	}
+
+        if (!(key instanceof PublicKey)) {
+	    throw new InvalidKeyException("key must be PublicKey");
+        }
+	if (signature == null) {
+	    try {
+                // FIXME: do other hashes besides sha-1
+                signature = Signature.getInstance("SHA1withRSA");
+	    } catch (NoSuchAlgorithmException nsae) {
+		throw new SignatureException("SHA1withRSA Signature not found");
+	    }
+	}
+        signature.initVerify((PublicKey) key);
+	if (log.isLoggable(Level.FINE)) {
+	    log.log(Level.FINE, "Signature provider:"+ signature.getProvider());
+            log.log(Level.FINE, "verifying with key: " + key);
+	}
+	si.canonicalize(context, new SignerOutputStream(signature));
+
+	return signature.verify(sig);
+    }
+
+    public byte[] sign(Key key, DOMSignedInfo si, XMLSignContext context) 
+	throws InvalidKeyException, XMLSignatureException {
+    	if (key == null || si == null) {
+    	    throw new NullPointerException();
+    	}
+
+        if (!(key instanceof PrivateKey)) {
+            throw new InvalidKeyException("key must be PrivateKey");
+        }
+	if (signature == null) {
+	    try {
+                // FIXME: do other hashes besides sha-1
+                signature = Signature.getInstance("SHA1withRSA");
+	    } catch (NoSuchAlgorithmException nsae) {
+		throw new InvalidKeyException("SHA1withRSA Signature not found");
+	    }
+	}
+        signature.initSign((PrivateKey) key);
+	if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "Signature provider:" +signature.getProvider());
+            log.log(Level.FINE, "Signing with key: " + key);
+        }
+
+	si.canonicalize(context, new SignerOutputStream(signature));
+
+        try {
+	    return signature.sign();
+        } catch (SignatureException se) {
+	    // should never occur!
+	    throw new RuntimeException(se.getMessage());
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMReference.java b/src/org/jcp/xml/dsig/internal/dom/DOMReference.java
new file mode 100644
index 0000000..c1a12f9
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMReference.java
@@ -0,0 +1,503 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * =========================================================================== 
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dom.DOMURIReference;
+
+import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.security.*;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.jcp.xml.dsig.internal.DigesterOutputStream;
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.UnsyncBufferedOutputStream;
+
+/**
+ * DOM-based implementation of Reference.
+ *
+ * @author Sean Mullan
+ * @author Joyce Leung
+ */
+public final class DOMReference extends DOMStructure 
+    implements Reference, DOMURIReference {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+
+    private final DigestMethod digestMethod;
+    private final String id;
+    private final List appliedTransforms;
+    private final List transforms;
+    private final List allTransforms;
+    private final Data appliedTransformData;
+    private Attr here;
+    private final String uri;
+    private final String type;
+    private byte[] digestValue;
+    private byte[] calcDigestValue;
+    private Element refElem;
+    private boolean digested = false;
+    private boolean validated = false;
+    private boolean validationStatus;
+    private Data derefData;
+    private InputStream dis;
+    private MessageDigest md;
+
+    /**
+     * Creates a <code>Reference</code> from the specified parameters.
+     *
+     * @param uri the URI (may be null)
+     * @param type the type (may be null)
+     * @param dm the digest method
+     * @param transforms a list of {@link Transform}s. The list
+     *    is defensively copied to protect against subsequent modification.
+     *    May be <code>null</code> or empty.
+     * @param id the reference ID (may be <code>null</code>)
+     * @return a <code>Reference</code>
+     * @throws NullPointerException if <code>dm</code> is <code>null</code>
+     * @throws ClassCastException if any of the <code>transforms</code> are
+     *    not of type <code>Transform</code>
+     */
+    public DOMReference(String uri, String type, DigestMethod dm, 
+	List transforms, String id) {
+	this(uri, type, dm, null, null, transforms, id, null);
+    }
+
+    public DOMReference(String uri, String type, DigestMethod dm, 
+	List appliedTransforms, Data result, List transforms, String id) {
+	this(uri, type, dm, appliedTransforms, result, transforms, id, null);
+    }
+
+    public DOMReference(String uri, String type, DigestMethod dm, 
+	List appliedTransforms, Data result, List transforms, String id, 
+	byte[] digestValue){
+	if (dm == null) {
+	    throw new NullPointerException("DigestMethod must be non-null");
+	}
+        if (appliedTransforms == null || appliedTransforms.isEmpty()) {
+            this.appliedTransforms = Collections.EMPTY_LIST;
+        } else {
+            List transformsCopy = new ArrayList(appliedTransforms);
+            for (int i = 0, size = transformsCopy.size(); i < size; i++) {
+                if (!(transformsCopy.get(i) instanceof Transform)) {
+                    throw new ClassCastException
+                        ("appliedTransforms["+i+"] is not a valid type");
+                }
+            }
+            this.appliedTransforms = 
+		Collections.unmodifiableList(transformsCopy);
+        }
+        if (transforms == null || transforms.isEmpty()) {
+            this.transforms = Collections.EMPTY_LIST;
+        } else {
+            List transformsCopy = new ArrayList(transforms);
+            for (int i = 0, size = transformsCopy.size(); i < size; i++) {
+                if (!(transformsCopy.get(i) instanceof Transform)) {
+                    throw new ClassCastException
+                        ("transforms["+i+"] is not a valid type");
+                }
+            }
+            this.transforms = Collections.unmodifiableList(transformsCopy);
+        }
+	List all = new ArrayList(this.appliedTransforms);
+	all.addAll(this.transforms);
+	this.allTransforms = Collections.unmodifiableList(all);
+	this.digestMethod = dm;
+	this.uri = uri;
+        if ((uri != null) && (!uri.equals(""))) {
+            try {
+                new URI(uri);
+            } catch (URISyntaxException e) {
+                throw new IllegalArgumentException(e.getMessage());
+            }
+        }
+	this.type = type;
+	this.id = id;
+	if (digestValue != null) {
+	    this.digestValue = (byte[]) digestValue.clone();
+	    this.digested = true;
+	}
+	this.appliedTransformData = result;
+    }
+ 
+    /**
+     * Creates a <code>DOMReference</code> from an element.
+     *
+     * @param refElem a Reference element
+     */
+    public DOMReference(Element refElem, XMLCryptoContext context) 
+	throws MarshalException {
+        // unmarshal Transforms, if specified
+        Element nextSibling = DOMUtils.getFirstChildElement(refElem);
+        List transforms = new ArrayList(5);
+        if (nextSibling.getLocalName().equals("Transforms")) {
+	    Element transformElem = DOMUtils.getFirstChildElement(nextSibling);
+	    while (transformElem != null) {
+                transforms.add(new DOMTransform(transformElem, context));
+	        transformElem = DOMUtils.getNextSiblingElement(transformElem);
+	    }
+            nextSibling = DOMUtils.getNextSiblingElement(nextSibling);
+	}
+
+        // unmarshal DigestMethod
+        Element dmElem = nextSibling;
+        this.digestMethod = DOMDigestMethod.unmarshal(dmElem);
+
+        // unmarshal DigestValue
+	try {
+	    Element dvElem = DOMUtils.getNextSiblingElement(dmElem);
+	    this.digestValue = Base64.decode(dvElem);
+	} catch (Base64DecodingException bde) {
+	    throw new MarshalException(bde);
+	}
+
+	// unmarshal attributes
+        this.uri = DOMUtils.getAttributeValue(refElem, "URI");
+        this.id = DOMUtils.getAttributeValue(refElem, "Id");
+
+        this.type = DOMUtils.getAttributeValue(refElem, "Type");
+	this.here = refElem.getAttributeNodeNS(null, "URI");
+	this.refElem = refElem;
+
+        if (transforms.isEmpty()) {
+            this.transforms = Collections.EMPTY_LIST;
+        } else {
+            this.transforms = Collections.unmodifiableList(transforms);
+        }
+	this.appliedTransforms = Collections.EMPTY_LIST;
+	this.allTransforms = transforms;
+	this.appliedTransformData = null;
+    }
+
+    public DigestMethod getDigestMethod() {
+	return digestMethod;
+    }
+
+    public String getId() {
+	return id;
+    }
+
+    public String getURI() {
+	return uri;
+    }
+
+    public String getType() {
+	return type;
+    }
+
+    public List getTransforms() {
+	return allTransforms;
+    }
+
+    public byte[] getDigestValue() {
+	return (digestValue == null ? null : (byte[]) digestValue.clone());
+    }
+
+    public byte[] getCalculatedDigestValue() {
+	return (calcDigestValue == null ? null 
+		: (byte[]) calcDigestValue.clone());
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+	if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "Marshalling Reference");
+	}
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        refElem = DOMUtils.createElement
+            (ownerDoc, "Reference", XMLSignature.XMLNS, dsPrefix);
+
+	// set attributes
+	DOMUtils.setAttributeID(refElem, "Id", id);
+        DOMUtils.setAttribute(refElem, "URI", uri);
+        DOMUtils.setAttribute(refElem, "Type", type);
+
+	// create and append Transforms element
+	if (!transforms.isEmpty() || !appliedTransforms.isEmpty()) {
+            Element transformsElem = DOMUtils.createElement
+		(ownerDoc, "Transforms", XMLSignature.XMLNS, dsPrefix);
+	    refElem.appendChild(transformsElem);
+	    for (int i = 0, size = appliedTransforms.size(); i < size; i++) {
+	        DOMStructure transform = 
+		    (DOMStructure) appliedTransforms.get(i);
+	        transform.marshal(transformsElem, dsPrefix, context);
+	    }
+	    for (int i = 0, size = transforms.size(); i < size; i++) {
+	        DOMStructure transform = (DOMStructure) transforms.get(i);
+	        transform.marshal(transformsElem, dsPrefix, context);
+	    }
+	}
+
+	// create and append DigestMethod element
+	((DOMDigestMethod) digestMethod).marshal(refElem, dsPrefix, context);
+
+	// create and append DigestValue element
+	if (log.isLoggable(Level.FINE)) {
+	    log.log(Level.FINE, "Adding digestValueElem");
+	}
+        Element digestValueElem = DOMUtils.createElement
+            (ownerDoc, "DigestValue", XMLSignature.XMLNS, dsPrefix);
+	if (digestValue != null) {
+            digestValueElem.appendChild
+	        (ownerDoc.createTextNode(Base64.encode(digestValue)));
+	}
+        refElem.appendChild(digestValueElem);
+
+	parent.appendChild(refElem);
+	here = refElem.getAttributeNodeNS(null, "URI");
+    }
+
+    public void digest(XMLSignContext signContext) 
+	throws XMLSignatureException {
+	Data data = null;
+	if (appliedTransformData == null) {
+	    data = dereference(signContext);
+	} else {
+	    data = appliedTransformData;
+	}
+	digestValue = transform(data, signContext);
+
+	// insert digestValue into DigestValue element
+	String encodedDV = Base64.encode(digestValue);
+	if (log.isLoggable(Level.FINE)) {
+	    log.log(Level.FINE, "Reference object uri = " + uri);
+	}
+        Element digestElem = DOMUtils.getLastChildElement(refElem);
+	if (digestElem == null) {
+	    throw new XMLSignatureException("DigestValue element expected");
+	}
+	DOMUtils.removeAllChildren(digestElem);
+	digestElem.appendChild
+	    (refElem.getOwnerDocument().createTextNode(encodedDV));
+
+	digested = true;
+	if (log.isLoggable(Level.FINE)) {
+	    log.log(Level.FINE, "Reference digesting completed");
+	}
+    }
+
+    public boolean validate(XMLValidateContext validateContext)
+        throws XMLSignatureException {
+	if (validateContext == null) {
+	    throw new NullPointerException("validateContext cannot be null");
+	}
+	if (validated) {
+	    return validationStatus;
+	}
+	Data data = dereference(validateContext);
+	calcDigestValue = transform(data, validateContext);
+
+	if (log.isLoggable(Level.FINE)) {
+	    log.log(Level.FINE, "Expected digest: " 
+		+ Base64.encode(digestValue));
+	    log.log(Level.FINE, "Actual digest: " 
+		+ Base64.encode(calcDigestValue));
+	}
+
+	validationStatus = Arrays.equals(digestValue, calcDigestValue);
+	validated = true;
+	return validationStatus;
+    }
+
+    public Data getDereferencedData() {
+	return derefData;
+    }
+
+    public InputStream getDigestInputStream() {
+	return dis;
+    }
+
+    private Data dereference(XMLCryptoContext context) 
+	throws XMLSignatureException {
+        Data data = null;
+
+	// use user-specified URIDereferencer if specified; otherwise use deflt
+	URIDereferencer deref = context.getURIDereferencer();
+	if (deref == null) {
+	    deref = DOMURIDereferencer.INSTANCE;
+	}
+	try {
+            data = deref.dereference(this, context);
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "URIDereferencer class name: "
+                    + deref.getClass().getName());
+                log.log(Level.FINE, "Data class name: "
+                    + data.getClass().getName());
+            }
+        } catch (URIReferenceException ure) {
+	    throw new XMLSignatureException(ure);
+        }
+
+	return data;
+    }
+
+    private byte[] transform(Data dereferencedData, 
+	XMLCryptoContext context) throws XMLSignatureException {
+
+	if (md == null) {
+	    try {
+	        md = MessageDigest.getInstance("SHA-1");
+	    } catch (NoSuchAlgorithmException nsae) {
+	        throw new XMLSignatureException(nsae);
+	    }
+	}
+	md.reset();
+	DigesterOutputStream dos;
+	Boolean cache = (Boolean)
+            context.getProperty("javax.xml.crypto.dsig.cacheReference");
+        if (cache != null && cache.booleanValue() == true) {
+            this.derefData = copyDerefData(dereferencedData);
+            dos = new DigesterOutputStream(md, true);
+        } else {
+            dos = new DigesterOutputStream(md);
+        }
+	OutputStream os = new UnsyncBufferedOutputStream(dos);
+        Data data = dereferencedData;
+        for (int i = 0, size = transforms.size(); i < size; i++) {
+	    DOMTransform transform = (DOMTransform) transforms.get(i);
+	    try {
+                if (i < size - 1) {
+                    data = transform.transform(data, context);
+                } else {
+                    data = transform.transform(data, context, os);
+                }
+	    } catch (TransformException te) {
+		throw new XMLSignatureException(te);
+	    }
+        }
+	
+	try {
+	    if (data != null) {
+	        XMLSignatureInput xi;
+	        if (data instanceof ApacheData) {
+	            xi = ((ApacheData) data).getXMLSignatureInput();
+	        } else if (data instanceof OctetStreamData) {
+	            xi = new XMLSignatureInput
+			(((OctetStreamData)data).getOctetStream());
+	        } else if (data instanceof NodeSetData) {
+		    TransformService spi = TransformService.getInstance
+		        (CanonicalizationMethod.INCLUSIVE, "DOM");
+                    data = spi.transform(data, context);
+	            xi = new XMLSignatureInput
+		        (((OctetStreamData)data).getOctetStream());
+	        } else {
+	            throw new XMLSignatureException("unrecognized Data type");
+	        }
+	        xi.updateOutputStream(os);
+	    }
+	    os.flush();
+	    if (cache != null && cache.booleanValue() == true) {
+                this.dis = dos.getInputStream();
+            }
+            return dos.getDigestValue();
+	} catch (Exception e) {
+	    throw new XMLSignatureException(e);
+	}
+    }
+
+    public Node getHere() {
+	return here;
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof Reference)) {
+            return false;
+	}
+        Reference oref = (Reference) o;
+
+	boolean idsEqual = (id == null ? oref.getId() == null :
+	    id.equals(oref.getId()));
+	boolean urisEqual = (uri == null ? oref.getURI() == null :
+	    uri.equals(oref.getURI()));
+	boolean typesEqual = (type == null ? oref.getType() == null :
+	    type.equals(oref.getType()));
+	boolean digestValuesEqual = 
+	    Arrays.equals(digestValue, oref.getDigestValue());
+
+	return (digestMethod.equals(oref.getDigestMethod()) && idsEqual &&
+	    urisEqual && typesEqual && transforms.equals(oref.getTransforms()));
+    }
+
+    boolean isDigested() {
+	return digested;
+    }
+
+    private static Data copyDerefData(Data dereferencedData) {
+        if (dereferencedData instanceof ApacheData) {
+            // need to make a copy of the Data
+            ApacheData ad = (ApacheData) dereferencedData;
+            XMLSignatureInput xsi = ad.getXMLSignatureInput();
+            if (xsi.isNodeSet()) {
+                try {
+                    final Set s = xsi.getNodeSet();
+                    return new NodeSetData() {
+                        public Iterator iterator() { return s.iterator(); }
+                    };
+                } catch (Exception e) {
+                    // log a warning
+                            log.log(Level.WARNING,
+                        "cannot cache dereferenced data: " + e);
+                    return null;
+                }
+            } else if (xsi.isElement()) {
+                return new DOMSubTreeData
+                    (xsi.getSubNode(), xsi.isExcludeComments());
+            } else if (xsi.isOctetStream() || xsi.isByteArray()) {
+                try {
+                return new OctetStreamData
+                  (xsi.getOctetStream(), xsi.getSourceURI(), xsi.getMIMEType());
+                } catch (IOException ioe) {
+                    // log a warning
+                            log.log(Level.WARNING,
+                        "cannot cache dereferenced data: " + ioe);
+                    return null;
+                }
+            }
+        }
+        return dereferencedData;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java
new file mode 100644
index 0000000..47c35b3
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * =========================================================================== 
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.ByteArrayInputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dom.DOMURIReference;
+import javax.xml.crypto.dsig.keyinfo.RetrievalMethod;
+import javax.xml.parsers.*;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+
+/**
+ * DOM-based implementation of RetrievalMethod.
+ *
+ * @author Sean Mullan
+ * @author Joyce Leung
+ */
+public final class DOMRetrievalMethod extends DOMStructure
+    implements RetrievalMethod, DOMURIReference {
+
+    private final List transforms;
+    private String uri;
+    private String type;
+    private Attr here;
+
+    /**
+     * Creates a <code>DOMRetrievalMethod</code> containing the specified 
+     * URIReference and List of Transforms.
+     *
+     * @param uri the URI
+     * @param type the type
+     * @param transforms a list of {@link Transform}s. The list is defensively
+     *    copied to prevent subsequent modification. May be <code>null</code>
+     *    or empty.
+     * @throws IllegalArgumentException if the format of <code>uri</code> is 
+     *    invalid, as specified by Reference's URI attribute in the W3C
+     *    specification for XML-Signature Syntax and Processing
+     * @throws NullPointerException if <code>uriReference</code>
+     *    is <code>null</code> 
+     * @throws ClassCastException if <code>transforms</code> contains any
+     *    entries that are not of type {@link Transform}
+     */
+    public DOMRetrievalMethod(String uri, String type, List transforms) {
+	if (uri == null) {
+	    throw new NullPointerException("uri cannot be null");
+	}
+        if (transforms == null || transforms.isEmpty()) {
+            this.transforms = Collections.EMPTY_LIST;
+        } else {
+            List transformsCopy = new ArrayList(transforms);
+            for (int i = 0, size = transformsCopy.size(); i < size; i++) {
+                if (!(transformsCopy.get(i) instanceof Transform)) {
+                    throw new ClassCastException
+                        ("transforms["+i+"] is not a valid type");
+                }
+            }
+            this.transforms = Collections.unmodifiableList(transformsCopy);
+        }
+	this.uri = uri;
+        if ((uri != null) && (!uri.equals(""))) {
+            try {
+                new URI(uri);
+            } catch (URISyntaxException e) {
+                throw new IllegalArgumentException(e.getMessage());
+            }
+        }
+
+	this.type = type;
+    }
+	
+    /**
+     * Creates a <code>DOMRetrievalMethod</code> from an element.
+     *
+     * @param rmElem a RetrievalMethod element
+     */
+    public DOMRetrievalMethod(Element rmElem, XMLCryptoContext context) 
+	throws MarshalException {
+        // get URI and Type attributes
+        uri = DOMUtils.getAttributeValue(rmElem, "URI");
+        type = DOMUtils.getAttributeValue(rmElem, "Type");
+
+	// get here node
+	here = rmElem.getAttributeNodeNS(null, "URI");
+
+        // get Transforms, if specified
+        List transforms = new ArrayList();
+        Element transformsElem = DOMUtils.getFirstChildElement(rmElem);
+        if (transformsElem != null) {
+            Element transformElem = 
+		DOMUtils.getFirstChildElement(transformsElem);
+            while (transformElem != null) {
+                transforms.add(new DOMTransform(transformElem, context));
+                transformElem = DOMUtils.getNextSiblingElement(transformElem);
+	    }
+        }
+	if (transforms.isEmpty()) {
+            this.transforms = Collections.EMPTY_LIST;
+	} else {
+            this.transforms = Collections.unmodifiableList(transforms);
+	}
+    }
+
+    public String getURI() {
+	return uri;
+    }
+
+    public String getType() {
+	return type;
+    }
+
+    public List getTransforms() {
+	return transforms;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element rmElem = DOMUtils.createElement
+            (ownerDoc, "RetrievalMethod", XMLSignature.XMLNS, dsPrefix);
+
+        // add URI and Type attributes
+        DOMUtils.setAttribute(rmElem, "URI", uri);
+        DOMUtils.setAttribute(rmElem, "Type", type);
+
+        // add Transforms elements
+	if (!transforms.isEmpty()) {
+	    Element transformsElem = DOMUtils.createElement
+                (ownerDoc, "Transforms", XMLSignature.XMLNS, dsPrefix);
+	    rmElem.appendChild(transformsElem);
+	    for (int i = 0, size = transforms.size(); i < size; i++) {
+	        ((DOMTransform) transforms.get(i)).marshal
+		    (transformsElem, dsPrefix, context);
+            }
+	}
+
+        parent.appendChild(rmElem);
+
+	// save here node
+	here = rmElem.getAttributeNodeNS(null, "URI");
+    }
+
+    public Node getHere() {
+	return here;
+    }
+
+    public Data dereference(XMLCryptoContext context)
+        throws URIReferenceException {
+
+	if (context == null) {
+	    throw new NullPointerException("context cannot be null");
+	}
+
+	/*
+         * If URIDereferencer is specified in context; use it, otherwise use 
+	 * built-in.
+	 */
+        URIDereferencer deref = context.getURIDereferencer();
+        if (deref == null) {
+	    deref = DOMURIDereferencer.INSTANCE;
+	}
+
+	Data data = deref.dereference(this, context);
+
+        // pass dereferenced data through Transforms
+	try {
+	    for (int i = 0, size = transforms.size(); i < size; i++) {
+                Transform transform = (Transform) transforms.get(i);
+                data = ((DOMTransform) transform).transform(data, context);
+            }
+	} catch (Exception e) {
+	    throw new URIReferenceException(e);
+	}
+	return data;
+    }
+
+    public XMLStructure dereferenceAsXMLStructure(XMLCryptoContext context)
+	throws URIReferenceException {
+
+	try {
+	    ApacheData data = (ApacheData) dereference(context);
+	    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	    dbf.setNamespaceAware(true);
+	    DocumentBuilder db = dbf.newDocumentBuilder();
+	    Document doc = db.parse(new ByteArrayInputStream
+		(data.getXMLSignatureInput().getBytes()));
+	    Element kiElem = doc.getDocumentElement();
+            if (kiElem.getLocalName().equals("X509Data")) {
+		return new DOMX509Data(kiElem);
+	    } else {
+		return null; // unsupported
+	    }
+	} catch (Exception e) {
+	    throw new URIReferenceException(e);
+	}
+    }
+
+    public boolean equals(Object obj) {
+	if (this == obj) {
+            return true;
+	}
+        if (!(obj instanceof RetrievalMethod)) {
+            return false;
+	}
+        RetrievalMethod orm = (RetrievalMethod) obj;
+
+	boolean typesEqual = (type == null ? orm.getType() == null :
+            type.equals(orm.getType()));
+
+	return (uri.equals(orm.getURI()) && 
+	    transforms.equals(orm.getTransforms()) && typesEqual);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMSHA1DigestMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMSHA1DigestMethod.java
new file mode 100644
index 0000000..d7c1f11
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMSHA1DigestMethod.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.security.DigestException;
+import java.security.DigestInputStream;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Element;
+
+/**
+ * DOM-based implementation of DigestMethod for the SHA1 algorithm.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMSHA1DigestMethod extends DOMDigestMethod {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private MessageDigest md;
+
+    /**
+     * Creates a <code>DOMSHA1DigestMethod</code>.
+     */
+    public DOMSHA1DigestMethod(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	super(DigestMethod.SHA1, params);
+    }
+
+    /**
+     * Creates a <code>DOMSHA1DigestMethod</code> from an element.
+     *
+     * @param dmElem a DigestMethod element
+     */
+    public DOMSHA1DigestMethod(Element dmElem) throws MarshalException {
+	super(dmElem);
+    }
+
+    protected void checkParams(DigestMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	if (params != null) {
+	    throw new InvalidAlgorithmParameterException("no parameters " +
+		"should be specified for SHA1 message digest algorithm");
+	}
+    }
+
+    protected DigestMethodParameterSpec unmarshalParams(Element paramsElem)
+	throws MarshalException {
+	throw new MarshalException("no parameters should " +
+	    "be specified for SHA1 message digest algorithm");
+    }
+
+    protected void marshalParams(Element parent, String dsPrefix)
+	throws MarshalException {
+	// should never get invoked
+	throw new MarshalException("no parameters should " +
+	    "be specified for SHA1 message digest algorithm");
+    }
+
+    public byte[] digest(InputStream is) throws IOException, DigestException {
+	if (is == null) {
+	    throw new NullPointerException("pre-digested input stream is null");
+	}
+        try {
+            md = MessageDigest.getInstance("SHA");
+        } catch (NoSuchAlgorithmException nsae) {
+	    throw new DigestException("SHA1 MessageDigest not available");
+        }
+        DigestInputStream dis = new DigestInputStream(is, md);
+	if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "Predigested reference:\n");
+            byte[] buf = new byte[1024];
+	    int bytesRead = 0;
+            while (true) {
+	        int read = dis.read(buf);
+	        if (read == -1) { // EOF
+	            break;
+	        }
+	        bytesRead = bytesRead + read;
+	        log.log(Level.FINE, new String(buf));
+	    }
+	    log.log(Level.FINE, "bytesRead=" + bytesRead);
+	}
+	return md.digest();
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java b/src/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java
new file mode 100644
index 0000000..9d1ac7e
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+
+import java.security.*;
+import java.security.spec.AlgorithmParameterSpec;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based abstract implementation of SignatureMethod.
+ *
+ * @author Sean Mullan
+ */
+public abstract class DOMSignatureMethod extends DOMStructure 
+    implements SignatureMethod {
+
+    private String algorithm;
+    private SignatureMethodParameterSpec params;
+
+    /**
+     * Creates a <code>DOMSignatureMethod</code>.
+     *
+     * @param algorithm the URI identifying the signature algorithm
+     * @param params the algorithm-specific params (may be <code>null</code>)
+     * @throws NullPointerException if <code>algorithm</code> is
+     *    <code>null</code>
+     * @throws InvalidAlgorithmParameterException if the parameters are not
+     *    appropriate for this signature method
+     */
+    protected DOMSignatureMethod(String algorithm, 
+	AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	if (algorithm == null) {
+	    throw new NullPointerException("algorithm cannot be null");
+	}
+	if (params != null && 
+	    !(params instanceof SignatureMethodParameterSpec)) {
+	    throw new InvalidAlgorithmParameterException
+		("params must be of type SignatureMethodParameterSpec");
+	}
+        checkParams((SignatureMethodParameterSpec) params);
+	this.algorithm = algorithm;
+	this.params = (SignatureMethodParameterSpec) params;
+    }
+
+    /**
+     * Creates a <code>DOMSignatureMethod</code> from an element. This ctor
+     * invokes the abstract {@link #unmarshalParams unmarshalParams} method to
+     * unmarshal any algorithm-specific input parameters.
+     *
+     * @param smElem a SignatureMethod element
+     */
+    protected DOMSignatureMethod(Element smElem) throws MarshalException {
+        algorithm = DOMUtils.getAttributeValue(smElem, "Algorithm");
+	Element paramsElem = DOMUtils.getFirstChildElement(smElem);
+	if (paramsElem != null) {
+	    params = unmarshalParams(paramsElem);
+	}
+	try {
+	    checkParams(params);
+	} catch (InvalidAlgorithmParameterException iape) {
+	    throw new MarshalException(iape);
+	}
+    }
+
+    static SignatureMethod unmarshal(Element smElem) throws MarshalException {
+        String alg = DOMUtils.getAttributeValue(smElem, "Algorithm");
+        if (alg.equals(SignatureMethod.HMAC_SHA1)) {
+            return new DOMHMACSignatureMethod(smElem);
+        } else if (alg.equals(SignatureMethod.RSA_SHA1)) {
+            return new DOMRSASignatureMethod(smElem);
+        } else if (alg.equals(SignatureMethod.DSA_SHA1)) {
+            return new DOMDSASignatureMethod(smElem);
+        } else {
+            throw new MarshalException("unsupported signature algorithm: " 
+		+ alg);
+        }
+    }
+
+    /**
+     * Checks if the specified parameters are valid for this algorithm.
+     *
+     * @param params the algorithm-specific params (may be <code>null</code>)
+     * @throws InvalidAlgorithmParameterException if the parameters are not
+     *    appropriate for this signature method
+     */
+    protected abstract void checkParams(SignatureMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException;
+
+    public final AlgorithmParameterSpec getParameterSpec() {
+	return params;
+    }
+
+    public final String getAlgorithm() {
+	return algorithm;
+    }
+
+    /**
+     * Unmarshals <code>SignatureMethodParameterSpec</code> from the specified 
+     * <code>Element</code>. Subclasses should implement this to unmarshal
+     * the algorithm-specific parameters.
+     *
+     * @param paramsElem the <code>Element</code> holding the input params
+     * @return the algorithm-specific <code>SignatureMethodParameterSpec</code>
+     * @throws MarshalException if the parameters cannot be unmarshalled
+     */
+    protected abstract SignatureMethodParameterSpec 
+	unmarshalParams(Element paramsElem) throws MarshalException;
+
+    /**
+     * This method invokes the abstract {@link #marshalParams marshalParams} 
+     * method to marshal any algorithm-specific parameters.
+     */
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element smElem = DOMUtils.createElement
+	    (ownerDoc, "SignatureMethod", XMLSignature.XMLNS, dsPrefix);
+        DOMUtils.setAttribute(smElem, "Algorithm", algorithm);
+
+        if (params != null) {
+	    marshalParams(smElem, dsPrefix);
+        }
+
+        parent.appendChild(smElem);
+    }
+
+    /**
+     * Verifies the passed-in signature with the specified key, using the
+     * underlying signature or MAC algorithm.
+     *
+     * @param key the verification key
+     * @param si the DOMSignedInfo
+     * @param signature the signature bytes to be verified
+     * @param context the XMLValidateContext
+     * @return <code>true</code> if the signature verified successfully,
+     *    <code>false</code> if not
+     * @throws NullPointerException if <code>key</code>, <code>si</code> or
+     *    <code>signature</code> are <code>null</code>
+     * @throws InvalidKeyException if the key is improperly encoded, of
+     *    the wrong type, or parameters are missing, etc
+     * @throws SignatureException if an unexpected error occurs, such
+     *    as the passed in signature is improperly encoded
+     * @throws XMLSignatureException if an unexpected error occurs
+     */
+    public abstract boolean verify(Key key, DOMSignedInfo si, byte[] signature,
+	XMLValidateContext context) throws InvalidKeyException, SignatureException,
+	XMLSignatureException;
+
+    /**
+     * Signs the bytes with the specified key, using the underlying
+     * signature or MAC algorithm.
+     *
+     * @param key the signing key
+     * @param si the DOMSignedInfo
+     * @param context the XMLSignContext
+     * @return the signature
+     * @throws NullPointerException if <code>key</code> or
+     *    <code>si</code> are <code>null</code>
+     * @throws InvalidKeyException if the key is improperly encoded, of
+     *    the wrong type, or parameters are missing, etc
+     * @throws XMLSignatureException if an unexpected error occurs
+     */
+    public abstract byte[] sign(Key key, DOMSignedInfo si, XMLSignContext context) 
+        throws InvalidKeyException, XMLSignatureException;
+
+    /**
+     * Marshals the algorithm-specific parameters to an Element and
+     * appends it to the specified parent element.
+     *
+     * @param parent the parent element to append the parameters to
+     * @param paramsPrefix the algorithm parameters prefix to use
+     * @throws MarshalException if the parameters cannot be marshalled
+     */
+    protected abstract void marshalParams(Element parent, String paramsPrefix)
+	throws MarshalException;
+
+    /**
+     * Returns true if parameters are equal; false otherwise.
+     *
+     * Subclasses should override this method to compare algorithm-specific
+     * parameters.
+     */
+    protected abstract boolean paramsEqual(AlgorithmParameterSpec spec);
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof SignatureMethod)) {
+            return false;
+	}
+        SignatureMethod osm = (SignatureMethod) o;
+
+	return (algorithm.equals(osm.getAlgorithm()) && 
+	    paramsEqual(osm.getParameterSpec()));
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java b/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
new file mode 100644
index 0000000..29ff080
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+
+import java.util.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * DOM-based implementation of SignatureProperties.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMSignatureProperties extends DOMStructure 
+    implements SignatureProperties {
+ 
+    private final String id;
+    private final List properties;
+
+    /**
+     * Creates a <code>DOMSignatureProperties</code> from the specified 
+     * parameters.
+     *
+     * @param properties a list of one or more {@link SignatureProperty}s. The 
+     *    list is defensively copied to protect against subsequent modification.
+     * @param id the Id (may be <code>null</code>)
+     * @return a <code>DOMSignatureProperties</code>
+     * @throws ClassCastException if <code>properties</code> contains any
+     *    entries that are not of type {@link SignatureProperty}
+     * @throws IllegalArgumentException if <code>properties</code> is empty
+     * @throws NullPointerException if <code>properties</code>
+     */
+    public DOMSignatureProperties(List properties, String id) {
+	if (properties == null) {
+	    throw new NullPointerException("properties cannot be null");
+	} else if (properties.isEmpty()) {
+	    throw new IllegalArgumentException("properties cannot be empty");
+        } else {
+            List propsCopy = new ArrayList(properties);
+            for (int i = 0, size = propsCopy.size(); i < size; i++) {
+                if (!(propsCopy.get(i) instanceof SignatureProperty)) {
+                    throw new ClassCastException
+                        ("properties["+i+"] is not a valid type");
+                }
+            }
+            this.properties = Collections.unmodifiableList(propsCopy);
+        }
+	this.id = id;
+    }
+
+    /**
+     * Creates a <code>DOMSignatureProperties</code> from an element.
+     *
+     * @param propsElem a SignatureProperties element
+     * @throws MarshalException if a marshalling error occurs
+     */
+    public DOMSignatureProperties(Element propsElem) throws MarshalException{
+	// unmarshal attributes
+        id = DOMUtils.getAttributeValue(propsElem, "Id");
+
+	NodeList nodes = propsElem.getChildNodes();
+	int length = nodes.getLength();
+	List properties = new ArrayList(length);
+	for (int i = 0; i < length; i++) {
+	    Node child = nodes.item(i);
+	    if (child.getNodeType() == Node.ELEMENT_NODE) {
+	        properties.add(new DOMSignatureProperty((Element) child));
+	    }
+	}
+        if (properties.isEmpty()) {
+	    throw new MarshalException("properties cannot be empty");
+        } else {
+            this.properties = Collections.unmodifiableList(properties);
+        }
+    }
+
+    public List getProperties() {
+        return properties;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element propsElem = DOMUtils.createElement
+            (ownerDoc, "SignatureProperties", XMLSignature.XMLNS, dsPrefix);
+
+	// set attributes
+        DOMUtils.setAttributeID(propsElem, "Id", id);
+
+        // create and append any properties
+	for (int i = 0, size = properties.size(); i < size; i++) {
+	    DOMSignatureProperty property = 
+		(DOMSignatureProperty) properties.get(i);
+	    property.marshal(propsElem, dsPrefix, context);
+        }
+	    
+	parent.appendChild(propsElem);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof SignatureProperties)) {
+            return false;
+	}
+        SignatureProperties osp = (SignatureProperties) o;
+
+	boolean idsEqual = (id == null ? osp.getId() == null :
+            id.equals(osp.getId()));
+
+	return (properties.equals(osp.getProperties()) && idsEqual);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java b/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
new file mode 100644
index 0000000..f6fb675
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+
+import java.util.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * DOM-based implementation of SignatureProperty.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMSignatureProperty extends DOMStructure 
+    implements SignatureProperty {
+ 
+    private final String id;
+    private final String target;
+    private final List content;
+
+    /**
+     * Creates a <code>SignatureProperty</code> from the specified parameters.
+     *
+     * @param content a list of one or more {@link XMLStructure}s. The list
+     *    is defensively copied to protect against subsequent modification.
+     * @param target the target URI
+     * @param id the Id (may be <code>null</code>)
+     * @return a <code>SignatureProperty</code>
+     * @throws ClassCastException if <code>content</code> contains any
+     *    entries that are not of type {@link XMLStructure}
+     * @throws IllegalArgumentException if <code>content</code> is empty
+     * @throws NullPointerException if <code>content</code> or 
+     *    <code>target</code> is <code>null</code>
+     */
+    public DOMSignatureProperty(List content, String target, String id) {
+	if (target == null) {
+	    throw new NullPointerException("target cannot be null");
+	} else if (content == null) {
+	    throw new NullPointerException("content cannot be null");
+	} else if (content.isEmpty()) {
+	    throw new IllegalArgumentException("content cannot be empty");
+        } else {
+            List contentCopy = new ArrayList(content);
+            for (int i = 0, size = contentCopy.size(); i < size; i++) {
+                if (!(contentCopy.get(i) instanceof XMLStructure)) {
+                    throw new ClassCastException
+                        ("content["+i+"] is not a valid type");
+                }
+            }
+            this.content = Collections.unmodifiableList(contentCopy);
+        }
+	this.target = target;
+	this.id = id;
+    }
+
+    /**
+     * Creates a <code>DOMSignatureProperty</code> from an element.
+     *
+     * @param propElem a SignatureProperty element
+     */
+    public DOMSignatureProperty(Element propElem) throws MarshalException {
+	// unmarshal attributes
+        target = DOMUtils.getAttributeValue(propElem, "Target");
+	if (target == null) {
+	    throw new MarshalException("target cannot be null");
+	}
+        id = DOMUtils.getAttributeValue(propElem, "Id");
+
+	NodeList nodes = propElem.getChildNodes();
+	int length = nodes.getLength();
+	List content = new ArrayList(length);
+	for (int i = 0; i < length; i++) {
+	    content.add(new javax.xml.crypto.dom.DOMStructure(nodes.item(i)));
+	}
+        if (content.isEmpty()) {
+	    throw new MarshalException("content cannot be empty");
+        } else {
+            this.content = Collections.unmodifiableList(content);
+        }
+    }
+
+    public List getContent() {
+        return content;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public String getTarget() {
+        return target;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element propElem = DOMUtils.createElement
+            (ownerDoc, "SignatureProperty", XMLSignature.XMLNS, dsPrefix);
+
+	// set attributes
+	DOMUtils.setAttributeID(propElem, "Id", id);
+        DOMUtils.setAttribute(propElem, "Target", target);
+
+        // create and append any elements and mixed content
+	for (int i = 0, size = content.size(); i < size; i++) {
+	    javax.xml.crypto.dom.DOMStructure property = 
+		(javax.xml.crypto.dom.DOMStructure) content.get(i);
+	    DOMUtils.appendChild(propElem, property.getNode());
+        }
+	    
+	parent.appendChild(propElem);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+	if (!(o instanceof SignatureProperty)) {
+            return false;
+	}
+        SignatureProperty osp = (SignatureProperty) o;
+
+	boolean idsEqual = (id == null ? osp.getId() == null :
+            id.equals(osp.getId()));
+
+	return (equalsContent(osp.getContent()) && 
+	    target.equals(osp.getTarget()) && idsEqual);
+    }
+
+    private boolean equalsContent(List otherContent) {
+	int osize = otherContent.size();
+	if (content.size() != osize) {
+            return false;
+	}
+        for (int i = 0; i < osize; i++) {
+            XMLStructure oxs = (XMLStructure) otherContent.get(i);
+            XMLStructure xs = (XMLStructure) content.get(i);
+            if (oxs instanceof javax.xml.crypto.dom.DOMStructure) {
+		if (!(xs instanceof javax.xml.crypto.dom.DOMStructure)) {
+                    return false;
+		}
+                Node onode =
+                    ((javax.xml.crypto.dom.DOMStructure) oxs).getNode();
+		Node node =
+                    ((javax.xml.crypto.dom.DOMStructure) xs).getNode();
+		if (!DOMUtils.nodesEqual(node, onode)) {
+		    return false;
+		}
+            } else {
+		if (!(xs.equals(oxs))) {
+                    return false;
+		}
+            }
+	}
+
+	return true;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java b/src/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
new file mode 100644
index 0000000..3c70229
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
@@ -0,0 +1,259 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.util.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.UnsyncBufferedOutputStream;
+import org.apache.xml.security.utils.XMLUtils;
+
+/**
+ * DOM-based implementation of SignedInfo.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMSignedInfo extends DOMStructure implements SignedInfo {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private List references;
+    private CanonicalizationMethod canonicalizationMethod;
+    private SignatureMethod signatureMethod;
+    private String id;
+    private Document ownerDoc;
+    private Element localSiElem;
+    private InputStream canonData;
+
+    /**
+     * Creates a <code>DOMSignedInfo</code> from the specified parameters. Use
+     * this constructor when the <code>Id</code> is not specified.
+     *
+     * @param cm the canonicalization method
+     * @param sm the signature method
+     * @param references the list of references. The list is copied.
+     * @throws NullPointerException if
+     *    <code>cm</code>, <code>sm</code>, or <code>references</code> is 
+     *    <code>null</code>
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws ClassCastException if any of the references are not of
+     *    type <code>Reference</code>
+     */
+    public DOMSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, 
+	List references) {
+        if (cm == null || sm == null || references == null) {
+            throw new NullPointerException();
+        }
+        this.canonicalizationMethod = cm;
+        this.signatureMethod = sm;
+	this.references = Collections.unmodifiableList
+	    (new ArrayList(references));
+	if (this.references.isEmpty()) {
+	    throw new IllegalArgumentException("list of references must " +
+	        "contain at least one entry");
+	}
+	for (int i = 0, size = this.references.size(); i < size; i++) {
+	    Object obj = this.references.get(i);
+	    if (!(obj instanceof Reference)) {
+		throw new ClassCastException("list of references contains " +
+		    "an illegal type");
+	    }
+	}
+    }
+
+    /**
+     * Creates a <code>DOMSignedInfo</code> from the specified parameters.
+     *
+     * @param cm the canonicalization method
+     * @param sm the signature method
+     * @param references the list of references. The list is copied.
+     * @param id an optional identifer that will allow this
+     *    <code>SignedInfo</code> to be referenced by other signatures and
+     *    objects
+     * @throws NullPointerException if <code>cm</code>, <code>sm</code>,
+     *    or <code>references</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>references</code> is empty
+     * @throws ClassCastException if any of the references are not of
+     *    type <code>Reference</code>
+     */
+    public DOMSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, 
+	List references, String id) {
+        this(cm, sm, references);
+        this.id = id;
+    }
+
+    /**
+     * Creates a <code>DOMSignedInfo</code> from an element.
+     *
+     * @param siElem a SignedInfo element
+     */
+    public DOMSignedInfo(Element siElem, XMLCryptoContext context)
+	throws MarshalException {
+	localSiElem = siElem;
+	ownerDoc = siElem.getOwnerDocument();
+
+        // get Id attribute, if specified
+        id = DOMUtils.getAttributeValue(siElem, "Id");
+
+        // unmarshal CanonicalizationMethod
+	Element cmElem = DOMUtils.getFirstChildElement(siElem);
+	canonicalizationMethod = new DOMCanonicalizationMethod(cmElem, context);
+
+        // unmarshal SignatureMethod
+	Element smElem = DOMUtils.getNextSiblingElement(cmElem);
+	signatureMethod = DOMSignatureMethod.unmarshal(smElem);
+
+	// unmarshal References
+	ArrayList refList = new ArrayList(5);
+	Element refElem = DOMUtils.getNextSiblingElement(smElem);
+	while (refElem != null) {
+	    refList.add(new DOMReference(refElem, context));
+	    refElem = DOMUtils.getNextSiblingElement(refElem);
+	}
+	references = Collections.unmodifiableList(refList);
+    }
+
+    public CanonicalizationMethod getCanonicalizationMethod() {
+        return canonicalizationMethod;
+    }
+
+    public SignatureMethod getSignatureMethod() {
+        return signatureMethod;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public List getReferences() {
+	return references;
+    }
+
+    public InputStream getCanonicalizedData() {
+	return canonData;
+    }
+
+    public void canonicalize(XMLCryptoContext context,ByteArrayOutputStream bos)
+	throws XMLSignatureException {
+
+	if (context == null) {
+            throw new NullPointerException("context cannot be null");
+	}
+
+	OutputStream os = new UnsyncBufferedOutputStream(bos);
+        try {
+            os.close();
+        } catch (IOException e) {
+            // Impossible
+        }
+
+	DOMSubTreeData subTree = new DOMSubTreeData(localSiElem, true);
+
+	OctetStreamData data = null;
+	try {
+	    data = (OctetStreamData) ((DOMCanonicalizationMethod) 
+		canonicalizationMethod).canonicalize(subTree, context, os);
+	} catch (TransformException te) {
+	    throw new XMLSignatureException(te);
+	}
+
+	byte[] signedInfoBytes = bos.toByteArray();
+
+        // this whole block should only be done if logging is enabled
+	if (log.isLoggable(Level.FINE)) {
+            InputStreamReader isr = new InputStreamReader
+		(new ByteArrayInputStream(signedInfoBytes));
+            char[] siBytes = new char[signedInfoBytes.length];
+            try {
+                isr.read(siBytes);
+            } catch (IOException ioex) {} //ignore since this is logging code
+            log.log(Level.FINE, "Canonicalized SignedInfo:\n" 
+		+ new String(siBytes));
+	    log.log(Level.FINE, "Data to be signed/verified:"
+                + Base64.encode(signedInfoBytes));
+	}
+
+	this.canonData = new ByteArrayInputStream(signedInfoBytes);
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+	Element siElem = DOMUtils.createElement
+	    (ownerDoc, "SignedInfo", XMLSignature.XMLNS, dsPrefix);
+
+	// create and append CanonicalizationMethod element
+	DOMCanonicalizationMethod dcm = 
+	    (DOMCanonicalizationMethod) canonicalizationMethod;
+	dcm.marshal(siElem, dsPrefix, context); 
+
+	// create and append SignatureMethod element
+	((DOMSignatureMethod) signatureMethod).marshal
+	    (siElem, dsPrefix, context);
+
+	// create and append Reference elements
+	for (int i = 0, size = references.size(); i < size; i++) {
+	    DOMReference reference = (DOMReference) references.get(i);
+	    reference.marshal(siElem, dsPrefix, context);
+	}
+
+	// append Id attribute
+        DOMUtils.setAttributeID(siElem, "Id", id);
+	    
+	parent.appendChild(siElem);
+	localSiElem = siElem;
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+	    return true;
+	}
+
+	if (!(o instanceof SignedInfo)) {
+	    return false;
+	}
+	SignedInfo osi = (SignedInfo) o;
+
+	boolean idEqual = (id == null ? osi.getId() == null : 
+	    id.equals(osi.getId()));
+
+	return (canonicalizationMethod.equals(osi.getCanonicalizationMethod()) 
+	    && signatureMethod.equals(osi.getSignatureMethod()) && 
+	    references.equals(osi.getReferences()) && idEqual);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMStructure.java b/src/org/jcp/xml/dsig/internal/dom/DOMStructure.java
new file mode 100644
index 0000000..f47316b
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMStructure.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based abstract implementation of XMLStructure.
+ *
+ * @author Sean Mullan
+ */
+public abstract class DOMStructure implements XMLStructure {
+
+    public final boolean isFeatureSupported(String feature) {
+	if (feature == null) {
+	    throw new NullPointerException();
+	} else {
+	    return false;
+	}
+    }
+
+    public abstract void marshal(Node parent, String dsPrefix, 
+	DOMCryptoContext context) throws MarshalException;
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java b/src/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java
new file mode 100644
index 0000000..9332b0e
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMSubTreeData.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.NodeSetData;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.NoSuchElementException;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * This is a subtype of NodeSetData that represents a dereferenced
+ * same-document URI as the root of a subdocument. The main reason is
+ * for efficiency and performance, as some transforms can operate
+ * directly on the subdocument and there is no need to convert it
+ * first to an XPath node-set.
+ */
+public class DOMSubTreeData implements NodeSetData {
+
+    private boolean excludeComments;
+    private Iterator ni;
+    private Node root;
+
+    public DOMSubTreeData(Node root, boolean excludeComments) {
+	this.root = root;
+	this.ni = new DelayedNodeIterator(root, excludeComments);
+	this.excludeComments = excludeComments;
+    }
+
+    public Iterator iterator() {
+	return ni;
+    }
+
+    public Node getRoot() {
+	return root;
+    }
+
+    public boolean excludeComments() {
+	return excludeComments;
+    }
+
+    /**
+     * This is an Iterator that contains a backing node-set that is
+     * not populated until the caller first attempts to advance the iterator.
+     */
+    static class DelayedNodeIterator implements Iterator {
+    	private Node root;
+	private List nodeSet;
+	private ListIterator li;
+	private boolean withComments;
+
+	DelayedNodeIterator(Node root, boolean excludeComments) {
+            this.root = root;
+            this.withComments = !excludeComments;
+	}
+
+        public boolean hasNext() {
+            if (nodeSet == null) {
+		nodeSet = dereferenceSameDocumentURI(root);
+		li = nodeSet.listIterator();
+            }
+	    return li.hasNext();
+        }
+
+        public Object next() {
+            if (nodeSet == null) {
+		nodeSet = dereferenceSameDocumentURI(root);
+		li = nodeSet.listIterator();
+            }
+            if (li.hasNext()) {
+		return (Node) li.next();
+            } else {
+                throw new NoSuchElementException();
+	    }
+        }
+
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+
+	/**
+         * Dereferences a same-document URI fragment.
+	 *
+	 * @param node the node (document or element) referenced by the
+         *	 URI fragment. If null, returns an empty set.
+	 * @return a set of nodes (minus any comment nodes)
+	 */
+	private List dereferenceSameDocumentURI(Node node) {
+            List nodeSet = new ArrayList();
+            if (node != null) {
+		nodeSetMinusCommentNodes(node, nodeSet, null);
+            }
+            return nodeSet;
+	}
+
+	/**
+         * Recursively traverses the subtree, and returns an XPath-equivalent
+	 * node-set of all nodes traversed, excluding any comment nodes,
+	 * if specified.
+	 *
+         * @param node the node to traverse
+	 * @param nodeSet the set of nodes traversed so far
+	 * @param the previous sibling node
+	 */
+	private void nodeSetMinusCommentNodes(Node node, List nodeSet,
+            Node prevSibling) {
+            switch (node.getNodeType()) {
+		case Node.ELEMENT_NODE :
+                    NamedNodeMap attrs = node.getAttributes();
+                    if (attrs != null) {
+                        for (int i = 0, len = attrs.getLength(); i < len; i++) {
+                            nodeSet.add(attrs.item(i));
+                        }
+                    }
+                    nodeSet.add(node);
+		case Node.DOCUMENT_NODE :
+                    Node pSibling = null;
+                    for (Node child = node.getFirstChild(); child != null;
+                        child = child.getNextSibling()) {
+			nodeSetMinusCommentNodes(child, nodeSet, pSibling);
+                        pSibling = child;
+                    }
+                    break;
+		case Node.TEXT_NODE :
+		case Node.CDATA_SECTION_NODE:
+                    // emulate XPath which only returns the first node in
+                    // contiguous text/cdata nodes
+                    if (prevSibling != null &&
+                        (prevSibling.getNodeType() == Node.TEXT_NODE ||
+                         prevSibling.getNodeType() == Node.CDATA_SECTION_NODE)){			return;
+                    }
+		case Node.PROCESSING_INSTRUCTION_NODE :
+                    nodeSet.add(node);
+	            break;
+		case Node.COMMENT_NODE:
+		    if (withComments) { 
+                        nodeSet.add(node);
+		    }
+            }
+	}
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMTransform.java b/src/org/jcp/xml/dsig/internal/dom/DOMTransform.java
new file mode 100644
index 0000000..3b43b91
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMTransform.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.OutputStream;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.spec.AlgorithmParameterSpec;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+/**
+ * DOM-based abstract implementation of Transform.
+ *
+ * @author Sean Mullan
+ */
+public class DOMTransform extends DOMStructure implements Transform {
+
+    protected TransformService spi;
+
+    /**
+     * Creates a <code>DOMTransform</code>.
+     *
+     * @param spi the TransformService
+     */
+    public DOMTransform(TransformService spi) {
+	this.spi = spi;
+    }
+
+    /**
+     * Creates a <code>DOMTransform</code> from an element. This constructor
+     * invokes the abstract {@link #unmarshalParams unmarshalParams} method to
+     * unmarshal any algorithm-specific input parameters.
+     *
+     * @param transElem a Transform element
+     */
+    public DOMTransform(Element transElem, XMLCryptoContext context) 
+	throws MarshalException {
+        Document ownerDoc = transElem.getOwnerDocument();
+        String algorithm = DOMUtils.getAttributeValue(transElem, "Algorithm");
+	try {
+	    spi = TransformService.getInstance(algorithm, "DOM");
+	} catch (NoSuchAlgorithmException e) {
+	    throw new MarshalException(e);
+	}
+	try {
+            spi.init(new javax.xml.crypto.dom.DOMStructure(transElem), context);
+	} catch (InvalidAlgorithmParameterException iape) {
+	    throw new MarshalException(iape);
+	}
+    }
+
+    public final AlgorithmParameterSpec getParameterSpec() {
+	return spi.getParameterSpec();
+    }
+
+    public final String getAlgorithm() {
+	return spi.getAlgorithm();
+    }
+
+    /**
+     * This method invokes the abstract {@link #marshalParams marshalParams} 
+     * method to marshal any algorithm-specific parameters.
+     */
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+	Element transformElem = null;
+	if (parent.getLocalName().equals("Transforms")) {
+            transformElem = DOMUtils.createElement
+		(ownerDoc, "Transform", XMLSignature.XMLNS, dsPrefix);
+	} else {
+            transformElem = DOMUtils.createElement
+            (ownerDoc, "CanonicalizationMethod", XMLSignature.XMLNS, dsPrefix);
+	}
+	DOMUtils.setAttribute(transformElem, "Algorithm", getAlgorithm());
+
+        spi.marshalParams
+	    (new javax.xml.crypto.dom.DOMStructure(transformElem), context);
+
+        parent.appendChild(transformElem);
+    }
+
+    /**
+     * Transforms the specified data using the underlying transform algorithm.
+     *
+     * @param data the data to be transformed
+     * @param sc the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @return the transformed data
+     * @throws NullPointerException if <code>data</code> is <code>null</code>
+     * @throws XMLSignatureException if an unexpected error occurs while
+     *    executing the transform
+     */
+    public Data transform(Data data, XMLCryptoContext xc) 
+	throws TransformException {
+	return spi.transform(data, xc);
+    }
+
+    /**
+     * Transforms the specified data using the underlying transform algorithm.
+     *
+     * @param data the data to be transformed
+     * @param sc the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @param os the <code>OutputStream</code> that should be used to write
+     *    the transformed data to
+     * @return the transformed data
+     * @throws NullPointerException if <code>data</code> is <code>null</code>
+     * @throws XMLSignatureException if an unexpected error occurs while
+     *    executing the transform
+     */
+    public Data transform(Data data, XMLCryptoContext xc, OutputStream os) 
+	throws TransformException {
+	return spi.transform(data, xc, os);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof Transform)) {
+            return false;
+	}
+        Transform otransform = (Transform) o;
+
+	return (getAlgorithm().equals(otransform.getAlgorithm()) && 
+	    DOMUtils.paramsEqual
+		(getParameterSpec(), otransform.getParameterSpec()));
+    }
+
+    /**
+     * Transforms the specified data using the underlying transform algorithm.
+     * This method invokes the {@link #marshal marshal} method and passes it
+     * the specified <code>DOMSignContext</code> before transforming the data.
+     *
+     * @param data the data to be transformed
+     * @param sc the <code>XMLCryptoContext</code> containing
+     *    additional context (may be <code>null</code> if not applicable)
+     * @param context the marshalling context
+     * @return the transformed data
+     * @throws MarshalException if an exception occurs while marshalling
+     * @throws NullPointerException if <code>data</code> or <code>context</code> 
+     *    is <code>null</code>
+     * @throws XMLSignatureException if an unexpected error occurs while
+     *    executing the transform
+     */
+    Data transform(Data data, XMLCryptoContext xc, DOMSignContext context) 
+	throws MarshalException, TransformException {
+        marshal(context.getParent(),
+            DOMUtils.getSignaturePrefix(context), context);
+	return transform(data, xc);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java b/src/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java
new file mode 100644
index 0000000..b0667dd
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMURIDereferencer.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.apache.xml.security.Init;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.apache.xml.security.signature.XMLSignatureInput;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.*;
+
+/**
+ * DOM-based implementation of URIDereferencer.
+ *
+ * @author Sean Mullan
+ */
+public class DOMURIDereferencer implements URIDereferencer {
+    
+    static final URIDereferencer INSTANCE = new DOMURIDereferencer();
+
+    private DOMURIDereferencer() {
+	// need to call org.apache.xml.security.Init.init() 
+        // before calling any apache security code
+	Init.init();
+    }
+
+    public Data dereference(URIReference uriRef, XMLCryptoContext context)
+	throws URIReferenceException {
+
+	if (uriRef == null) {
+	    throw new NullPointerException("uriRef cannot be null");
+	}
+	if (context == null) {
+	    throw new NullPointerException("context cannot be null");
+	}
+
+	DOMURIReference domRef = (DOMURIReference) uriRef;
+        Attr uriAttr = (Attr) domRef.getHere();
+	String uri = uriRef.getURI();
+        DOMCryptoContext dcc = (DOMCryptoContext) context;
+
+	// Check if same-document URI and register ID
+	if (uri != null && uri.length() != 0 && uri.charAt(0) == '#') {
+            String id = uri.substring(1);
+
+	    if (id.startsWith("xpointer(id(")) {
+	        int i1 = id.indexOf('\'');
+	        int i2 = id.indexOf('\'', i1+1);
+		id = id.substring(i1+1, i2);
+	    }
+
+            // this is a bit of a hack to check for registered 
+	    // IDRefs and manually register them with Apache's IdResolver 
+	    // map which includes builtin schema knowledge of DSig/Enc IDs
+	    if (context instanceof XMLSignContext) {
+	        Node referencedElem = dcc.getElementById(id);
+	        if (referencedElem != null) {
+	            IdResolver.registerElementById((Element) referencedElem, id);
+	        }
+	    }
+	} 
+
+        try {
+	    String baseURI = context.getBaseURI();
+            ResourceResolver apacheResolver = 
+	        ResourceResolver.getInstance(uriAttr, baseURI);
+            XMLSignatureInput in = apacheResolver.resolve(uriAttr, baseURI);
+	    if (in.isOctetStream()) {
+	        return new ApacheOctetStreamData(in);
+	    } else {
+	        return new ApacheNodeSetData(in);
+	    }
+        } catch (Exception e) {
+            throw new URIReferenceException(e);
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMUtils.java b/src/org/jcp/xml/dsig/internal/dom/DOMUtils.java
new file mode 100644
index 0000000..3564f18
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMUtils.java
@@ -0,0 +1,357 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.util.*;
+import java.security.spec.AlgorithmParameterSpec;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.*;
+
+import org.apache.xml.security.utils.IdResolver;
+
+/**
+ * Useful static DOM utility methods.
+ *
+ * @author Sean Mullan
+ */
+public class DOMUtils {
+
+    // class cannot be instantiated
+    private DOMUtils() {} 
+
+    /**
+     * Returns the owner document of the specified node.
+     *
+     * @param node the node
+     * @return the owner document
+     */
+    public static Document getOwnerDocument(Node node) {
+        if (node.getNodeType() == Node.DOCUMENT_NODE) {
+            return (Document) node;
+        } else {
+            return node.getOwnerDocument();
+        }
+    }
+
+    /**
+     * Creates an element in the specified namespace, with the specified tag
+     * and namespace prefix.
+     *
+     * @param doc the owner document
+     * @param tag the tag
+     * @param nsURI the namespace URI
+     * @param prefix the namespace prefix
+     * @return the newly created element
+     */
+    public static Element createElement(Document doc, String tag, String nsURI,
+	String prefix) {
+        String qName = prefix == null ? tag : prefix + ":" + tag;
+        return doc.createElementNS(nsURI, qName);
+    }
+
+    /**
+     * Sets an element's attribute (using DOM level 2) with the 
+     * specified value and namespace prefix.
+     *
+     * @param elem the element to set the attribute on
+     * @param name the name of the attribute
+     * @param value the attribute value. If null, no attribute is set. 
+     */
+    public static void setAttribute(Element elem, String name, String value) {
+	if (value == null) return;
+	elem.setAttributeNS(null, name, value);
+    }
+
+    /**
+     * Sets an element's attribute (using DOM level 2) with the 
+     * specified value and namespace prefix AND registers the ID value with
+     * the specified element. This is for resolving same-document
+     * ID references.
+     *
+     * @param elem the element to set the attribute on
+     * @param name the name of the attribute
+     * @param value the attribute value. If null, no attribute is set. 
+     */
+    public static void setAttributeID(Element elem, String name, String value) {
+	if (value == null) return;
+	elem.setAttributeNS(null, name, value);
+	IdResolver.registerElementById(elem, value);
+    }
+
+    /**
+     * Returns the first child element of the specified node, or null if there 
+     * is no such element.
+     *
+     * @param node the node
+     * @return the first child element of the specified node, or null if there 
+     *    is no such element
+     * @throws NullPointerException if <code>node == null</code>
+     */
+    public static Element getFirstChildElement(Node node) {
+        Node child = node.getFirstChild();
+        while (child != null && child.getNodeType() != Node.ELEMENT_NODE) {
+            child = child.getNextSibling();
+        }
+        return (Element) child;
+    }
+
+    /**
+     * Returns the last child element of the specified node, or null if there 
+     * is no such element.
+     *
+     * @param node the node
+     * @return the last child element of the specified node, or null if there 
+     *    is no such element
+     * @throws NullPointerException if <code>node == null</code>
+     */
+    public static Element getLastChildElement(Node node) {
+        Node child = node.getLastChild();
+        while (child != null && child.getNodeType() != Node.ELEMENT_NODE) {
+            child = child.getPreviousSibling();
+        }
+        return (Element) child;
+    }
+
+    /**
+     * Returns the next sibling element of the specified node, or null if there 
+     * is no such element.
+     *
+     * @param node the node
+     * @return the next sibling element of the specified node, or null if there 
+     *    is no such element
+     * @throws NullPointerException if <code>node == null</code>
+     */
+    public static Element getNextSiblingElement(Node node) {
+        Node sibling = node.getNextSibling();
+        while (sibling != null && sibling.getNodeType() != Node.ELEMENT_NODE) {
+            sibling = sibling.getNextSibling();
+        }
+        return (Element) sibling;
+    }
+
+    /**
+     * Returns the attribute value for the attribute with the specified name.
+     * Returns null if there is no such attribute, or 
+     * the empty string if the attribute value is empty.
+     *
+     * <p>This works around a limitation of the DOM
+     * <code>Element.getAttributeNode</code> method, which does not distinguish
+     * between an unspecified attribute and an attribute with a value of
+     * "" (it returns "" for both cases).
+     *
+     * @param elem the element containing the attribute
+     * @param name the name of the attribute
+     * @return the attribute value (may be null if unspecified)
+     */
+    public static String getAttributeValue(Element elem, String name) {
+        Attr attr = elem.getAttributeNodeNS(null, name);
+        return (attr == null) ? null : attr.getValue();
+    }
+
+    /**
+     * Returns a Set of <code>Node</code>s, backed by the specified 
+     * <code>NodeList</code>.
+     *
+     * @param nl the NodeList
+     * @return a Set of Nodes
+     */
+    public static Set nodeSet(NodeList nl) {
+	return new NodeSet(nl);
+    }
+
+    static class NodeSet extends AbstractSet {
+        private NodeList nl;
+        public NodeSet(NodeList nl) {
+            this.nl = nl;
+        }
+
+        public int size() { return nl.getLength(); }
+        public Iterator iterator() {
+            return new Iterator() {
+                int index = 0;
+
+                public void remove() {
+                    throw new UnsupportedOperationException();
+                }
+                public Object next() {
+                    if (!hasNext()) {
+                        throw new NoSuchElementException();
+                    }
+                    return nl.item(index++);
+                }
+                public boolean hasNext() {
+                    return index < nl.getLength() ? true : false;
+                }
+            };
+        }
+    }
+    
+    /**
+     * Returns the prefix associated with the specified namespace URI
+     *
+     * @param context contains the namespace map
+     * @param nsURI the namespace URI
+     * @return the prefix associated with the specified namespace URI, or
+     *    null if not set
+     */
+    public static String getNSPrefix(XMLCryptoContext context, String nsURI) {
+        if (context != null) {
+            return context.getNamespacePrefix
+		(nsURI, context.getDefaultNamespacePrefix());
+        } else {
+            return null;
+	}
+    }
+
+    /**
+     * Returns the prefix associated with the XML Signature namespace URI
+     *
+     * @param context contains the namespace map
+     * @return the prefix associated with the specified namespace URI, or
+     *    null if not set
+     */
+    public static String getSignaturePrefix(XMLCryptoContext context) {
+	return getNSPrefix(context, XMLSignature.XMLNS);
+    }
+    
+    /**
+     * Removes all children nodes from the specified node.
+     *
+     * @param node the parent node whose children are to be removed
+     */
+    public static void removeAllChildren(Node node) {
+        NodeList children = node.getChildNodes();
+        for (int i = 0, length = children.getLength(); i < length; i++) {
+            node.removeChild(children.item(i));
+        }
+    }
+
+    /**
+     * Compares 2 nodes for equality. Implementation is not complete.
+     */
+    public static boolean nodesEqual(Node thisNode, Node otherNode) {
+	if (thisNode == otherNode) {
+	    return true;
+	}
+	if (thisNode.getNodeType() != otherNode.getNodeType()) {
+	    return false;
+	}
+	// FIXME - test content, etc
+	return true;
+    }
+
+    /**
+     * Checks if child element has same owner document before 
+     * appending to the parent, and imports it to the parent's document
+     * if necessary.
+     */
+    public static void appendChild(Node parent, Node child) {
+	Document ownerDoc = getOwnerDocument(parent);
+	if (child.getOwnerDocument() != ownerDoc) {
+	    parent.appendChild(ownerDoc.importNode(child, true));
+	} else {
+	    parent.appendChild(child);
+	}
+    }
+
+    public static boolean paramsEqual(AlgorithmParameterSpec spec1,
+	AlgorithmParameterSpec spec2) {
+	if (spec1 == spec2) {
+	    return true;
+	}
+	if (spec1 instanceof XPathFilter2ParameterSpec &&
+	    spec2 instanceof XPathFilter2ParameterSpec) {
+	    return paramsEqual((XPathFilter2ParameterSpec) spec1,
+		(XPathFilter2ParameterSpec) spec2);
+	}
+	if (spec1 instanceof ExcC14NParameterSpec &&
+	    spec2 instanceof ExcC14NParameterSpec) {
+	    return paramsEqual((ExcC14NParameterSpec) spec1,
+		(ExcC14NParameterSpec) spec2);
+	}
+	if (spec1 instanceof XPathFilterParameterSpec &&
+	    spec2 instanceof XPathFilterParameterSpec) {
+	    return paramsEqual((XPathFilterParameterSpec) spec1,
+		(XPathFilterParameterSpec) spec2);
+	}
+	if (spec1 instanceof XSLTTransformParameterSpec &&
+	    spec2 instanceof XSLTTransformParameterSpec) {
+	    return paramsEqual((XSLTTransformParameterSpec) spec1,
+		(XSLTTransformParameterSpec) spec2);
+	}
+	return false;
+    }
+
+    private static boolean paramsEqual(XPathFilter2ParameterSpec spec1,
+        XPathFilter2ParameterSpec spec2) {
+
+        List types = spec1.getXPathList();
+        List otypes = spec2.getXPathList();
+	int size = types.size();
+        if (size != otypes.size()) {
+            return false;
+        }
+        for (int i = 0; i < size; i++) {
+            XPathType type = (XPathType) types.get(i);
+            XPathType otype = (XPathType) otypes.get(i);
+            if (!type.getExpression().equals(otype.getExpression()) ||
+                type.getFilter() != otype.getFilter()) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static boolean paramsEqual(ExcC14NParameterSpec spec1,
+	ExcC14NParameterSpec spec2) {
+        return spec1.getPrefixList().equals(spec2.getPrefixList());
+    }
+
+    private static boolean paramsEqual(XPathFilterParameterSpec spec1,
+	XPathFilterParameterSpec spec2) {
+
+        return spec1.getXPath().equals(spec2.getXPath());
+    }
+
+    private static boolean paramsEqual(XSLTTransformParameterSpec spec1,
+	XSLTTransformParameterSpec spec2) {
+
+        XMLStructure ostylesheet = spec2.getStylesheet();
+        if (!(ostylesheet instanceof javax.xml.crypto.dom.DOMStructure)) {
+            return false;
+        }
+        Node ostylesheetElem =
+            ((javax.xml.crypto.dom.DOMStructure) ostylesheet).getNode();
+        XMLStructure stylesheet = spec1.getStylesheet();        
+	Node stylesheetElem =
+            ((javax.xml.crypto.dom.DOMStructure) stylesheet).getNode();
+        return nodesEqual(stylesheetElem, ostylesheetElem);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMX509Data.java b/src/org/jcp/xml/dsig/internal/dom/DOMX509Data.java
new file mode 100644
index 0000000..85cb2a1
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMX509Data.java
@@ -0,0 +1,279 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.ByteArrayInputStream;
+import java.security.cert.*;
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.X509IssuerSerial;
+import javax.xml.crypto.dsig.keyinfo.X509Data;
+import javax.security.auth.x500.X500Principal;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.utils.Base64;
+
+/**
+ * DOM-based implementation of X509Data.
+ *
+ * @author Sean Mullan
+ */
+//@@@ check for illegal combinations of data violating MUSTs in W3c spec
+public final class DOMX509Data extends DOMStructure implements X509Data {
+
+    private final List content;
+    private CertificateFactory cf;
+
+    /**
+     * Creates a DOMX509Data.
+     *
+     * @param content a list of one or more X.509 data types. Valid types are
+     *    {@link String} (subject names), <code>byte[]</code> (subject key ids),
+     *    {@link java.security.cert.X509Certificate}, {@link X509CRL},
+     *    or {@link javax.xml.dsig.XMLStructure} ({@link X509IssuerSerial}
+     *    objects or elements from an external namespace). The list is 
+     *    defensively copied to protect against subsequent modification.
+     * @return a <code>X509Data</code>
+     * @throws NullPointerException if <code>content</code> is <code>null</code>
+     * @throws IllegalArgumentException if <code>content</code> is empty
+     * @throws ClassCastException if <code>content</code> contains any entries
+     *    that are not of one of the valid types mentioned above
+     */
+    public DOMX509Data(List content) {
+        if (content == null) {
+            throw new NullPointerException("content cannot be null");
+        }
+        List contentCopy = new ArrayList(content);
+        if (contentCopy.isEmpty()) {
+            throw new IllegalArgumentException("content cannot be empty");
+        }
+        for (int i = 0; i < contentCopy.size(); i++) {
+	    Object x509Type = contentCopy.get(i);
+	    if (x509Type instanceof String) {
+		new X500Principal((String) x509Type);
+	    } else if (!(x509Type instanceof byte[]) &&
+                !(x509Type instanceof X509Certificate) &&
+                !(x509Type instanceof X509CRL) &&
+                !(x509Type instanceof XMLStructure)) {
+                throw new ClassCastException
+                    ("content["+i+"] is not a valid X509Data type");
+            }
+        }
+        this.content = Collections.unmodifiableList(contentCopy);
+    }
+
+    /**
+     * Creates a <code>DOMX509Data</code> from an element.
+     *
+     * @param xdElem an X509Data element
+     * @throws MarshalException if there is an error while unmarshalling
+     */
+    public DOMX509Data(Element xdElem) throws MarshalException {
+        // get all children nodes
+        NodeList nl = xdElem.getChildNodes();
+	List content = new ArrayList(nl.getLength());
+        for (int i = 0; i < nl.getLength(); i++) {
+            Node child = nl.item(i);
+            // ignore all non-Element nodes
+            if (child.getNodeType() != Node.ELEMENT_NODE) {
+                continue;
+	    }
+
+            Element childElem = (Element) child;
+            if (childElem.getLocalName().equals("X509IssuerSerial")) {
+                content.add(new DOMX509IssuerSerial(childElem));
+            } else if (childElem.getLocalName().equals("X509SKI")) {
+		try {
+                    content.add(Base64.decode(childElem));
+		} catch (Base64DecodingException bde) {
+		    throw new MarshalException("cannot decode X509SKI", bde);
+		}
+            } else if (childElem.getLocalName().equals("X509SubjectName")) {
+                content.add(childElem.getFirstChild().getNodeValue());
+            } else if (childElem.getLocalName().equals("X509Certificate")) {
+                content.add(unmarshalX509Certificate(childElem));
+            } else if (childElem.getLocalName().equals("X509CRL")) {
+                content.add(unmarshalX509CRL(childElem));
+            } else {
+		content.add(new javax.xml.crypto.dom.DOMStructure(childElem));
+            }
+        }
+        this.content = Collections.unmodifiableList(content);
+    }
+
+    public List getContent() {
+	return content;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element xdElem = DOMUtils.createElement
+            (ownerDoc, "X509Data", XMLSignature.XMLNS, dsPrefix);
+
+        // append children and preserve order
+        Iterator i = content.iterator();
+        while (i.hasNext()) {
+	    Object content = i.next();
+	    if (content instanceof XMLStructure) {
+	        if (content instanceof X509IssuerSerial) {
+		    ((DOMX509IssuerSerial) content).marshal
+			(xdElem, dsPrefix, context);
+		} else {
+		    javax.xml.crypto.dom.DOMStructure domContent =
+			(javax.xml.crypto.dom.DOMStructure) content;
+		    DOMUtils.appendChild(xdElem, domContent.getNode());
+		}
+	    } else if (content instanceof byte[]) {
+                marshalSKI((byte[]) content, xdElem, ownerDoc, dsPrefix);
+            } else if (content instanceof String) {
+                marshalSubjectName((String) content, xdElem, ownerDoc,dsPrefix);
+            } else if (content instanceof X509Certificate) {
+                marshalCert((X509Certificate) content,xdElem,ownerDoc,dsPrefix);
+            } else if (content instanceof X509CRL) {
+                marshalCRL((X509CRL) content, xdElem, ownerDoc, dsPrefix);
+            }
+        }
+
+        parent.appendChild(xdElem);
+    }
+
+    private void marshalSKI(byte[] skid, Node parent, Document doc, 
+	String dsPrefix) {
+
+        Element skidElem = DOMUtils.createElement
+	    (doc, "X509SKI", XMLSignature.XMLNS, dsPrefix);
+        skidElem.appendChild(doc.createTextNode(Base64.encode(skid)));
+        parent.appendChild(skidElem);
+    }
+
+    private void marshalSubjectName(String name, Node parent, Document doc, 
+	String dsPrefix) {
+
+        Element snElem = DOMUtils.createElement
+	    (doc, "X509SubjectName", XMLSignature.XMLNS, dsPrefix);
+        snElem.appendChild(doc.createTextNode(name));
+        parent.appendChild(snElem);
+    }
+
+    private void marshalCert(X509Certificate cert, Node parent, Document doc,
+	String dsPrefix) throws MarshalException {
+
+        Element certElem = DOMUtils.createElement
+	    (doc, "X509Certificate", XMLSignature.XMLNS, dsPrefix);
+        try {
+            certElem.appendChild(doc.createTextNode
+                (Base64.encode(cert.getEncoded())));
+        } catch (CertificateEncodingException e) {
+            throw new MarshalException("Error encoding X509Certificate", e);
+        }
+        parent.appendChild(certElem);
+    }
+
+    private void marshalCRL(X509CRL crl, Node parent, Document doc, 
+	String dsPrefix) throws MarshalException {
+
+        Element crlElem = DOMUtils.createElement
+	    (doc, "X509CRL", XMLSignature.XMLNS, dsPrefix);
+        try {
+            crlElem.appendChild(doc.createTextNode
+                (Base64.encode(crl.getEncoded())));
+        } catch (CRLException e) {
+            throw new MarshalException("Error encoding X509CRL", e);
+        }
+        parent.appendChild(crlElem);
+    }
+
+    private X509Certificate unmarshalX509Certificate(Element elem) 
+	throws MarshalException {
+        try {
+            ByteArrayInputStream bs = unmarshalBase64Binary(elem);
+            return (X509Certificate) cf.generateCertificate(bs);
+        } catch (CertificateException e) {
+            throw new MarshalException("Cannot create X509Certificate", e);
+        }
+    }
+
+    private X509CRL unmarshalX509CRL(Element elem) throws MarshalException {
+        try {
+            ByteArrayInputStream bs = unmarshalBase64Binary(elem);
+            return (X509CRL) cf.generateCRL(bs);
+        } catch (CRLException e) {
+            throw new MarshalException("Cannot create X509CRL", e);
+        }
+    }
+
+    private ByteArrayInputStream unmarshalBase64Binary(Element elem) 
+	throws MarshalException {
+        try {
+            if (cf == null) {
+                cf = CertificateFactory.getInstance("X.509");
+	    }
+            return new ByteArrayInputStream(Base64.decode(elem));
+        } catch (CertificateException e) {
+            throw new MarshalException("Cannot create CertificateFactory", e);
+        } catch (Base64DecodingException bde) {
+            throw new MarshalException("Cannot decode Base64-encoded val", bde);
+        }
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof X509Data)) {
+            return false;
+	}
+        X509Data oxd = (X509Data) o;
+
+	List ocontent = oxd.getContent();
+	if (content.size() != ocontent.size()) {
+	    return false;
+	}
+
+	for (int i = 0; i < content.size(); i++) {
+	    Object x = content.get(i);
+	    Object ox = ocontent.get(i);
+	    if (x instanceof byte[]) {
+		if (!(ox instanceof byte[]) || 
+		    !Arrays.equals((byte[]) x, (byte[]) ox)) {
+		    return false;
+		} 
+	    } else {
+		if (!(x.equals(ox))) {
+		    return false;
+		}
+	    }
+	}
+
+	return true;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java b/src/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java
new file mode 100644
index 0000000..87285c6
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.X509IssuerSerial;
+
+import java.math.BigInteger;
+import javax.security.auth.x500.X500Principal;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based implementation of X509IssuerSerial.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMX509IssuerSerial extends DOMStructure 
+    implements X509IssuerSerial {
+
+    private final String issuerName;
+    private final BigInteger serialNumber;
+
+    /**
+     * Creates a <code>DOMX509IssuerSerial</code> containing the specified 
+     * issuer distinguished name/serial number pair.
+     *
+     * @param issuerName the X.509 issuer distinguished name in RFC 2253 
+     *    String format
+     * @param serialNumber the serial number
+     * @throws IllegalArgumentException if the format of <code>issuerName</code>
+     *    is not RFC 2253 compliant
+     * @throws NullPointerException if <code>issuerName</code> or 
+     *    <code>serialNumber</code> is <code>null</code> 
+     */
+    public DOMX509IssuerSerial(String issuerName, BigInteger serialNumber) {
+	if (issuerName == null) {
+	    throw new NullPointerException("issuerName cannot be null");
+	}
+	if (serialNumber == null) {
+	    throw new NullPointerException("serialNumber cannot be null");
+	}
+	// check that issuer distinguished name conforms to RFC 2253
+	new X500Principal(issuerName);
+	this.issuerName = issuerName;
+	this.serialNumber = serialNumber;
+    }
+
+    /**
+     * Creates a <code>DOMX509IssuerSerial</code> from an element.
+     *
+     * @param isElem an X509IssuerSerial element
+     */
+    public DOMX509IssuerSerial(Element isElem) {
+        Element iNElem = DOMUtils.getFirstChildElement(isElem);
+        Element sNElem = DOMUtils.getNextSiblingElement(iNElem);
+        issuerName = iNElem.getFirstChild().getNodeValue();
+	serialNumber = new BigInteger(sNElem.getFirstChild().getNodeValue());
+    }
+
+    public String getIssuerName() {
+	return issuerName;
+    }
+
+    public BigInteger getSerialNumber() {
+	return serialNumber;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element isElem = DOMUtils.createElement
+            (ownerDoc, "X509IssuerSerial", XMLSignature.XMLNS, dsPrefix);
+        Element inElem = DOMUtils.createElement
+            (ownerDoc, "X509IssuerName", XMLSignature.XMLNS, dsPrefix);
+        Element snElem = DOMUtils.createElement
+            (ownerDoc, "X509SerialNumber", XMLSignature.XMLNS, dsPrefix);
+        inElem.appendChild(ownerDoc.createTextNode(issuerName));
+        snElem.appendChild(ownerDoc.createTextNode(serialNumber.toString()));
+        isElem.appendChild(inElem);
+        isElem.appendChild(snElem);
+        parent.appendChild(isElem);
+    }
+
+    public boolean equals(Object obj) {
+	if (this == obj) {
+            return true;
+	}
+        if (!(obj instanceof X509IssuerSerial)) {
+            return false;
+	}
+        X509IssuerSerial ois = (X509IssuerSerial) obj;
+	return (issuerName.equals(ois.getIssuerName()) && 
+	    serialNumber.equals(ois.getSerialNumber()));
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java b/src/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java
new file mode 100644
index 0000000..e560cf4
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.*;
+
+import java.util.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * DOM-based implementation of XMLObject.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMXMLObject extends DOMStructure implements XMLObject {
+ 
+    private final String id;
+    private final String mimeType;
+    private final String encoding;
+    private final List content;
+
+    /**
+     * Creates an <code>XMLObject</code> from the specified parameters.
+     *
+     * @param content a list of {@link XMLStructure}s. The list
+     *    is defensively copied to protect against subsequent modification.
+     *    May be <code>null</code> or empty.
+     * @param id the Id (may be <code>null</code>)
+     * @param mimeType the mime type (may be <code>null</code>)
+     * @param encoding the encoding (may be <code>null</code>)
+     * @return an <code>XMLObject</code>
+     * @throws ClassCastException if <code>content</code> contains any
+     *    entries that are not of type {@link XMLStructure}
+     */
+    public DOMXMLObject(List content, String id, String mimeType, 
+	String encoding) {
+        if (content == null || content.isEmpty()) {
+            this.content = Collections.EMPTY_LIST;
+        } else {
+            List contentCopy = new ArrayList(content);
+            for (int i = 0, size = contentCopy.size(); i < size; i++) {
+                if (!(contentCopy.get(i) instanceof XMLStructure)) {
+                    throw new ClassCastException
+                        ("content["+i+"] is not a valid type");
+                }
+            }
+            this.content = Collections.unmodifiableList(contentCopy);
+        }
+	this.id = id;
+	this.mimeType = mimeType;
+	this.encoding = encoding;
+    }
+
+    /**
+     * Creates an <code>XMLObject</code> from an element.
+     *
+     * @param objElem an Object element
+     * @throws MarshalException if there is an error when unmarshalling
+     */
+    public DOMXMLObject(Element objElem, XMLCryptoContext context) 
+	throws MarshalException {
+	// unmarshal attributes
+        this.encoding = DOMUtils.getAttributeValue(objElem, "Encoding");
+        this.id = DOMUtils.getAttributeValue(objElem, "Id");
+        this.mimeType = DOMUtils.getAttributeValue(objElem, "MimeType");
+
+	NodeList nodes = objElem.getChildNodes();
+	int length = nodes.getLength();
+	List content = new ArrayList(length);
+	for (int i = 0; i < length; i++) {
+            Node child = nodes.item(i);
+            if (child.getNodeType() == Node.ELEMENT_NODE) {
+		Element childElem = (Element) child;
+                String tag = childElem.getLocalName();
+                if (tag.equals("Manifest")) {
+                    content.add(new DOMManifest(childElem, context));
+		    continue;
+                } else if (tag.equals("SignatureProperties")) {
+                    content.add(new DOMSignatureProperties(childElem));
+		    continue;
+                } else if (tag.equals("X509Data")) {
+                    content.add(new DOMX509Data(childElem));
+		    continue;
+		}
+		//@@@FIXME: check for other dsig structures
+	    }
+	    content.add(new javax.xml.crypto.dom.DOMStructure(child));
+	}
+        if (content.isEmpty()) {
+            this.content = Collections.EMPTY_LIST;
+        } else {
+            this.content = Collections.unmodifiableList(content);
+        }
+    }
+
+    public List getContent() {
+        return content;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public String getMimeType() {
+        return mimeType;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+        Document ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        Element objElem = DOMUtils.createElement
+            (ownerDoc, "Object", XMLSignature.XMLNS, dsPrefix);
+
+	// set attributes
+        DOMUtils.setAttributeID(objElem, "Id", id);
+	DOMUtils.setAttribute(objElem, "MimeType", mimeType);
+        DOMUtils.setAttribute(objElem, "Encoding", encoding);
+
+        // create and append any elements and mixed content, if necessary
+	for (int i = 0, size = content.size(); i < size; i++) {
+            XMLStructure object = (XMLStructure) content.get(i);
+            if (object instanceof DOMStructure) {
+                ((DOMStructure) object).marshal(objElem, dsPrefix, context);
+            } else {
+	        javax.xml.crypto.dom.DOMStructure domObject = 
+		    (javax.xml.crypto.dom.DOMStructure) object;
+		DOMUtils.appendChild(objElem, domObject.getNode());
+            }
+        }
+	    
+	parent.appendChild(objElem);
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+            return true;
+	}
+
+        if (!(o instanceof XMLObject)) {
+            return false;
+	}
+        XMLObject oxo = (XMLObject) o;
+
+	boolean idsEqual = (id == null ? oxo.getId() == null :
+	    id.equals(oxo.getId()));
+	boolean encodingsEqual = (encoding == null ? oxo.getEncoding() == null :
+	    encoding.equals(oxo.getEncoding()));
+	boolean mimeTypesEqual = (mimeType == null ? oxo.getMimeType() == null :
+	    mimeType.equals(oxo.getMimeType()));
+
+	return (idsEqual && encodingsEqual && mimeTypesEqual && 
+	    equalsContent(oxo.getContent()));
+    }
+
+    private boolean equalsContent(List otherContent) {
+	if (content.size() != otherContent.size()) {
+	    return false;
+	}
+	for (int i = 0, osize = otherContent.size(); i < osize; i++) {
+	    XMLStructure oxs = (XMLStructure) otherContent.get(i);
+	    XMLStructure xs = (XMLStructure) content.get(i);
+	    if (oxs instanceof javax.xml.crypto.dom.DOMStructure) {
+		if (!(xs instanceof javax.xml.crypto.dom.DOMStructure)) {
+		    return false;
+		}
+		Node onode = 
+		    ((javax.xml.crypto.dom.DOMStructure) oxs).getNode();
+		Node node = 
+		    ((javax.xml.crypto.dom.DOMStructure) xs).getNode();
+		if (!DOMUtils.nodesEqual(node, onode)) {
+		    return false;
+		}
+	    } else {
+		if (!(xs.equals(oxs))) {
+		    return false;
+		}
+	    }
+	}
+
+	return true;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java b/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java
new file mode 100644
index 0000000..0bd16e9
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java
@@ -0,0 +1,573 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * ===========================================================================
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+
+import java.io.*;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.util.Collections;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.utils.Base64;
+
+/**
+ * DOM-based implementation of XMLSignature.
+ *
+ * @author Sean Mullan
+ * @author Joyce Leung
+ */
+public final class DOMXMLSignature extends DOMStructure 
+    implements XMLSignature {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+    private String id;
+    private SignatureValue sv;
+    private KeyInfo ki;
+    private List objects;
+    private SignedInfo si;
+    private Document ownerDoc = null;
+    private Element localSigElem = null;
+    private Element sigElem = null;
+    private boolean validationStatus;
+    private boolean validated = false;
+    private KeySelectorResult ksr;
+    private HashMap signatureIdMap;
+
+    static {
+	org.apache.xml.security.Init.init();
+    }
+ 
+    /**
+     * Creates a <code>DOMXMLSignature</code> from the specified components.
+     *
+     * @param si the <code>SignedInfo</code>
+     * @param ki the <code>KeyInfo</code>, or <code>null</code> if not specified
+     * @param objs a list of <code>XMLObject</code>s or <code>null</code>
+     *  if not specified. The list is copied to protect against subsequent
+     *  modification.
+     * @param id an optional id (specify <code>null</code> to omit)
+     * @param signatureValueId an optional id (specify <code>null</code> to
+     *  omit)
+     * @throws NullPointerException if <code>si</code> is <code>null</code>
+     */
+    public DOMXMLSignature(SignedInfo si, KeyInfo ki, List objs, String id, 
+	String signatureValueId)
+    {
+        if (si == null) {
+            throw new NullPointerException("signedInfo cannot be null");
+        }
+        this.si = si;
+        this.id = id;
+        this.sv = new DOMSignatureValue(signatureValueId);
+        if (objs == null) {
+            this.objects = Collections.EMPTY_LIST;
+        } else {
+            List objsCopy = new ArrayList(objs);
+            for (int i = 0, size = objsCopy.size(); i < size; i++) {
+                if (!(objsCopy.get(i) instanceof XMLObject)) {
+                    throw new ClassCastException
+                        ("objs["+i+"] is not an XMLObject");
+                }
+            }
+            this.objects = Collections.unmodifiableList(objsCopy);
+        }
+        this.ki = ki;                
+    }
+
+    /**
+     * Creates a <code>DOMXMLSignature</code> from XML.
+     *
+     * @param sigElem Signature element
+     * @throws MarshalException if XMLSignature cannot be unmarshalled
+     */
+    public DOMXMLSignature(Element sigElem, XMLCryptoContext context) 
+	throws MarshalException {
+        localSigElem = sigElem;
+        ownerDoc = localSigElem.getOwnerDocument();
+
+        // get Id attribute, if specified
+	id = DOMUtils.getAttributeValue(localSigElem, "Id");
+
+	// unmarshal SignedInfo
+	Element siElem = DOMUtils.getFirstChildElement(localSigElem);
+	si = new DOMSignedInfo(siElem, context);
+
+	// unmarshal SignatureValue 
+	Element sigValElem = DOMUtils.getNextSiblingElement(siElem);
+	sv = new DOMSignatureValue(sigValElem);
+
+	// unmarshal KeyInfo, if specified
+	Element nextSibling = DOMUtils.getNextSiblingElement(sigValElem);
+	if (nextSibling != null && nextSibling.getLocalName().equals("KeyInfo")) {
+	    ki = new DOMKeyInfo(nextSibling, context);
+	    nextSibling = DOMUtils.getNextSiblingElement(nextSibling);
+	}
+
+	// unmarshal Objects, if specified
+	if (nextSibling == null) {
+	    objects = Collections.EMPTY_LIST;
+	} else {
+	    List tempObjects = new ArrayList();
+	    while (nextSibling != null) {
+	        tempObjects.add(new DOMXMLObject(nextSibling, context));
+	        nextSibling = DOMUtils.getNextSiblingElement(nextSibling);
+	    }
+	    objects = Collections.unmodifiableList(tempObjects);	
+	}
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public KeyInfo getKeyInfo() {
+        return ki;
+    }
+
+    public SignedInfo getSignedInfo() {
+        return si;
+    }
+
+    public List getObjects() {
+        return objects;
+    }
+
+    public SignatureValue getSignatureValue() {
+	return sv;
+    }
+
+    public KeySelectorResult getKeySelectorResult() {
+	return ksr;
+    }
+
+    public void marshal(Node parent, String dsPrefix, DOMCryptoContext context)
+	throws MarshalException {
+	marshal(parent, null, dsPrefix, context);
+    }
+
+    public void marshal(Node parent, Node nextSibling, String dsPrefix,
+        DOMCryptoContext context) throws MarshalException {
+        ownerDoc = DOMUtils.getOwnerDocument(parent);
+
+        sigElem = DOMUtils.createElement
+            (ownerDoc, "Signature", XMLSignature.XMLNS, dsPrefix);
+
+        // append xmlns attribute
+        //XXX I think this is supposed to be automatically inserted when
+        //XXX serializing a DOM2 tree, but doesn't seem to work with JAXP/Xalan
+        if (dsPrefix == null) {
+            sigElem.setAttributeNS
+		("http://www.w3.org/2000/xmlns/", "xmlns", XMLSignature.XMLNS);
+        } else {
+            sigElem.setAttributeNS
+		("http://www.w3.org/2000/xmlns/", "xmlns:" + dsPrefix, 
+		 XMLSignature.XMLNS);
+        }
+
+	// create and append SignedInfo element
+	((DOMSignedInfo) si).marshal(sigElem, dsPrefix, context);
+
+        // create and append SignatureValue element
+	((DOMSignatureValue) sv).marshal(sigElem, dsPrefix, context);
+
+	// create and append KeyInfo element if necessary
+	if (ki != null) {
+	    ((DOMKeyInfo) ki).marshal(sigElem, null, dsPrefix, context);
+	}
+
+	// create and append Object elements if necessary
+	for (int i = 0, size = objects.size(); i < size; i++) {
+	    ((DOMXMLObject) objects.get(i)).marshal(sigElem, dsPrefix, context);
+	}
+
+	// append Id attribute
+        DOMUtils.setAttributeID(sigElem, "Id", id);
+	    
+	parent.insertBefore(sigElem, nextSibling);
+    }
+
+    public boolean validate(XMLValidateContext vc) 
+	throws XMLSignatureException {
+
+	if (vc == null) {
+	    throw new NullPointerException("validateContext is null");
+	}
+
+	if (validated) {
+	    return validationStatus;
+	}
+
+        // validate all References
+        List refs = this.si.getReferences();
+        boolean validateRefs = true;
+        for (int i = 0, size = refs.size(); validateRefs && i < size; i++) {
+            Reference ref = (Reference) refs.get(i);
+            boolean refValid = ref.validate(vc);
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "Reference[" + ref.getURI() + "] is valid: "
+		    + refValid);
+	    }
+            validateRefs &= refValid;
+        }
+        if (!validateRefs) {
+	    if (log.isLoggable(Level.FINE)) {
+                log.log(Level.FINE, "Couldn't validate the References");
+	    }
+	    validationStatus = false;
+	    validated = true;
+	    return validationStatus;
+        }
+
+	// validate the signature
+	boolean sigValidity = sv.validate(vc);
+	if (!sigValidity) {
+	    validationStatus = false;
+	    validated = true;
+	    return validationStatus;
+        }
+
+	// validate Manifests, if property set
+        boolean validateMans = true;
+	if (Boolean.TRUE.equals(vc.getProperty
+	    ("org.jcp.xml.dsig.validateManifests"))) {
+
+	    for (int i=0, size=objects.size(); validateMans && i < size; i++) {
+                XMLObject xo = (XMLObject) objects.get(i);
+                List content = xo.getContent();
+		int csize = content.size();
+                for (int j = 0; validateMans && j < csize; j++) {
+                    XMLStructure xs = (XMLStructure) content.get(j);
+                    if (xs instanceof Manifest) {
+	    		if (log.isLoggable(Level.FINE)) {
+                            log.log(Level.FINE, "validating manifest");
+			}
+                        Manifest man = (Manifest) xs;
+                        List manRefs = man.getReferences();
+			int rsize = manRefs.size();
+                        for (int k = 0; validateMans && k < rsize; k++) {
+                            Reference ref = (Reference) manRefs.get(k);
+                            boolean refValid = ref.validate(vc);
+	    		    if (log.isLoggable(Level.FINE)) {
+                                log.log(Level.FINE, "Manifest ref[" 
+				    + ref.getURI() + "] is valid: " + refValid);
+			    }
+			    validateMans &= refValid;
+			}
+                    }
+                }
+            }
+	}
+
+	validationStatus = validateMans;
+	validated = true;
+	return validationStatus;
+    }
+
+    public void sign(XMLSignContext signContext) 
+	throws MarshalException, XMLSignatureException {
+	if (signContext == null) {
+	    throw new NullPointerException("signContext cannot be null");
+	}
+        DOMSignContext context = (DOMSignContext) signContext;
+        if (context != null) {
+            marshal(context.getParent(), context.getNextSibling(),
+                DOMUtils.getSignaturePrefix(context), context);
+        }
+
+	// generate references and signature value
+	List allReferences = new ArrayList(si.getReferences());
+
+	// traverse the Signature and register all objects with IDs that
+	// may contain References
+	signatureIdMap = new HashMap();
+	signatureIdMap.put(id, this);
+	signatureIdMap.put(si.getId(), si);
+	List refs = si.getReferences();
+	for (int i = 0, size = refs.size(); i < size; i++) {
+            Reference ref = (Reference) refs.get(i);
+            signatureIdMap.put(ref.getId(), ref);
+	}
+	for (int i = 0, size = objects.size(); i < size; i++) {
+            XMLObject obj = (XMLObject) objects.get(i);
+            signatureIdMap.put(obj.getId(), obj);
+            List content = obj.getContent();
+	    for (int j = 0, csize = content.size(); j < csize; j++) {
+		XMLStructure xs = (XMLStructure) content.get(j);
+		if (xs instanceof Manifest) {
+                    Manifest man = (Manifest) xs;
+                    signatureIdMap.put(man.getId(), man);
+                    List manRefs = man.getReferences();
+		    for (int k = 0, msize = manRefs.size(); k < msize; k++) {
+			Reference ref = (Reference) manRefs.get(k);
+			allReferences.add(ref);
+			signatureIdMap.put(ref.getId(), ref);
+                    }
+		}
+            }
+	}
+
+        // generate/digest each reference
+	for (int i = 0, size = allReferences.size(); i < size; i++) {
+            DOMReference ref = (DOMReference) allReferences.get(i);
+            digestReference(ref, signContext);
+	}
+
+        // do final sweep to digest any references that were skipped or missed
+	for (int i = 0, size = allReferences.size(); i < size; i++) {
+            DOMReference ref = (DOMReference) allReferences.get(i);
+            if (ref.isDigested()) {
+		continue;
+            }
+            ref.digest(signContext);
+	}
+
+        Key signingKey = null;
+	KeySelectorResult ksr = null;
+	try {
+            ksr = signContext.getKeySelector().select
+		(ki, KeySelector.Purpose.SIGN,
+		si.getSignatureMethod(), signContext);
+            signingKey = ksr.getKey();
+            if (signingKey == null) {
+		throw new XMLSignatureException("the keySelector did not " +
+            	"find a signing key");
+            }
+	} catch (KeySelectorException kse) {
+            throw new XMLSignatureException("cannot find signing key", kse);
+	}
+
+	// calculate signature value
+	byte[] val = null;
+	try {
+            val = ((DOMSignatureMethod) si.getSignatureMethod()).sign
+		(signingKey, (DOMSignedInfo) si, signContext);
+	} catch (InvalidKeyException ike) {
+            throw new XMLSignatureException(ike);
+	}
+
+	if (log.isLoggable(Level.FINE)) {
+            log.log(Level.FINE, "SignatureValue = " + val);        
+	}
+	((DOMSignatureValue) sv).setValue(val);
+
+        this.localSigElem = sigElem;   
+	this.ksr = ksr;
+    }
+
+    public boolean equals(Object o) {
+	if (this == o) {
+	    return true;
+	}
+
+	if (!(o instanceof XMLSignature)) {
+	    return false;
+	}
+	XMLSignature osig = (XMLSignature) o;
+
+	boolean idEqual = 
+	    (id == null ? osig.getId() == null : id.equals(osig.getId()));
+	boolean keyInfoEqual = 
+	    (ki == null ? osig.getKeyInfo() == null : 
+	     ki.equals(osig.getKeyInfo()));
+
+	return (idEqual && keyInfoEqual && 
+	    sv.equals(osig.getSignatureValue()) &&
+	    si.equals(osig.getSignedInfo()) && 
+	    objects.equals(osig.getObjects()));
+    }
+
+    private void digestReference(DOMReference ref, XMLSignContext signContext)
+	throws XMLSignatureException {
+	if (ref.isDigested()) {
+       	    return;
+	}
+        // check dependencies
+	String uri = ref.getURI();
+	if (Utils.sameDocumentURI(uri)) {
+            String id = Utils.parseIdFromSameDocumentURI(uri);
+            if (id != null && signatureIdMap.containsKey(id)) {
+		Object obj = signatureIdMap.get(id);
+		if (obj instanceof DOMReference) {
+                    digestReference((DOMReference) obj, signContext);
+		} else if (obj instanceof Manifest) {
+                    Manifest man = (Manifest) obj;
+                    List manRefs = man.getReferences();
+		    for (int i = 0, size = manRefs.size(); i < size; i++) {
+			digestReference
+                 	    ((DOMReference) manRefs.get(i), signContext);
+		    }
+		}
+            }
+	    // if uri="" and there are XPath Transforms, there may be
+	    // reference dependencies in the XPath Transform - so be on
+	    // the safe side, and skip and do at end in the final sweep
+	    if (uri.length() == 0) {
+		List transforms = ref.getTransforms();
+		for (int i = 0, size = transforms.size(); i < size; i++) {
+		    Transform transform = (Transform) transforms.get(i);
+		    String transformAlg = transform.getAlgorithm();
+		    if (transformAlg.equals(Transform.XPATH) ||
+			transformAlg.equals(Transform.XPATH2)) {
+                	return;
+                    }
+            	}
+            }
+	}
+	ref.digest(signContext);
+    }
+
+    public class DOMSignatureValue extends DOMStructure 
+	implements SignatureValue {
+
+	private String id;
+        private byte[] value;
+        private String valueBase64;
+        private Element sigValueElem;
+	private boolean validated = false;
+	private boolean validationStatus;
+
+	DOMSignatureValue(String id) {
+	    this.id = id;
+	}
+
+	DOMSignatureValue(Element sigValueElem) throws MarshalException {
+	    try {
+	        // base64 decode signatureValue
+	        value = Base64.decode(sigValueElem);
+	    } catch (Base64DecodingException bde) {
+	        throw new MarshalException(bde);
+	    }
+
+	    id = DOMUtils.getAttributeValue(sigValueElem, "Id");
+	    this.sigValueElem = sigValueElem;
+	}
+
+	public String getId() {
+	    return id;
+	}
+
+        public byte[] getValue() {
+	    return (value == null) ? null : (byte[]) value.clone();
+        }
+
+        public boolean validate(XMLValidateContext validateContext) 
+	    throws XMLSignatureException {
+
+	    if (validateContext == null) {
+		throw new NullPointerException("context cannot be null");
+	    }
+
+	    if (validated) {
+		return validationStatus;
+	    }
+
+	    // get validating key
+	    SignatureMethod sm = si.getSignatureMethod();
+	    Key validationKey = null;
+	    KeySelectorResult ksResult;
+	    try {
+		ksResult = validateContext.getKeySelector().select
+		    (ki, KeySelector.Purpose.VERIFY, sm, validateContext);
+		validationKey = ksResult.getKey();
+		if (validationKey == null) {
+		    throw new XMLSignatureException("the keyselector did " +
+			"not find a validation key");
+		}
+	    } catch (KeySelectorException kse) {
+		throw new XMLSignatureException("cannot find validation " +
+		    "key", kse);
+	    }
+
+	    // canonicalize SignedInfo and verify signature
+	    try {
+		validationStatus = ((DOMSignatureMethod) sm).verify
+		    (validationKey, (DOMSignedInfo) si, value, validateContext);
+	    } catch (Exception e) {
+		throw new XMLSignatureException(e);
+	    }
+
+	    validated = true;
+	    ksr = ksResult;
+	    return validationStatus;
+        }
+
+        public boolean equals(Object o) {
+	    if (this == o) {
+	        return true;
+	    }
+
+	    if (!(o instanceof SignatureValue)) {
+	        return false;
+	    }
+	    SignatureValue osv = (SignatureValue) o;
+
+	    boolean idEqual = 
+	        (id == null ? osv.getId() == null : id.equals(osv.getId()));
+
+	    //XXX compare signature values?
+	    return idEqual;
+	}
+
+	public void marshal(Node parent, String dsPrefix,
+	    DOMCryptoContext context) throws MarshalException {
+
+            // create SignatureValue element
+            sigValueElem = DOMUtils.createElement
+                (ownerDoc, "SignatureValue", XMLSignature.XMLNS, dsPrefix);
+	    if (valueBase64 != null) {
+	        sigValueElem.appendChild(ownerDoc.createTextNode(valueBase64));
+	    }
+
+            // append Id attribute, if specified
+            DOMUtils.setAttributeID(sigValueElem, "Id", id);
+            parent.appendChild(sigValueElem);
+	}
+
+	void setValue(byte[] value) {
+	    this.value = value;
+            valueBase64 = Base64.encode(value);
+            sigValueElem.appendChild(ownerDoc.createTextNode(valueBase64));
+	}
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java b/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java
new file mode 100644
index 0000000..768b74a
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+
+import java.security.*;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.List;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * DOM-based implementation of XMLSignatureFactory.
+ *
+ * @author Sean Mullan
+ */
+public final class DOMXMLSignatureFactory extends XMLSignatureFactory {
+
+    static {
+        AccessController.doPrivileged(new PrivilegedAction() {
+            public Object run() {
+                Security.addProvider(new XMLDSigRI());
+                return null;
+            }
+        });
+    }
+
+    /**
+     * Initializes a new instance of this class.
+     */
+    public DOMXMLSignatureFactory() {}
+
+    public XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki) {
+	return new DOMXMLSignature(si, ki, null, null, null);
+    }
+
+    public XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki,
+        List objects, String id, String signatureValueId) {
+	return new DOMXMLSignature(si, ki, objects, id, signatureValueId);
+    }
+
+    public Reference newReference(String uri, DigestMethod dm) {
+	return newReference(uri, dm, null, null, null);
+    }
+
+    public Reference newReference(String uri, DigestMethod dm, List transforms,
+        String type, String id) {
+	return new DOMReference(uri, type, dm, transforms, id);
+    }
+
+    public Reference newReference(String uri, DigestMethod dm, 
+	List appliedTransforms, Data result, List transforms, String type, 
+	String id) {
+	if (appliedTransforms == null) {
+	    throw new NullPointerException("appliedTransforms cannot be null");
+	}
+	if (appliedTransforms.isEmpty()) {
+	    throw new NullPointerException("appliedTransforms cannot be empty");
+	}
+	if (result == null) {
+	    throw new NullPointerException("result cannot be null");
+	}
+	return new DOMReference
+	    (uri, type, dm, appliedTransforms, result, transforms, id);
+    }
+
+    public Reference newReference(String uri, DigestMethod dm, List transforms,
+        String type, String id, byte[] digestValue) {
+	if (digestValue == null) {
+	    throw new NullPointerException("digestValue cannot be null");
+	}
+	return new DOMReference
+	    (uri, type, dm, null, null, transforms, id, digestValue);
+    }
+
+    public SignedInfo newSignedInfo(CanonicalizationMethod cm,
+	SignatureMethod sm, List references) {
+	return newSignedInfo(cm, sm, references, null);
+    }
+
+    public SignedInfo newSignedInfo(CanonicalizationMethod cm,
+	SignatureMethod sm, List references, String id) {
+	return new DOMSignedInfo(cm, sm, references, id);
+    }
+
+    // Object factory methods
+    public XMLObject newXMLObject(List content, String id, String mimeType,
+	String encoding) {
+	return new DOMXMLObject(content, id, mimeType, encoding);
+    }
+
+    public Manifest newManifest(List references) {
+	return newManifest(references, null);
+    }
+
+    public Manifest newManifest(List references, String id) {
+	return new DOMManifest(references, id);
+    }
+
+    public SignatureProperties newSignatureProperties(List props, String id) {
+	return new DOMSignatureProperties(props, id);
+    }
+
+    public SignatureProperty newSignatureProperty
+	(List info, String target, String id) {
+	return new DOMSignatureProperty(info, target, id);
+    }
+
+    public XMLSignature unmarshalXMLSignature(XMLValidateContext context)
+        throws MarshalException {
+
+        if (context == null) {
+            throw new NullPointerException("context cannot be null");
+        }
+	return unmarshal(((DOMValidateContext) context).getNode(), context);
+    }
+
+    public XMLSignature unmarshalXMLSignature(XMLStructure xmlStructure)
+        throws MarshalException {
+
+        if (xmlStructure == null) {
+            throw new NullPointerException("xmlStructure cannot be null");
+        }
+	return unmarshal
+	    (((javax.xml.crypto.dom.DOMStructure) xmlStructure).getNode(), 
+	     null);
+    }
+
+    private XMLSignature unmarshal(Node node, XMLValidateContext context) 
+	throws MarshalException {
+
+        node.normalize();
+        
+        Element element = null;
+        if (node.getNodeType() == Node.DOCUMENT_NODE) {
+            element = ((Document) node).getDocumentElement();
+        } else if (node.getNodeType() == Node.ELEMENT_NODE) {
+            element = (Element) node;
+        } else {
+            throw new MarshalException
+		("Signature element is not a proper Node");
+        }
+
+        // check tag
+        String tag = element.getLocalName();
+	if (tag == null) {
+	    throw new MarshalException("Document implementation must " +
+		"support DOM Level 2 and be namespace aware");
+	}
+        if (tag.equals("Signature")) {
+            return new DOMXMLSignature(element, context);
+        } else {
+            throw new MarshalException("invalid Signature tag: " + tag);
+        }
+    }
+
+    public boolean isFeatureSupported(String feature) {
+        if (feature == null) {
+            throw new NullPointerException();
+        } else {
+            return false;
+        }
+    }
+
+    public DigestMethod newDigestMethod(String algorithm,
+        DigestMethodParameterSpec params) throws NoSuchAlgorithmException,
+        InvalidAlgorithmParameterException {
+	if (algorithm == null) {
+	    throw new NullPointerException();
+	}
+        if (algorithm.equals(DigestMethod.SHA1)) {
+            return new DOMSHA1DigestMethod(params);
+	} else {
+	    throw new NoSuchAlgorithmException("unsupported algorithm");
+	}
+    }
+
+    public SignatureMethod newSignatureMethod(String algorithm,
+        SignatureMethodParameterSpec params) throws NoSuchAlgorithmException,
+        InvalidAlgorithmParameterException {
+	if (algorithm == null) {
+	    throw new NullPointerException();
+	}
+	if (algorithm.equals(SignatureMethod.HMAC_SHA1)) {
+            return new DOMHMACSignatureMethod(params);
+        } else if (algorithm.equals(SignatureMethod.RSA_SHA1)) {
+            return new DOMRSASignatureMethod(params);
+        } else if (algorithm.equals(SignatureMethod.DSA_SHA1)) {
+            return new DOMDSASignatureMethod(params);
+	} else {
+	    throw new NoSuchAlgorithmException("unsupported algorithm");
+	}
+    }
+
+    public Transform newTransform(String algorithm,
+        TransformParameterSpec params) throws NoSuchAlgorithmException,
+        InvalidAlgorithmParameterException {
+	TransformService spi = TransformService.getInstance(algorithm, "DOM");
+	spi.init(params);
+	return new DOMTransform(spi);
+    }
+
+    public Transform newTransform(String algorithm,
+        XMLStructure params) throws NoSuchAlgorithmException,
+        InvalidAlgorithmParameterException {
+	TransformService spi = TransformService.getInstance(algorithm, "DOM");
+	if (params == null) {
+	    spi.init(null);
+	} else {
+	    spi.init(params, null);
+	}
+	return new DOMTransform(spi);
+    }
+
+    public CanonicalizationMethod newCanonicalizationMethod(String algorithm,
+        C14NMethodParameterSpec params) throws NoSuchAlgorithmException,
+        InvalidAlgorithmParameterException {
+	TransformService spi = TransformService.getInstance(algorithm, "DOM");
+	spi.init(params);
+	return new DOMCanonicalizationMethod(spi);
+    }
+
+    public CanonicalizationMethod newCanonicalizationMethod(String algorithm,
+        XMLStructure params) throws NoSuchAlgorithmException,
+        InvalidAlgorithmParameterException {
+	TransformService spi = TransformService.getInstance(algorithm, "DOM");
+	if (params == null) {
+	    spi.init(null);
+	} else {
+	    spi.init(params, null);
+	}
+	return new DOMCanonicalizationMethod(spi);
+    }
+
+    public URIDereferencer getURIDereferencer() {
+	return DOMURIDereferencer.INSTANCE;
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java b/src/org/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java
new file mode 100644
index 0000000..66fea4b
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMXPathFilter2Transform.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * ===========================================================================
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathType;
+import javax.xml.crypto.dsig.spec.XPathFilter2ParameterSpec;
+import java.security.InvalidAlgorithmParameterException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+/**
+ * DOM-based implementation of XPath Filter 2.0 Transform.
+ * (Uses Apache XML-Sec Transform implementation)
+ *
+ * @author Joyce Leung
+ */
+public final class DOMXPathFilter2Transform extends ApacheTransform {
+
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+        if (params == null) {
+	    throw new InvalidAlgorithmParameterException("params are required");
+	} else if (!(params instanceof XPathFilter2ParameterSpec)) {
+	    throw new InvalidAlgorithmParameterException
+		("params must be of type XPathFilter2ParameterSpec");
+        }
+	this.params = params;
+    }
+
+    public void init(XMLStructure parent, XMLCryptoContext context)
+        throws InvalidAlgorithmParameterException {
+
+	super.init(parent, context);
+	try {
+	    unmarshalParams(DOMUtils.getFirstChildElement(transformElem));
+	} catch (MarshalException me) {
+	    throw (InvalidAlgorithmParameterException)
+		new InvalidAlgorithmParameterException().initCause(me);
+	}
+    }
+
+    private void unmarshalParams(Element curXPathElem) throws MarshalException {
+        List list = new ArrayList();
+	while (curXPathElem != null) {
+	    String xPath = curXPathElem.getFirstChild().getNodeValue();
+	    String filterVal = 
+		DOMUtils.getAttributeValue(curXPathElem, "Filter");
+	    if (filterVal == null) {
+		throw new MarshalException("filter cannot be null");
+	    }
+	    XPathType.Filter filter = null;
+            if (filterVal.equals("intersect")) {
+                filter = XPathType.Filter.INTERSECT;
+            } else if (filterVal.equals("subtract")) {   
+                filter = XPathType.Filter.SUBTRACT;
+            } else if (filterVal.equals("union")) {
+                filter = XPathType.Filter.UNION;
+            } else {
+                throw new MarshalException("Unknown XPathType filter type" 
+		    + filterVal);
+            }
+	    NamedNodeMap attributes = curXPathElem.getAttributes();
+	    if (attributes != null) {
+		int length = attributes.getLength();
+	        Map namespaceMap = new HashMap(length);
+	        for (int i = 0; i < length; i++) {
+	    	    Attr attr = (Attr) attributes.item(i);
+	    	    String prefix = attr.getPrefix();
+	    	    if (prefix != null && prefix.equals("xmlns")) {
+	                namespaceMap.put(attr.getLocalName(), attr.getValue());
+            	    }
+                }
+	        list.add(new XPathType(xPath, filter, namespaceMap));
+	    } else {
+	        list.add(new XPathType(xPath, filter));
+	    }
+
+	    curXPathElem = DOMUtils.getNextSiblingElement(curXPathElem);
+	}
+        this.params = new XPathFilter2ParameterSpec(list);
+    }
+
+    public void marshalParams(XMLStructure parent, XMLCryptoContext context)
+        throws MarshalException {
+
+	super.marshalParams(parent, context);
+	XPathFilter2ParameterSpec xp = 
+	    (XPathFilter2ParameterSpec) getParameterSpec();
+        String prefix = DOMUtils.getNSPrefix(context, Transform.XPATH2);
+	String qname = (prefix == null) ? "xmlns" : "xmlns:" + prefix;
+	List list = xp.getXPathList();
+	for (int i = 0, size = list.size(); i < size; i++) {
+            XPathType xpathType = (XPathType) list.get(i);
+            Element elem = DOMUtils.createElement
+                (ownerDoc, "XPath", Transform.XPATH2, prefix);
+            elem.appendChild
+		(ownerDoc.createTextNode(xpathType.getExpression()));
+	    DOMUtils.setAttribute
+		(elem, "Filter", xpathType.getFilter().toString());
+            elem.setAttributeNS("http://www.w3.org/2000/xmlns/", qname, 
+	        Transform.XPATH2);
+
+            // add namespace attributes, if necessary
+            Iterator it = xpathType.getNamespaceMap().entrySet().iterator();
+            while (it.hasNext()) {
+                Map.Entry entry = (Map.Entry) it.next();
+                elem.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:"
+                    + (String) entry.getKey(), (String) entry.getValue());
+            }
+
+            transformElem.appendChild(elem);
+        }
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java b/src/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java
new file mode 100644
index 0000000..035e820
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMXPathTransform.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathFilterParameterSpec;
+import java.security.InvalidAlgorithmParameterException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+/**
+ * DOM-based implementation of XPath Filtering Transform.
+ * (Uses Apache XML-Sec Transform implementation)
+ *
+ * @author Sean Mullan
+ */
+public final class DOMXPathTransform extends ApacheTransform {
+ 
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+        if (params == null) {
+	    throw new InvalidAlgorithmParameterException("params are required");
+	} else if (!(params instanceof XPathFilterParameterSpec)) {
+	    throw new InvalidAlgorithmParameterException
+		("params must be of type XPathFilterParameterSpec");
+        }
+	this.params = params;
+    }
+
+    public void init(XMLStructure parent, XMLCryptoContext context)
+        throws InvalidAlgorithmParameterException {
+
+	super.init(parent, context);
+	unmarshalParams(DOMUtils.getFirstChildElement(transformElem));
+    }
+
+    private void unmarshalParams(Element paramsElem) {
+        String xPath = paramsElem.getFirstChild().getNodeValue();
+        // create a Map of namespace prefixes
+        NamedNodeMap attributes = paramsElem.getAttributes();
+        if (attributes != null) {
+	    int length = attributes.getLength();
+            Map namespaceMap = new HashMap(length);
+	    for (int i = 0; i < length; i++) {
+	        Attr attr = (Attr) attributes.item(i);
+	        String prefix = attr.getPrefix();
+	        if (prefix != null && prefix.equals("xmlns")) {
+	            namespaceMap.put(attr.getLocalName(), attr.getValue());
+	        }
+	    }
+	    this.params = new XPathFilterParameterSpec(xPath, namespaceMap);
+	} else {
+	    this.params = new XPathFilterParameterSpec(xPath);
+	}
+    }
+
+    public void marshalParams(XMLStructure parent, XMLCryptoContext context)
+        throws MarshalException {
+
+	super.marshalParams(parent, context);
+	XPathFilterParameterSpec xp = 
+	    (XPathFilterParameterSpec) getParameterSpec();
+	Element xpathElem = DOMUtils.createElement
+	    (ownerDoc, "XPath", XMLSignature.XMLNS, 
+	     DOMUtils.getSignaturePrefix(context));
+	xpathElem.appendChild(ownerDoc.createTextNode(xp.getXPath()));
+
+	// add namespace attributes, if necessary
+	Iterator i = xp.getNamespaceMap().entrySet().iterator();
+	while (i.hasNext()) {
+	    Map.Entry entry = (Map.Entry) i.next();
+	    xpathElem.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:" 
+		+ (String) entry.getKey(), (String) entry.getValue());
+	}
+	    
+	transformElem.appendChild(xpathElem);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java b/src/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java
new file mode 100644
index 0000000..4b3aef2
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/DOMXSLTTransform.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.security.InvalidAlgorithmParameterException;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.spec.XSLTTransformParameterSpec;
+
+/**
+ * DOM-based implementation of XSLT Transform.
+ * (Uses Apache XML-Sec Transform implementation)
+ *
+ * @author Sean Mullan
+ */
+public final class DOMXSLTTransform extends ApacheTransform {
+ 
+    public void init(TransformParameterSpec params)
+        throws InvalidAlgorithmParameterException {
+	if (params == null) {
+	    throw new InvalidAlgorithmParameterException("params are required");
+	}
+	if (!(params instanceof XSLTTransformParameterSpec)) {
+	    throw new InvalidAlgorithmParameterException("unrecognized params");
+	}
+	this.params = params;
+    }
+
+    public void init(XMLStructure parent, XMLCryptoContext context)
+        throws InvalidAlgorithmParameterException {
+
+	super.init(parent, context);
+	unmarshalParams(DOMUtils.getFirstChildElement(transformElem));
+    }
+
+    private void unmarshalParams(Element sheet) {
+	this.params = new XSLTTransformParameterSpec
+	    (new javax.xml.crypto.dom.DOMStructure(sheet));
+    }
+
+    public void marshalParams(XMLStructure parent, XMLCryptoContext context)
+        throws MarshalException {
+	super.marshalParams(parent, context);
+	XSLTTransformParameterSpec xp = 
+	    (XSLTTransformParameterSpec) getParameterSpec();
+	Node xsltElem = 
+	    ((javax.xml.crypto.dom.DOMStructure) xp.getStylesheet()).getNode();
+	DOMUtils.appendChild(transformElem, xsltElem);
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/Utils.java b/src/org/jcp/xml/dsig/internal/dom/Utils.java
new file mode 100644
index 0000000..75a7650
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/Utils.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.*;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * Miscellaneous static utility methods for use in JSR 105 RI.
+ *
+ * @author Sean Mullan
+ */
+public final class Utils {
+
+    private Utils() {}
+
+    public static byte[] readBytesFromStream(InputStream is) 
+	throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] buf = new byte[1024];
+        while (true) {
+            int read = is.read(buf);
+	    if (read == -1) { // EOF
+		break;
+	    }
+            baos.write(buf, 0, read);
+            if (read < 1024) {
+                break;
+            }
+        }
+        return baos.toByteArray();
+    }
+
+    /**
+     * Converts an Iterator to a Set of Nodes, according to the XPath
+     * Data Model.
+     *
+     * @param i the Iterator
+     * @return the Set of Nodes
+     */
+    static Set toNodeSet(Iterator i) {
+	Set nodeSet = new HashSet();
+	while (i.hasNext()) {
+	    Node n = (Node) i.next();
+	    nodeSet.add(n);
+	    // insert attributes nodes to comply with XPath
+	    if (n.getNodeType() == Node.ELEMENT_NODE) {
+	        NamedNodeMap nnm = n.getAttributes();
+		for (int j = 0, length = nnm.getLength(); j < length; j++) {
+		    nodeSet.add(nnm.item(j));
+		}
+	    }
+	}
+	return nodeSet;
+    }
+
+    /**
+     * Returns the ID from a same-document URI (ex: "#id")
+     */
+    public static String parseIdFromSameDocumentURI(String uri) {
+	if (uri.length() == 0) {
+	    return null;
+	}
+	String id = uri.substring(1);
+	if (id != null && id.startsWith("xpointer(id(")) {
+            int i1 = id.indexOf('\'');
+            int i2 = id.indexOf('\'', i1+1);
+            id = id.substring(i1+1, i2);
+	}
+	return id;
+    }
+
+    /**
+     * Returns true if uri is a same-document URI, false otherwise.
+     */
+    public static boolean sameDocumentURI(String uri) {
+	return (uri != null && (uri.length() == 0 || uri.charAt(0) == '#'));
+    }
+}
diff --git a/src/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java b/src/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java
new file mode 100644
index 0000000..c9fab1f
--- /dev/null
+++ b/src/org/jcp/xml/dsig/internal/dom/XMLDSigRI.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * ===========================================================================
+ *
+ * (C) Copyright IBM Corp. 2003 All Rights Reserved.
+ *
+ * ===========================================================================
+ */
+/*
+ * Portions copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import java.util.*;
+import java.security.*;
+
+import javax.xml.crypto.dsig.*;
+
+/**
+ * The XMLDSig RI Provider.
+ *
+ * @author Joyce Leung
+ */
+
+/**
+ * Defines the XMLDSigRI provider.
+ */
+
+public final class XMLDSigRI extends Provider {
+
+    static final long serialVersionUID = -5049765099299494554L;
+
+    private static final String INFO = "XMLDSig " + 
+    "(DOM XMLSignatureFactory; DOM KeyInfoFactory)";
+
+    public XMLDSigRI() {
+	/* We are the XMLDSig provider */
+	super("XMLDSig", 1.0, INFO);
+	
+	final Map map = new HashMap();
+        map.put("XMLSignatureFactory.DOM", 
+	        "org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory");
+        map.put("KeyInfoFactory.DOM", 
+	        "org.jcp.xml.dsig.internal.dom.DOMKeyInfoFactory");
+
+
+	// Inclusive C14N
+	map.put((String)"TransformService." + CanonicalizationMethod.INCLUSIVE,
+		"org.jcp.xml.dsig.internal.dom.DOMCanonicalXMLC14NMethod");
+	map.put("Alg.Alias.TransformService.INCLUSIVE", 
+		CanonicalizationMethod.INCLUSIVE);
+	map.put((String)"TransformService." + CanonicalizationMethod.INCLUSIVE +
+		" MechanismType", "DOM");
+
+	// InclusiveWithComments C14N
+	map.put((String) "TransformService." + 
+		CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
+		"org.jcp.xml.dsig.internal.dom.DOMCanonicalXMLC14NMethod");
+	map.put("Alg.Alias.TransformService.INCLUSIVE_WITH_COMMENTS", 
+		CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS);
+	map.put((String) "TransformService." + 
+		CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS + 
+		" MechanismType", "DOM");
+
+	// Exclusive C14N
+	map.put((String) "TransformService." + CanonicalizationMethod.EXCLUSIVE,
+		"org.jcp.xml.dsig.internal.dom.DOMExcC14NMethod");
+	map.put("Alg.Alias.TransformService.EXCLUSIVE", 
+		CanonicalizationMethod.EXCLUSIVE);
+	map.put((String)"TransformService." + CanonicalizationMethod.EXCLUSIVE +
+		" MechanismType", "DOM");
+
+	// ExclusiveWithComments C14N
+	map.put((String) "TransformService." + 
+		CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS,
+		"org.jcp.xml.dsig.internal.dom.DOMExcC14NMethod");
+	map.put("Alg.Alias.TransformService.EXCLUSIVE_WITH_COMMENTS", 
+		CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS);
+	map.put((String) "TransformService." + 
+		CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS +
+		" MechanismType", "DOM");
+
+	// Base64 Transform
+	map.put((String) "TransformService." + Transform.BASE64,
+		"org.jcp.xml.dsig.internal.dom.DOMBase64Transform");
+	map.put("Alg.Alias.TransformService.BASE64", Transform.BASE64);
+	map.put((String) "TransformService." + Transform.BASE64 + 
+		" MechanismType", "DOM");
+
+	// Enveloped Transform
+	map.put((String) "TransformService." + Transform.ENVELOPED,
+		"org.jcp.xml.dsig.internal.dom.DOMEnvelopedTransform");
+	map.put("Alg.Alias.TransformService.ENVELOPED", Transform.ENVELOPED);
+	map.put((String) "TransformService." + Transform.ENVELOPED + 
+		" MechanismType", "DOM");
+
+	// XPath2 Transform
+	map.put((String) "TransformService." + Transform.XPATH2,
+		"org.jcp.xml.dsig.internal.dom.DOMXPathFilter2Transform");
+	map.put("Alg.Alias.TransformService.XPATH2", Transform.XPATH2);
+	map.put((String) "TransformService." + Transform.XPATH2 + 
+		" MechanismType", "DOM");
+
+	// XPath Transform
+	map.put((String) "TransformService." + Transform.XPATH,
+		"org.jcp.xml.dsig.internal.dom.DOMXPathTransform");
+	map.put("Alg.Alias.TransformService.XPATH", Transform.XPATH);
+	map.put((String) "TransformService." + Transform.XPATH + 
+		" MechanismType", "DOM");
+
+	// XSLT Transform
+	map.put((String) "TransformService." + Transform.XSLT,
+		"org.jcp.xml.dsig.internal.dom.DOMXSLTTransform");
+	map.put("Alg.Alias.TransformService.XSLT", Transform.XSLT);
+	map.put((String) "TransformService." + Transform.XSLT + 
+		" MechanismType", "DOM");
+
+	AccessController.doPrivileged(new java.security.PrivilegedAction() {
+	    public Object run() {
+		putAll(map);
+		return null;
+	    }
+	});
+    }
+}
diff --git a/src_samples/javax/xml/crypto/dsig/samples/GenDetached.java b/src_samples/javax/xml/crypto/dsig/samples/GenDetached.java
new file mode 100644
index 0000000..2b58359
--- /dev/null
+++ b/src_samples/javax/xml/crypto/dsig/samples/GenDetached.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package javax.xml.crypto.dsig.samples;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.security.*;
+import java.util.Collections;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import org.w3c.dom.Document;
+
+/**
+ * This is a simple example of generating a Detached XML 
+ * Signature using the JSR 105 API. The resulting signature will look 
+ * like (key and signature values will be different):
+ *
+ * <pre><code>
+ * <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ *   <SignedInfo>
+ *     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ *     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
+ *     <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ *       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ *       <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ *     </Reference>
+ *   </SignedInfo>
+ *   <SignatureValue>
+ *     DpEylhQoiUKBoKWmYfajXO7LZxiDYgVtUtCNyTgwZgoChzorA2nhkQ==
+ *   </SignatureValue>
+ *   <KeyInfo>
+ *     <KeyValue>
+ *       <DSAKeyValue>
+ *	   <P>
+ *           rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+ *           FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+ *           UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+ *         </P>
+ *         <Q>
+ *           kEjAFpCe4lcUOdwphpzf+tBaUds=
+ *         </Q>
+ *         <G>
+ *           oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+ *           SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+ *           BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+ *         </G>
+ *         <Y>
+ *           pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+ *           AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+ *           jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+ *         </Y>
+ *       </DSAKeyValue>
+ *     </KeyValue>
+ *   </KeyInfo>
+ * </Signature>
+ * </code></pre>
+ */
+public class GenDetached {
+
+    //
+    // Synopsis: java GenDetached [output]
+    //
+    // where output is the name of the file that will contain the detached
+    // signature. If not specified, standard output is used.
+    //
+    public static void main(String[] args) throws Exception {
+
+	// First, create a DOM XMLSignatureFactory that will be used to 
+	// generate the XMLSignature and marshal it to DOM.
+	String providerName = System.getProperty
+	    ("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
+	XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM",
+	    (Provider) Class.forName(providerName).newInstance());
+
+	// Create a Reference to an external URI that will be digested
+	// using the SHA1 digest algorithm
+	Reference ref = fac.newReference("http://www.w3.org/TR/xml-stylesheet", 	    fac.newDigestMethod(DigestMethod.SHA1, null));
+
+	// Create the SignedInfo
+	SignedInfo si = fac.newSignedInfo(
+	    fac.newCanonicalizationMethod
+	        (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+		 (C14NMethodParameterSpec) null),
+	    fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null),
+	    Collections.singletonList(ref));
+
+	// Create a DSA KeyPair
+	KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
+	kpg.initialize(512);
+	KeyPair kp = kpg.generateKeyPair();
+
+	// Create a KeyValue containing the DSA PublicKey that was generated
+	KeyInfoFactory kif = fac.getKeyInfoFactory();
+	KeyValue kv = kif.newKeyValue(kp.getPublic());
+
+	// Create a KeyInfo and add the KeyValue to it
+	KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv));
+
+	// Create the XMLSignature (but don't sign it yet)
+	XMLSignature signature = fac.newXMLSignature(si, ki);
+
+	// Create the Document that will hold the resulting XMLSignature
+	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	dbf.setNamespaceAware(true); // must be set
+	Document doc = dbf.newDocumentBuilder().newDocument();
+
+	// Create a DOMSignContext and set the signing Key to the DSA 
+        // PrivateKey and specify where the XMLSignature should be inserted 
+	// in the target document (in this case, the document root)
+	DOMSignContext signContext = new DOMSignContext(kp.getPrivate(), doc);
+
+	// Marshal, generate (and sign) the detached XMLSignature. The DOM 
+	// Document will contain the XML Signature if this method returns 
+ 	// successfully.
+	signature.sign(signContext);
+
+	// output the resulting document
+	OutputStream os;
+	if (args.length > 0) {
+	   os = new FileOutputStream(args[0]);
+	} else { 
+	   os = System.out;
+	}
+
+	TransformerFactory tf = TransformerFactory.newInstance();
+	Transformer trans = tf.newTransformer();
+	trans.transform(new DOMSource(doc), new StreamResult(os));
+    }
+}
diff --git a/src_samples/javax/xml/crypto/dsig/samples/GenEnveloped.java b/src_samples/javax/xml/crypto/dsig/samples/GenEnveloped.java
new file mode 100644
index 0000000..acd6681
--- /dev/null
+++ b/src_samples/javax/xml/crypto/dsig/samples/GenEnveloped.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package javax.xml.crypto.dsig.samples;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.security.*;
+import java.util.Collections;
+import java.util.Iterator;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import org.w3c.dom.Document;
+
+/**
+ * This is a simple example of generating an Enveloped XML 
+ * Signature using the JSR 105 API. The resulting signature will look 
+ * like (key and signature values will be different):
+ *
+ * <pre><code>
+ *<Envelope xmlns="urn:envelope">
+ * <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ *   <SignedInfo>
+ *     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n
+-20010315"/>
+ *     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
+ *     <Reference URI="">
+ *       <Transforms>
+ *         <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ *       </Transforms>
+ *       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ *       <DigestValue>K8M/lPbKnuMDsO0Uzuj75lQtzQI=<DigestValue>
+ *     </Reference>
+ *   </SignedInfo>
+ *   <SignatureValue>
+ *     DpEylhQoiUKBoKWmYfajXO7LZxiDYgVtUtCNyTgwZgoChzorA2nhkQ==
+ *   </SignatureValue>
+ *   <KeyInfo>
+ *     <KeyValue>
+ *       <DSAKeyValue>
+ *         <P>
+ *           rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+ *           FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+ *           UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+ *         </P>
+ *         <Q>
+ *           kEjAFpCe4lcUOdwphpzf+tBaUds=
+ *         </Q>
+ *         <G>
+ *           oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+ *           SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+ *           BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+ *         </G>
+ *         <Y>
+ *           pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+ *           AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+ *           jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+ *         </Y>
+ *       </DSAKeyValue>
+ *     </KeyValue>
+ *   </KeyInfo>
+ * </Signature>
+ *</Envelope>
+ * </code></pre>
+ */
+public class GenEnveloped {
+
+    //
+    // Synopsis: java GenEnveloped [document] [output]
+    //
+    //    where "document" is the name of a file containing the XML document
+    //    to be signed, and "output" is the name of the file to store the
+    //    signed document. The 2nd argument is optional - if not specified,
+    //    standard output will be used.
+    //
+    public static void main(String[] args) throws Exception {
+
+        // Create a DOM XMLSignatureFactory that will be used to generate the 
+	// enveloped signature
+        String providerName = System.getProperty
+            ("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
+	XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM",
+	     (Provider) Class.forName(providerName).newInstance());
+
+        // Create a Reference to the enveloped document (in this case we are
+	// signing the whole document, so a URI of "" signifies that) and
+	// also specify the SHA1 digest algorithm and the ENVELOPED Transform.
+	Reference ref = fac.newReference
+	    ("", fac.newDigestMethod(DigestMethod.SHA1, null),
+             Collections.singletonList
+	      (fac.newTransform
+		(Transform.ENVELOPED, (TransformParameterSpec) null)), 
+	     null, null);
+
+	// Create the SignedInfo
+	SignedInfo si = fac.newSignedInfo
+	    (fac.newCanonicalizationMethod
+	     (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+	      (C14NMethodParameterSpec) null), 
+	     fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null),
+	     Collections.singletonList(ref));
+
+        // Create a DSA KeyPair
+        KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
+	kpg.initialize(512);
+        KeyPair kp = kpg.generateKeyPair();
+
+        // Create a KeyValue containing the DSA PublicKey that was generated
+	KeyInfoFactory kif = fac.getKeyInfoFactory();
+        KeyValue kv = kif.newKeyValue(kp.getPublic());
+
+	// Create a KeyInfo and add the KeyValue to it
+        KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv));
+
+	// Instantiate the document to be signed
+	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	dbf.setNamespaceAware(true);
+	Document doc = 
+	    dbf.newDocumentBuilder().parse(new FileInputStream(args[0]));
+
+        // Create a DOMSignContext and specify the DSA PrivateKey and
+        // location of the resulting XMLSignature's parent element
+	DOMSignContext dsc = new DOMSignContext
+	    (kp.getPrivate(), doc.getDocumentElement());
+
+	// Create the XMLSignature (but don't sign it yet)
+	XMLSignature signature = fac.newXMLSignature(si, ki);
+
+        // Marshal, generate (and sign) the enveloped signature
+        signature.sign(dsc);
+
+	// output the resulting document
+	OutputStream os;
+	if (args.length > 1) {
+           os = new FileOutputStream(args[1]);
+	} else {
+           os = System.out;
+	}
+
+	TransformerFactory tf = TransformerFactory.newInstance();
+	Transformer trans = tf.newTransformer();
+	trans.transform(new DOMSource(doc), new StreamResult(os));
+    }
+}
diff --git a/src_samples/javax/xml/crypto/dsig/samples/GenEnveloping.java b/src_samples/javax/xml/crypto/dsig/samples/GenEnveloping.java
new file mode 100644
index 0000000..7519f53
--- /dev/null
+++ b/src_samples/javax/xml/crypto/dsig/samples/GenEnveloping.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package javax.xml.crypto.dsig.samples;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.security.*;
+import java.util.Arrays;
+import java.util.Collections;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+/**
+ * This is a simple example of generating an Enveloping XML 
+ * Signature using the JSR 105 API. The signature in this case references a 
+ * local URI that points to an Object element. 
+ * The resulting signature will look like (certificate and 
+ * signature values will be different):
+ *
+ * <pre><code>
+ * <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ *   <SignedInfo>
+ *     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ *     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
+ *     <Reference URI="#object">
+ *       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ *       <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ *     </Reference>
+ *   </SignedInfo>
+ *   <SignatureValue>
+ *     RpMRbtMHLa0siSS+BwUpLIEmTfh/0fsld2JYQWZzCzfa5kBTz25+XA==
+ *   </SignatureValue>
+ *   <KeyInfo>
+ *     <KeyValue>
+ *       <DSAKeyValue>
+ *         <P>
+ *           /KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B81uRpH5t9jQTxeEu0Imbz
+ *           RMqzVDZkVG9xD7nN1kuFw==
+ *         </P>
+ *         <Q>
+ *           li7dzDacuo67Jg7mtqEm2TRuOMU=
+ *         </Q>
+ *         <G>
+ *           Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG541Awtx/XPaF5Bpsy4pNWMOH
+ *           CBiNU0NogpsQW5QvnlMpA==
+ *         </G>
+ *         <Y>
+ *           wbEUaCgHZXqK4qLvbdYrAc6+Do0XVcsziCJqxzn4cJJRxwc3E1xnEXHscVgr1Cql9
+ *           i5fanOKQbFXzmb+bChqig==
+ *         </Y>
+ *       </DSAKeyValue>
+ *     </KeyValue>
+ *   </KeyInfo>
+ *   <Object Id="object">some text</Object>
+ * </Signature>
+ *
+ * </code></pre>
+ */
+public class GenEnveloping {
+
+    //
+    // Synopis: java GenEnveloping [output]
+    //
+    //   where "output" is the name of a file that will contain the
+    //   generated signature. If not specified, standard ouput will be used.
+    //
+    public static void main(String[] args) throws Exception {
+
+        // First, create the DOM XMLSignatureFactory that will be used to 
+	// generate the XMLSignature
+	String providerName = System.getProperty
+            ("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
+	XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM",
+            (Provider) Class.forName(providerName).newInstance());
+
+        // Next, create a Reference to a same-document URI that is an Object
+        // element and specify the SHA1 digest algorithm
+        Reference ref = fac.newReference("#object",
+	    fac.newDigestMethod(DigestMethod.SHA1, null));
+
+	// Next, create the referenced Object
+	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	dbf.setNamespaceAware(true);
+	Document doc = dbf.newDocumentBuilder().newDocument();
+	Node text = doc.createTextNode("some text");
+	XMLStructure content = new DOMStructure(text);
+	XMLObject obj = fac.newXMLObject
+	    (Collections.singletonList(content), "object", null, null);
+
+	// Create the SignedInfo
+	SignedInfo si = fac.newSignedInfo(
+	    fac.newCanonicalizationMethod
+		(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+		 (C14NMethodParameterSpec) null), 
+	    fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null),
+	    Collections.singletonList(ref));
+
+	// Create a DSA KeyPair
+	KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
+	kpg.initialize(512);
+	KeyPair kp = kpg.generateKeyPair();
+
+	// Create a KeyValue containing the DSA PublicKey that was generated
+	KeyInfoFactory kif = fac.getKeyInfoFactory();
+	KeyValue kv = kif.newKeyValue(kp.getPublic());
+
+	// Create a KeyInfo and add the KeyValue to it
+	KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv));
+
+	// Create the XMLSignature (but don't sign it yet)
+	XMLSignature signature = fac.newXMLSignature(si, ki,
+	    Collections.singletonList(obj), null, null); 
+
+        // Create a DOMSignContext and specify the DSA PrivateKey for signing
+	// and the document location of the XMLSignature
+        DOMSignContext dsc = new DOMSignContext(kp.getPrivate(), doc);
+
+        // Lastly, generate the enveloping signature using the PrivateKey
+	signature.sign(dsc);
+
+        // output the resulting document
+	OutputStream os;
+	if (args.length > 0) {
+	   os = new FileOutputStream(args[0]);
+	} else {
+           os = System.out;
+	}
+
+        TransformerFactory tf = TransformerFactory.newInstance();
+	Transformer trans = tf.newTransformer();
+	trans.transform(new DOMSource(doc), new StreamResult(os));
+    }
+}
diff --git a/src_samples/javax/xml/crypto/dsig/samples/Validate.java b/src_samples/javax/xml/crypto/dsig/samples/Validate.java
new file mode 100644
index 0000000..9617958
--- /dev/null
+++ b/src_samples/javax/xml/crypto/dsig/samples/Validate.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package javax.xml.crypto.dsig.samples;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import java.io.FileInputStream;
+import java.security.*;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+/**
+ * This is a simple example of validating an XML 
+ * Signature using the JSR 105 API. It assumes the key needed to
+ * validate the signature is contained in a KeyValue KeyInfo. 
+ */
+public class Validate {
+
+    //
+    // Synopsis: java Validate [document]
+    //
+    //	  where "document" is the name of a file containing the XML document
+    //	  to be validated.
+    //
+    public static void main(String[] args) throws Exception {
+
+	// Instantiate the document to be validated
+	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	dbf.setNamespaceAware(true);
+	Document doc =
+            dbf.newDocumentBuilder().parse(new FileInputStream(args[0]));
+
+	// Find Signature element
+	NodeList nl = 
+	    doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
+	if (nl.getLength() == 0) {
+	    throw new Exception("Cannot find Signature element");
+	}
+
+	// Create a DOM XMLSignatureFactory that will be used to unmarshal the 
+	// document containing the XMLSignature 
+	String providerName = System.getProperty
+            ("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
+	XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM",
+            (Provider) Class.forName(providerName).newInstance());
+
+	// Create a DOMValidateContext and specify a KeyValue KeySelector
+        // and document context
+	DOMValidateContext valContext = new DOMValidateContext
+	    (new KeyValueKeySelector(), nl.item(0));
+	
+	// unmarshal the XMLSignature
+	XMLSignature signature = fac.unmarshalXMLSignature(valContext);
+
+	// Validate the XMLSignature (generated above)
+	boolean coreValidity = signature.validate(valContext); 
+
+	// Check core validation status
+	if (coreValidity == false) {
+    	    System.err.println("Signature failed core validation"); 
+	    boolean sv = signature.getSignatureValue().validate(valContext);
+	    System.out.println("signature validation status: " + sv);
+	    // check the validation status of each Reference
+	    Iterator i = signature.getSignedInfo().getReferences().iterator();
+	    for (int j=0; i.hasNext(); j++) {
+		boolean refValid = 
+		    ((Reference) i.next()).validate(valContext);
+		System.out.println("ref["+j+"] validity status: " + refValid);
+	    }
+	} else {
+    	    System.out.println("Signature passed core validation");
+	}
+    }
+
+    /**
+     * KeySelector which retrieves the public key out of the
+     * KeyValue element and returns it.
+     * NOTE: If the key algorithm doesn't match signature algorithm,
+     * then the public key will be ignored.
+     */
+    private static class KeyValueKeySelector extends KeySelector {
+	public KeySelectorResult select(KeyInfo keyInfo,
+                                        KeySelector.Purpose purpose,
+                                        AlgorithmMethod method,
+                                        XMLCryptoContext context)
+            throws KeySelectorException {
+            if (keyInfo == null) {
+		throw new KeySelectorException("Null KeyInfo object!");
+            }
+            SignatureMethod sm = (SignatureMethod) method;
+            List list = keyInfo.getContent();
+
+            for (int i = 0; i < list.size(); i++) {
+		XMLStructure xmlStructure = (XMLStructure) list.get(i);
+            	if (xmlStructure instanceof KeyValue) {
+                    PublicKey pk = null;
+                    try {
+                        pk = ((KeyValue)xmlStructure).getPublicKey();
+                    } catch (KeyException ke) {
+                        throw new KeySelectorException(ke);
+                    }
+                    // make sure algorithm is compatible with method
+                    if (algEquals(sm.getAlgorithm(), pk.getAlgorithm())) {
+                        return new SimpleKeySelectorResult(pk);
+                    }
+		}
+            }
+            throw new KeySelectorException("No KeyValue element found!");
+	}
+
+        //@@@FIXME: this should also work for key types other than DSA/RSA
+	static boolean algEquals(String algURI, String algName) {
+            if (algName.equalsIgnoreCase("DSA") &&
+		algURI.equalsIgnoreCase(SignatureMethod.DSA_SHA1)) {
+		return true;
+            } else if (algName.equalsIgnoreCase("RSA") &&
+                       algURI.equalsIgnoreCase(SignatureMethod.RSA_SHA1)) {
+		return true;
+            } else {
+		return false;
+            }
+	}
+    }
+
+    private static class SimpleKeySelectorResult implements KeySelectorResult {
+	private PublicKey pk;
+	SimpleKeySelectorResult(PublicKey pk) {
+	    this.pk = pk;
+	}
+
+	public Key getKey() { return pk; }
+    }
+}
diff --git a/src_samples/javax/xml/crypto/dsig/samples/envelope.xml b/src_samples/javax/xml/crypto/dsig/samples/envelope.xml
new file mode 100644
index 0000000..d02d43c
--- /dev/null
+++ b/src_samples/javax/xml/crypto/dsig/samples/envelope.xml
@@ -0,0 +1,2 @@
+<Envelope xmlns="urn:envelope">
+</Envelope>
diff --git a/src_samples/javax/xml/crypto/dsig/samples/envelopedSignature.xml b/src_samples/javax/xml/crypto/dsig/samples/envelopedSignature.xml
new file mode 100644
index 0000000..9e204a3
--- /dev/null
+++ b/src_samples/javax/xml/crypto/dsig/samples/envelopedSignature.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Envelope xmlns="urn:envelope">
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" xmlns="http://www.w3.org/2000/09/xmldsig#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" xmlns="http://www.w3.org/2000/09/xmldsig#"/><Reference URI="" xmlns="http://www.w3.org/2000/09/xmldsig#"><Transforms xmlns="http://www.w3.org/2000/09/xmldsig#"><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" xmlns="http://www.w3.org/2000/09/xmldsig#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns="http://www.w3.org/2000/09/xmldsig#"/><DigestValue xmlns="http://www.w3.org/2000/09/xmldsig#">uooqbWYa5VCqcJCbuymBKqm17vY=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">eO7K1BdC0kzNvr1HpMf4hKoWsvl+oI04nMw55GO+Z5hyI6By3Oihow==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#"><DSAKeyValue xmlns="http://www.w3.org/2000/09/xmldsig#"><P xmlns="http://www.w3.org/2000/09/xmldsig#">/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9
+xD7nN1kuFw==</P><Q xmlns="http://www.w3.org/2000/09/xmldsig#">li7dzDacuo67Jg7mtqEm2TRuOMU=</Q><G xmlns="http://www.w3.org/2000/09/xmldsig#">Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG541Awtx/XPaF5Bpsy4pNWMOHCBiNU0Nogps
+QW5QvnlMpA==</G><Y xmlns="http://www.w3.org/2000/09/xmldsig#">OqFi0sGpvroi6Ut3m154QNWc6gavH3j2ZoRPDW7qVBbgk7XompuKvZe1owz0yvxq+1K+mWbL7ST+
+t5nr6UFBCg==</Y></DSAKeyValue></KeyValue></KeyInfo></Signature></Envelope>
\ No newline at end of file
diff --git a/src_samples/org/apache/xml/security/samples/AxisSigner.java b/src_samples/org/apache/xml/security/samples/AxisSigner.java
new file mode 100644
index 0000000..cdab750
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/AxisSigner.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class AxisSigner {
+
+   /** Field AXIS_SIGNATURE_FILENAME           */
+   public static final String AXIS_SIGNATURE_FILENAME = "axisSignature.xml";
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File(AXIS_SIGNATURE_FILENAME);
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                 privateKeyPass.toCharArray());
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+
+      /*
+       * Start SOAP infrastructure code. This is to be made compatible with Axis.
+       *
+       */
+      String soapNS = "http://www.w3.org/2001/12/soap-envelope";
+      String SOAPSECNS = "http://schemas.xmlsoap.org/soap/security/2000-12";
+
+      Element envelopeElement = doc.createElementNS(soapNS, "env:Envelope");
+
+      envelopeElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:env", soapNS);
+      doc.appendChild(envelopeElement);
+
+      Element headerElem = doc.createElementNS(soapNS, "env:Header");
+      Element bodyElem = doc.createElementNS(soapNS, "env:Body");
+
+      envelopeElement.appendChild(doc.createTextNode("\n"));
+      envelopeElement.appendChild(headerElem);
+      envelopeElement.appendChild(doc.createTextNode("\n"));
+      envelopeElement.appendChild(bodyElem);
+      envelopeElement.appendChild(doc.createTextNode("\n"));
+      bodyElem
+         .appendChild(doc
+            .createTextNode("This is signed together with it's Body ancestor"));
+
+
+      bodyElem.setAttributeNS(SOAPSECNS, "SOAP-SEC:id", "Body");
+
+      Element soapSignatureElem = doc.createElementNS(SOAPSECNS, "SOAP-SEC:Signature");
+
+      envelopeElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:SOAP-SEC", SOAPSECNS);
+      envelopeElement.setAttributeNS(null, "actor", "some-uri");
+      envelopeElement.setAttributeNS(null, "mustUnderstand", "1");
+      envelopeElement.appendChild(doc.createTextNode("\n"));
+      headerElem.appendChild(soapSignatureElem);
+
+      /*
+       *
+       * End SOAP infrastructure code. This is to be made compatible with Axis.
+       */
+      String BaseURI = signatureFile.toURL().toString();
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+
+      soapSignatureElem.appendChild(sig.getElement());
+
+      {
+         sig.addDocument("#Body");
+
+         /*
+         Transforms transforms = new Transforms(doc);
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         sig.addDocument("", transforms);
+         */
+      }
+
+      {
+         X509Certificate cert =
+            (X509Certificate) ks.getCertificate(certificateAlias);
+
+         sig.addKeyInfo(cert);
+         sig.addKeyInfo(cert.getPublicKey());
+         sig.sign(privateKey);
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+
+      for (int i = 0; i < sig.getSignedInfo().getSignedContentLength(); i++) {
+         System.out.println("--- Signed Content follows ---");
+         System.out
+            .println(new String(sig.getSignedInfo().getSignedContentItem(i)));
+      }
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/AxisVerifier.java b/src_samples/org/apache/xml/security/samples/AxisVerifier.java
new file mode 100644
index 0000000..d164186
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/AxisVerifier.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xpath.CachedXPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class AxisVerifier {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      File signatureFile = new File(AxisSigner.AXIS_SIGNATURE_FILENAME);
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.parse(new FileInputStream(signatureFile));
+      String BaseURI = signatureFile.toURL().toString();
+      CachedXPathAPI xpathAPI = new CachedXPathAPI();
+      Element nsctx = doc.createElementNS(null, "nsctx");
+
+      nsctx.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ds",
+                           Constants.SignatureSpecNS);
+
+      Element signatureElem = (Element) xpathAPI.selectSingleNode(doc,
+                                 "//ds:Signature", nsctx);
+      XMLSignature sig = new XMLSignature(signatureElem, BaseURI);
+      boolean verify = sig.checkSignatureValue(sig.getKeyInfo().getPublicKey());
+
+      System.out.println("The signature is" + (verify
+                                               ? " "
+                                               : " not ") + "valid");
+
+      for (int i = 0; i < sig.getSignedInfo().getSignedContentLength(); i++) {
+         boolean thisOneWasSigned =
+            sig.getSignedInfo().getVerificationResult(i);
+
+         if (thisOneWasSigned) {
+            System.out.println("--- Signed Content follows ---");
+            System.out
+               .println(new String(sig.getSignedInfo()
+                  .getSignedContentItem(i)));
+         }
+      }
+
+      System.out.println("");
+      System.out.println("Prior transforms");
+      System.out
+         .println(new String(sig.getSignedInfo()
+            .getReferencedContentBeforeTransformsItem(0).getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/MyResolver.java b/src_samples/org/apache/xml/security/samples/MyResolver.java
new file mode 100644
index 0000000..899e941
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/MyResolver.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples;
+
+
+
+import java.io.ByteArrayInputStream;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+
+
+/**
+ *
+ *
+ * @author $Author$
+ */
+public class MyResolver extends ResourceResolverSpi {
+
+   /**
+    * Method engineResolve
+    * @inheritDoc
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI) {
+
+
+         ByteArrayInputStream is =
+            new ByteArrayInputStream("string".getBytes());
+
+         return new XMLSignatureInput(is);
+      
+   }
+
+   /**
+    * Method engineCanResolve
+    * @inheritDoc
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+      return true;
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/ResolverUsageHTTP.java b/src_samples/org/apache/xml/security/samples/ResolverUsageHTTP.java
new file mode 100644
index 0000000..d2f1242
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/ResolverUsageHTTP.java
@@ -0,0 +1,148 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples;
+
+
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolver;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class ResolverUsageHTTP {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      ResourceResolver.registerAtStart(
+         "org.apache.xml.security.samples.utils.resolver.OfflineResolver");
+
+      //J-
+      // String currentSystemId = "http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/signature.xml";
+      String currentSystemId = "file:/Y:/signature.xml";
+      // String refURI =          "#N3";
+      String refURI =          "#xpointer(id(&quot;id2&quot;))";
+      // String refURI =          "file:/Y:/jbproject/xmlsecurity/data/org.apache.xml.security/temp/id.xml#N3";
+      // String refURI =          "http://www.nue.et-inf.uni-siegen.de/index.html#xpointer(&apos;id3&apos;)";
+      String inputStr =
+        "<?xml version='1.0'?>" + "\n"
+      + "<!DOCTYPE doc [" + "\n"
+      + "<!ATTLIST e9 Id ID #IMPLIED>" + "\n"
+      + "]>" + "\n"
+      + "<doc>" + "\n"
+      + "   <!-- A comment -->" + "\n"
+      + "   <Signature xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "    <SignedInfo>" + "\n"
+      + "      <CanonicalizationMethod Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' />" + "\n"
+      + "      <SignatureMethod Algorithm='http://www.w3.org/2000/09/xmldsig#rsa-sha1' />" + "\n"
+      + "      <Reference URI='http://www.w3.org/TR/xml-stylesheet'>" + "\n"
+      + "         <DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' />" + "\n"
+      + "         <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>" + "\n"
+      + "      </Reference>" + "\n"
+      + "      <Reference URI='#xpointer(id(&quot;id2&quot;))'>" + "\n"
+      + "         <DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' />" + "\n"
+      + "         <DigestValue>RJeREVHXdM5ysghhvpIYGJJaNQI=</DigestValue>" + "\n"
+      + "      </Reference>" + "\n"
+      + "      <Reference URI='http://www.nue.et-inf.uni-siegen.de/index.html'>" + "\n"
+      + "         <DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' />" + "\n"
+      + "         <DigestValue>Hpg+6h1k1jYY5yr3TRzDZzw23CQ=</DigestValue>" + "\n"
+      // + "         <DigestValue>RJeREVHXdM5ysghhvpIYGJJaNQI=</DigestValue>" + "\n"
+      + "      </Reference>" + "\n"
+      // + "      <Reference URI='file:/Y:/jbproject/xmlsecurity/data/org.apache.xml.security/temp/id2.xml#xpointer(id(&quot;id2&quot;))' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "      <Reference URI='http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/id2.xml'>" + "\n"
+      + "         <Transforms>" + "\n"
+      + "            <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>" + "\n"
+      + "               <XPath>self::text()</XPath>" + "\n"
+      + "            </Transform>" + "\n"
+      + "         </Transforms>" + "\n"
+      + "         <DigestMethod Algorithm='http://www.w3.org/2000/09/xmldsig#sha1' />" + "\n"
+      + "         <DigestValue>RK9DKU4NnECPpNAb+QxMwTmSL+w=</DigestValue>" + "\n"
+      + "      </Reference>" + "\n"
+      + "    </SignedInfo>" + "\n"
+      + "    <SignatureValue>" + "\n"
+      + "       KTe1H5Hjp8hwahNFoUqHDuPJNNqhS1U3BBBH5/gByItNIwV18nMiLq4KunzFnOqD" + "\n"
+      + "       xzTuO0/T+wsoYC1xOEuCDxyIujNCaJfLh+rCi5THulnc8KSHHEoPQ+7fA1VjmO31" + "\n"
+      + "       2iw1iENOi7m//wzKlIHuxZCJ5nvolT21PV6nSE4DHlA=" + "\n"
+      + "    </SignatureValue>" + "\n"
+      + "   </Signature>" + "\n"
+      + "   <e9 Id='N3'><!-- A comment -->Das N3 Element</e9>" + "\n"
+      + "   <e9 Id='id2'><!-- A comment --> Das id2 Element</e9>" + "\n"
+      + "</doc> " + "\n"
+      + "";
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc =
+         db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
+      Element context = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+      Element dsElem = (Element) XPathAPI.selectSingleNode(doc,
+                          "//ds:Signature[1]", context);
+      XMLSignature signature = new XMLSignature(dsElem, currentSystemId);
+
+      // how can I reg my own keystore?
+      boolean verify = signature.checkSignatureValue(signature.getKeyInfo().getPublicKey());
+
+      System.out.println("Signature " + (verify
+                                         ? "Verification successful"
+                                         : "Verification failed"));
+      System.out.println("Canonicalized SignedInfo:");
+      System.out
+         .println(new String(signature.getSignedInfo()
+            .getCanonicalizedOctetStream()));
+
+      /*
+      Element signedInfoElem = (Element) XPathAPI.selectSingleNode(doc, "/doc/ds:Signature/ds:SignedInfo", context);
+      SignedInfo si = new SignedInfo(signedInfoElem, currentSystemId);
+      boolean useProxy = false;
+      if (useProxy) {
+         si.setResolverProperty("http.proxy.host", "www-cache.uni-siegen.de");
+         si.setResolverProperty("http.proxy.port", "3128");
+      }
+      boolean verify = si.verify();
+      System.out.println(verify ? "Verification successful" : "Verification failed");
+      if (!verify) {
+         for (int i=0; i<si.getLength(); i++) {
+            if (si.getVerificationResult(i)) {
+               System.out.println("OK:     " + si.item(i).getURI());
+            } else {
+               System.out.println("Failed: " + si.item(i).getURI());
+               System.out.println("data follows: ");
+               System.out.print(new String(si.item(i).getXMLSignatureInput().getBytes()));
+            }
+         }
+      }
+      */
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/TransformNoneUser.java b/src_samples/org/apache/xml/security/samples/TransformNoneUser.java
new file mode 100644
index 0000000..0bec16a
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/TransformNoneUser.java
@@ -0,0 +1,58 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples;
+
+
+
+import java.io.ByteArrayInputStream;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transform;
+import org.apache.xml.security.transforms.Transforms;
+
+
+/**
+ * This sample app describes how to register and use self-programmed
+ * Transforms.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformNoneUser {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+
+      Transform.register(
+         "http://www.xmlsecurity.org/NS/Transforms#none",
+         "org.apache.xml.security.samples.transforms.SampleTransformNone");
+
+      Transforms identity = new Transforms(null, null);
+      identity.addTransform("http://www.xmlsecurity.org/NS/Transforms#none");
+      XMLSignatureInput input =
+         new XMLSignatureInput(new ByteArrayInputStream("This is the Input"
+            .getBytes()));
+      XMLSignatureInput result = identity.performTransforms(input);
+
+      System.out.println(new String(result.getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/TransformPerformanceTester.java b/src_samples/org/apache/xml/security/samples/TransformPerformanceTester.java
new file mode 100644
index 0000000..7d45274
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/TransformPerformanceTester.java
@@ -0,0 +1,2538 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer04;
+import org.apache.xml.security.transforms.params.XPathFilterCHGPContainer;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Class TransformPerformanceTester
+ *
+ * 300 * simple_gif_detached       took 136,376 seconds
+ * 300 * pureedge_xfilter2         took 574,797 seconds
+ * 300 * pureedge_apachefilter     took 595,617 seconds
+ * 300 * xfilter2spec_xfilter2     took  75,408 seconds
+ * 300 * xfilter2spec_apachefilter took  58,624 seconds
+ *
+ * 400 * simple_gif_detached       took 196,733 seconds
+ * 400 * pureedge_xfilter2         took 767,404 seconds
+ * 400 * pureedge_apachefilter     took 805,648 seconds
+ * 400 * xfilter2spec_xfilter2     took  81,367 seconds
+ * 400 * xfilter2spec_apachefilter took  72,013 seconds
+ *
+ * 500 * simple_gif_detached took 246,054 seconds
+ * 500 * xfilter2spec_xfilter2_1 took  98,842 seconds
+ * 500 * xfilter2spec_xfilter2_2 took 122,236 seconds
+ * 500 * xfilter2spec_xfilter2_3 took 122,917 seconds
+ * 500 * xfilter2spec_apachefilter_1 took 120,563 seconds
+ * 500 * xfilter2spec_apachefilter_2 took 109,898 seconds
+ * 500 * xfilter2spec_apachefilter_3 took 113,383 seconds
+ *
+ * 600 * simple_gif_detached took 294,503 seconds
+ * 600 * pureedge_xfilter2 took 1.144,616 seconds
+ * 600 * pureedge_apachefilter took 1.205,243 seconds
+ * 600 * xfilter2spec_xfilter2_1 took 109,337 seconds
+ * 600 * xfilter2spec_xfilter2_2 took 122,206 seconds
+ * 600 * xfilter2spec_xfilter2_3 took 138,91 seconds
+ * 600 * xfilter2spec_apachefilter_1 took 130,297 seconds
+ * 600 * xfilter2spec_apachefilter_2 took 123,268 seconds
+ * 600 * xfilter2spec_apachefilter_3 took 131,178 seconds
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class TransformPerformanceTester {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      // checkMerlinsSample();
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      //J-
+      int counter = 50;
+      boolean simple_gif_detached = false;
+
+      boolean pureedge_xfilter2 = true;
+      boolean pureedge_xfilter2_new = true;
+      boolean pureedge_apachefilter = true;
+
+      boolean xfilter2spec_xfilter2_1 = true;
+      boolean xfilter2spec_xfilter2_2 = true;
+      boolean xfilter2spec_xfilter2_3 = true;
+
+      boolean xfilter2spec_apachefilter_1 = true;
+      boolean xfilter2spec_apachefilter_2 = true;
+      boolean xfilter2spec_apachefilter_3 = true;
+
+      boolean apachesample_xfilter2_1 = false;
+      boolean apachesample_xfilter2_2 = false;
+      boolean apachesample_xfilter2_3 = false;
+      boolean apachesample_xfilter2_4 = false;
+      boolean apachesample_xfilter2_5 = false;
+      boolean apachesample_xfilter2_6 = false;
+      boolean apachesample_xfilter2_7 = false;
+
+      boolean apachesample_apachefilter_1 = false;
+      boolean apachesample_apachefilter_2 = false;
+      boolean apachesample_apachefilter_3 = false;
+      boolean apachesample_apachefilter_4 = false;
+      boolean apachesample_apachefilter_5 = false;
+      boolean apachesample_apachefilter_6 = false;
+      boolean apachesample_apachefilter_7 = false;
+
+      boolean apachesample_apachefilter_7_optimal = false;
+
+
+      boolean xfilter2spec_xfilter2_3_new = true;
+
+      //J+
+      if (simple_gif_detached) {
+         Document doc = db.newDocument();
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.simple_gif_detached(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * simple_gif_detached took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("simple_gif_detached.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("simple_gif_detached.gif");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (pureedge_xfilter2) {
+         Document doc =
+            db.parse(new FileInputStream("data/com/pureedge/LeaveRequest.xfd"));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.pureedge_xfilter2(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * pureedge_xfilter2 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("pureedge_xfilter2_doc.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("pureedge_xfilter2_ref.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (pureedge_xfilter2_new) {
+         Document doc =
+            db.parse(new FileInputStream("data/com/pureedge/LeaveRequest.xfd"));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.pureedge_xfilter2_new(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * pureedge_xfilter2_new took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("pureedge_xfilter2_new_doc.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("pureedge_xfilter2_new_ref.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (pureedge_apachefilter) {
+         Document doc =
+            db.parse(new FileInputStream("data/com/pureedge/LeaveRequest.xfd"));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.pureedge_apachefilter(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * pureedge_apachefilter took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("pureedge_apachefilter_doc.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("pureedge_apachefilter_ref.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_xfilter2_1) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.xfilter2spec_xfilter2_1(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_xfilter2_1 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_doc_1.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_ref_1.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_xfilter2_2) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.xfilter2spec_xfilter2_2(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_xfilter2_2 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_doc_2.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_ref_2.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_xfilter2_3) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.xfilter2spec_xfilter2_3(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_xfilter2_3 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_doc_3.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_ref_3.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_apachefilter_1) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.xfilter2spec_apachefilter_1(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_apachefilter_1 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_apachefilter_doc_1.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_apachefilter_ref_1.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_apachefilter_2) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.xfilter2spec_apachefilter_2(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_apachefilter_2 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_apachefilter_doc_2.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_apachefilter_ref_2.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_apachefilter_3) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.xfilter2spec_apachefilter_3(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_apachefilter_3 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_apachefilter_doc_3.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_apachefilter_ref_3.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_7_optimal) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester
+                  .apachesample_apachefilter_7_optimal(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_7_optimal took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream(
+            "apachesample_apachefilter_doc_7_optimal.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream(
+            "apachesample_apachefilter_ref_7_optimal.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_1) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_1(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_1 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_1.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_1.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_2) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_2(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_2 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_2.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_2.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_3) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_3(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_3 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_3.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_3.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_4) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_4(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_4 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_4.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_4.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_5) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_5(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_5 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_5.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_5.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_6) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_6(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_6 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_6.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_6.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_apachefilter_7) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.apachesample_apachefilter_7(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_apachefilter_7 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_apachefilter_doc_7.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_apachefilter_ref_7.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_1) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_1(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_1 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_1.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_1.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_2) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_2(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_2 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_2.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_2.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_3) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_3(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_3 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_3.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_3.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_4) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_4(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_4 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_4.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_4.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_5) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_5(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_5 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_5.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_5.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_6) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_6(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_6 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_6.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_6.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (apachesample_xfilter2_7) {
+         String inputDoc =
+            "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result = TransformPerformanceTester.apachesample_xfilter2_7(doc);
+
+            if (i % 10 == 0) {
+
+               // System.out.print(".");
+            }
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * apachesample_xfilter2_7 took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("apachesample_xfilter2_doc_7.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("apachesample_xfilter2_ref_7.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+
+      if (xfilter2spec_xfilter2_3_new) {
+         String inputDoc = "<Document>\n" + "     <ToBeSigned>\n"
+                           + "       <!-- comment -->\n" + "       <Data />\n"
+                           + "       <NotToBeSigned>\n"
+                           + "         <ReallyToBeSigned>\n"
+                           + "           <!-- comment -->\n"
+                           + "           <Data />\n"
+                           + "         </ReallyToBeSigned>\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "     <ToBeSigned>\n"
+                           + "       <Data />\n" + "       <NotToBeSigned>\n"
+                           + "         <Data />\n"
+                           + "       </NotToBeSigned>\n"
+                           + "     </ToBeSigned>\n" + "</Document>";
+
+         //J+
+         Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+         long start = System.currentTimeMillis();
+         byte[][] result = null;
+
+         for (int i = 0; i < counter; i++) {
+            result =
+               TransformPerformanceTester.xfilter2spec_xfilter2_3_new(doc);
+         }
+
+         // System.out.println("");
+         long end = System.currentTimeMillis();
+         double delta = end - start;
+
+         System.out.println(
+            counter + " * xfilter2spec_xfilter2_3_new took "
+            + java.text.DecimalFormat.getInstance().format(delta / 1000.)
+            + " seconds");
+
+         FileOutputStream fos;
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_3_new_doc.xml");
+
+         fos.write(result[0]);
+         fos.close();
+
+         fos = new FileOutputStream("xfilter2spec_xfilter2_3_new_ref.xml");
+
+         fos.write(result[1]);
+         fos.close();
+      }
+   }
+
+   /**
+    * Method pureedge_xfilter2
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] pureedge_xfilter2(Document doc) throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         XPath2FilterContainer04 xpathContainer =
+            XPath2FilterContainer04.newInstanceSubtract(doc,
+         //J-
+            "\n" +
+            "/XFDL/page[@sid='PAGE1']/*[@sid='CHECK16' or \n" +
+            "                           @sid='CHECK17' or \n" +
+            "                           @sid='FIELD47' or \n" +
+            "                           @sid='BUTTON2' or \n" +
+            "                           @sid='FIELD48']\n" +
+            " | \n" +
+            "/XFDL/page/triggeritem[not(attribute::sid) | \n"  +
+            "                       /XFDL/page/*/triggeritem]\n" +
+            " | \n" +
+            "here()/ancestor::ds:Signature[1]" +
+            "");
+            //J+
+         xpathContainer.setXPathNamespaceContext("ds",
+                                                 Constants.SignatureSpecNS);
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 xpathContainer.getElement());
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method pureedge_apachefilter
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] pureedge_apachefilter(Document doc) throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         String includeButSearch = null;
+         String excludeButSearch = null;
+         String exclude =
+         //J-
+            "\n" +
+            "/XFDL/page[@sid='PAGE1']/*[@sid='CHECK16' or \n" +
+            "                           @sid='CHECK17' or \n" +
+            "                           @sid='FIELD47' or \n" +
+            "                           @sid='BUTTON2' or \n" +
+            "                           @sid='FIELD48']\n" +
+            " | \n" +
+            "/XFDL/page/triggeritem[not(attribute::sid) | \n"  +
+            "                       /XFDL/page/*/triggeritem]\n" +
+            " | \n" +
+            "here()/ancestor::ds:Signature[1]";
+            //J+
+         XPathFilterCHGPContainer xpathContainer =
+            XPathFilterCHGPContainer
+               .getInstance(doc, XPathFilterCHGPContainer
+                  .IncludeSlash, includeButSearch, excludeButSearch, exclude);
+
+         xpathContainer.setXPathNamespaceContext("ds",
+                                                 Constants.SignatureSpecNS);
+         transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
+                                 xpathContainer.getElement());
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method simple_gif_detached
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] simple_gif_detached(Document doc) throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc,
+                                          new File(".").toURL().toString(),
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.appendChild(sig.getElement());
+      sig.addDocument("./image.gif");
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_xfilter2_1
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_xfilter2_1(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                              XPath2FilterContainer04.newInstanceIntersect(doc,
+                                 "//ToBeSigned").getElement());
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_xfilter2_2
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_xfilter2_2(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                              XPath2FilterContainer04.newInstanceIntersect(doc,
+                                 "//ToBeSigned").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                              XPath2FilterContainer04.newInstanceSubtract(doc,
+                                 "//NotToBeSigned").getElement());
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_xfilter2
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_xfilter2_3(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                              XPath2FilterContainer04.newInstanceIntersect(doc,
+                                 "//ToBeSigned").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                              XPath2FilterContainer04.newInstanceSubtract(doc,
+                                 "//NotToBeSigned").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                              XPath2FilterContainer04.newInstanceUnion(doc,
+                                 "//ReallyToBeSigned").getElement());
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_apachefilter
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_apachefilter_1(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         String includeButSearch = "//ToBeSigned";
+         String excludeButSearch = null;
+         String exclude = "here()/ancestor::ds:Signature[1]";
+         XPathFilterCHGPContainer xpathContainer =
+            XPathFilterCHGPContainer
+               .getInstance(doc, XPathFilterCHGPContainer
+                  .ExcludeSlash, includeButSearch, excludeButSearch, exclude);
+
+         xpathContainer.setXPathNamespaceContext("ds",
+                                                 Constants.SignatureSpecNS);
+         transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
+                                 xpathContainer.getElement());
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_apachefilter
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_apachefilter_2(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         String includeButSearch = "//ToBeSigned";
+         String excludeButSearch = "//NotToBeSigned";
+         String exclude = "here()/ancestor::ds:Signature[1]";
+         XPathFilterCHGPContainer xpathContainer =
+            XPathFilterCHGPContainer
+               .getInstance(doc, XPathFilterCHGPContainer
+                  .ExcludeSlash, includeButSearch, excludeButSearch, exclude);
+
+         xpathContainer.setXPathNamespaceContext("ds",
+                                                 Constants.SignatureSpecNS);
+         transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
+                                 xpathContainer.getElement());
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_apachefilter
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_apachefilter_3(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         String includeButSearch = "//ToBeSigned | //ReallyToBeSigned";
+         String excludeButSearch = "//NotToBeSigned";
+         String exclude = "here()/ancestor::ds:Signature[1]";
+         XPathFilterCHGPContainer xpathContainer =
+            XPathFilterCHGPContainer
+               .getInstance(doc, XPathFilterCHGPContainer
+                  .ExcludeSlash, includeButSearch, excludeButSearch, exclude);
+
+         xpathContainer.setXPathNamespaceContext("ds",
+                                                 Constants.SignatureSpecNS);
+         transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
+                                 xpathContainer.getElement());
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method checkMerlinsSample
+    *
+    * @throws Exception
+    */
+   public static void checkMerlinsSample() throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      File f = new File(
+         "data/ie/baltimore/merlin-examples/merlin-xmldsig-filter2-one/sign-xfdl.xml");
+      Document doc = db.parse(new FileInputStream(f));
+      XMLSignature sig =
+         new XMLSignature((Element) doc
+            .getElementsByTagNameNS(Constants.SignatureSpecNS, "Signature")
+               .item(0), f.toURL().toString());
+
+      System.out.println("Signature erzeugt");
+
+      boolean v = sig.checkSignatureValue(sig.getKeyInfo().getPublicKey());
+
+      System.out.println("Merlin: " + v);
+   }
+
+   /**
+    * Method apachesample_apachefilter_1
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_1(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//E";
+      String excludeButSearchStr = null;
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_2
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_2(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E";
+      String excludeButSearchStr = null;
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_3
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_3(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E";
+      String excludeButSearchStr = "//C";
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_4
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_4(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E | //F";
+      String excludeButSearchStr = "//C";
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_5
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_5(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E | //F";
+      String excludeButSearchStr = "//C | //G";
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_6
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_6(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E | //F | //H ";
+      String excludeButSearchStr = "//C | //G";
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_7
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_7(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E | //F | //H";
+      String excludeButSearchStr = "//C | //G | //@x:attr";
+      String excludeStr = null;
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_7_optimal
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_7_optimal(Document doc)
+           throws Exception {
+
+      String includeButSearchStr = "//B | //E | //F | //H";
+      String excludeButSearchStr = "//G";
+      String excludeStr = "//C | //D | //@x:attr ";
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+
+      return TransformPerformanceTester.apachesample_apachefilter_x(doc,
+              includeSlashPolicy, includeButSearchStr, excludeButSearchStr,
+              excludeStr);
+   }
+
+   /**
+    * Method apachesample_apachefilter_x
+    *
+    * @param doc
+    * @param includeSlashPolicy
+    * @param includeButSearchStr
+    * @param excludeButSearchStr
+    * @param excludeStr
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_apachefilter_x(
+           Document doc, boolean includeSlashPolicy, String includeButSearchStr, String excludeButSearchStr, String excludeStr)
+              throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         XPathFilterCHGPContainer xpathContainer =
+            XPathFilterCHGPContainer.getInstance(doc, includeSlashPolicy,
+                                                 includeButSearchStr,
+                                                 excludeButSearchStr,
+                                                 excludeStr);
+
+         xpathContainer.setXPathNamespaceContext("ds",
+                                                 Constants.SignatureSpecNS);
+         xpathContainer.setXPathNamespaceContext("x", "http://foo.bar/");
+         transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
+                                 xpathContainer.getElement());
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_1
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_1(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+
+         /*
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceSubtract(doc,
+                                    "//C").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//F").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceSubtract(doc,
+                                    "//G").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//H").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceSubtract(doc,
+                                    "//@x:attr").getElement());
+         */
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_2
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_2(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+
+         /*
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceSubtract(doc,
+                                    "//C").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//F").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceSubtract(doc,
+                                    "//G").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//H").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceSubtract(doc,
+                                    "//@x:attr").getElement());
+                              */
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_3
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_3(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//C")
+                                       .getElement());
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_4
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_4(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//C")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//F").getElement());
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_5
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_5(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//C")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//F").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//G")
+                                       .getElement());
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_6
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_6(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//C")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//F").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//G")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//H").getElement());
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method apachesample_xfilter2_7
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] apachesample_xfilter2_7(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      {
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceIntersect(doc, "//E")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//B").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//C")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//F").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//G")
+                                       .getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04.newInstanceUnion(doc,
+                                    "//H").getElement());
+         transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER04,
+                                 XPath2FilterContainer04
+                                    .newInstanceSubtract(doc, "//@x:attr")
+                                       .getElement());
+         transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+         transforms
+            .setXPathNamespaceContext(Transforms
+               .getDefaultPrefix(Transforms
+               .TRANSFORM_XPATH2FILTER04), Transforms.TRANSFORM_XPATH2FILTER04);
+      }
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+
+   /**
+    * Method xfilter2spec_xfilter2_3_new
+    *
+    * @param doc
+    *
+    * @throws Exception
+    */
+   public static byte[][] xfilter2spec_xfilter2_3_new(Document doc)
+           throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+      String params[][] = {
+         { XPath2FilterContainer.INTERSECT, "//ToBeSigned" },
+         { XPath2FilterContainer.SUBTRACT, "//NotToBeSigned" },
+         { XPath2FilterContainer.UNION, "//ReallyToBeSigned" }
+      };
+      NodeList nodeList = XPath2FilterContainer.newInstances(doc, params);
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, nodeList);
+      transforms.setXPathNamespaceContext("xfilter2b", Transforms.TRANSFORM_XPATH2FILTER);
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+   public static byte[][] pureedge_xfilter2_new(Document doc) throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+      String params[][] = {
+         { XPath2FilterContainer.SUBTRACT,
+         //J-
+            "\n" +
+            "/XFDL/page[@sid='PAGE1']/*[@sid='CHECK16' or \n" +
+            "                           @sid='CHECK17' or \n" +
+            "                           @sid='FIELD47' or \n" +
+            "                           @sid='BUTTON2' or \n" +
+            "                           @sid='FIELD48']\n" +
+            " | \n" +
+            "/XFDL/page/triggeritem[not(attribute::sid) | \n"  +
+            "                       /XFDL/page/*/triggeritem]\n" +
+            " | \n" +
+            "here()/ancestor::ds:Signature[1]" +
+            ""
+            //J+
+          }
+      };
+      NodeList nodeList = XPath2FilterContainer.newInstances(doc, params);
+      transforms.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, nodeList);
+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      byte[] ref = sig.getSignedInfo().item(0).getTransformsOutput().getBytes();
+      byte[][] result = {
+         full, ref
+      };
+
+      // we remove the signature now
+      sig.getElement().getParentNode().removeChild(sig.getElement());
+
+      return result;
+   }
+}
+
diff --git a/src_samples/org/apache/xml/security/samples/algorithms/HMacSHA1RoundTrip.java b/src_samples/org/apache/xml/security/samples/algorithms/HMacSHA1RoundTrip.java
new file mode 100644
index 0000000..76c39a5
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/algorithms/HMacSHA1RoundTrip.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.algorithms;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.algorithms.SignatureAlgorithm;
+import org.apache.xml.security.utils.Base64;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class HMacSHA1RoundTrip {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("signature.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                 privateKeyPass.toCharArray());
+      X509Certificate cert =
+         (X509Certificate) ks.getCertificate(certificateAlias);
+      PublicKey publicKey = cert.getPublicKey();
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.newDocument();
+
+      // SignatureAlgorithm sa = SignatureAlgorithm.getInstance(doc, XMLSignature.ALGO_ID_SIGNATURE_DSA, 120);
+      SignatureAlgorithm sa = new SignatureAlgorithm(doc,
+                                 "http://www.w3.org/2000/09/xmldsig#dsa-sha1");
+
+      sa.initSign(privateKey);
+      sa.update("sdjhfkjashkjf".getBytes());
+
+      byte signatureValue[] = sa.sign();
+
+      System.out.println(Base64.encode(signatureValue));
+      doc.appendChild(sa.getElement());
+      XMLUtils.outputDOM(doc, System.out);
+      System.out.println("");
+      System.out.println("");
+
+      SignatureAlgorithm verifyer =
+         new SignatureAlgorithm(doc.getDocumentElement(), "file:");
+
+      verifyer.initVerify(publicKey);
+      verifyer.update("sdjhfkjashkjf".getBytes());
+
+      boolean result = verifyer.verify(signatureValue);
+
+      if (result) {
+         System.out.println("It verified");
+      } else {
+         System.out.println("It failed");
+      }
+   }
+
+   /**
+    * Method mainSha1
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void mainSha1(String unused[]) throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.newDocument();
+
+      // SignatureAlgorithm sa = SignatureAlgorithm.getInstance(doc, XMLSignature.ALGO_ID_SIGNATURE_DSA, 120);
+      SignatureAlgorithm sa = new SignatureAlgorithm(doc,
+                                 "http://www.w3.org/2000/09/xmldsig#hmac-sha1",
+                                 33);
+
+      // SecretKeyFactory skf = SecretKeyFactory.getInstance(sa.getJCEAlgorithmString(), sa.getJCEProviderName());
+      byte keybytes[] = "01234567890123456789".getBytes();
+      SecretKey sk = new SecretKeySpec(keybytes, sa.getJCEAlgorithmString());
+
+      sa.initSign(sk);
+      sa.update("sdjhfkjashkjf".getBytes());
+
+      byte signatureValue[] = sa.sign();
+
+      System.out.println(Base64.encode(signatureValue));
+      doc.appendChild(sa.getElement());
+      XMLUtils.outputDOM(doc, System.out);
+      System.out.println("");
+      System.out.println("");
+
+      javax.crypto.Mac a;
+      SignatureAlgorithm verifyer =
+         new SignatureAlgorithm(doc.getDocumentElement(), "file:");
+      SecretKey pk = new SecretKeySpec("01234567890123456789".getBytes(),
+                                       verifyer.getJCEAlgorithmString());
+
+      verifyer.initVerify(pk);
+      verifyer.update("sdjhfkjashkjf".getBytes());
+
+      boolean result = verifyer.verify(signatureValue);
+
+      if (result) {
+         System.out.println("It verified");
+      } else {
+         System.out.println("It failed");
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/canonicalization/CanonByTransform.java b/src_samples/org/apache/xml/security/samples/canonicalization/CanonByTransform.java
new file mode 100644
index 0000000..9995ce4
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/canonicalization/CanonByTransform.java
@@ -0,0 +1,101 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.canonicalization;
+
+
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ *
+ */
+public class CanonByTransform {
+   //J-
+   static String input = ""
+      + "<!DOCTYPE doc [<!ATTLIST e9 attr CDATA \"default\">]>\n"
+      + "<!-- Comment 2 --><doc><!-- comment inside -->\n"
+      + "   <e1   />\n"
+      + "   <e2   ></e2>\n"
+      + "   <e3    name = \"elem3\"   id=\"elem3\"    />\n"
+      + "   <e4    name=\"elem4\"   id=\"elem4\"    ></e4>\n"
+      + "   <e5 a:attr=\"out\" b:attr=\"sorted\" attr2=\"all\" attr=\"I'm\"\n"
+      + "       xmlns:b=\"http://www.ietf.org\"\n"
+      + "       xmlns:a=\"http://www.w3.org\"\n"
+      + "       xmlns=\"http://example.org\"/>\n"
+      + "   <e6 xmlns=\"\" xmlns:a=\"http://www.w3.org\">\n"
+      + "       <e7 xmlns=\"http://www.ietf.org\">\n"
+      + "           <e8 xmlns=\"\" xmlns:a=\"http://www.w3.org\">\n"
+      + "               <e9 xmlns=\"\" xmlns:a=\"http://www.ietf.org\"/>\n"
+      + "               <text>&#169;</text>\n"
+      + "           </e8>\n"
+      + "       </e7>\n"
+      + "   </e6>\n"
+      + "</doc><!-- Comment 3 -->\n"
+      ;
+   //J+
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      org.apache.xml.security.Init.init();
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+      dfactory.setValidating(true);
+
+      DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
+
+      // this is to throw away all validation warnings
+      documentBuilder
+         .setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+
+      byte inputBytes[] = input.getBytes();
+      Document inputDoc =
+         documentBuilder.parse(new ByteArrayInputStream(inputBytes));
+
+      // after playing around, we have our document now
+      XMLSignatureInput signatureInput = new XMLSignatureInput((Node) inputDoc);
+      Document transformDoc = documentBuilder.newDocument();
+
+      Transforms c14nTrans = new Transforms(transformDoc);
+      transformDoc.appendChild(c14nTrans.getElement());
+      c14nTrans.addTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments");
+      XMLSignatureInput c14nResult = c14nTrans.performTransforms(signatureInput);
+      byte outputBytes[] = c14nResult.getBytes();
+
+      System.out.println(new String(outputBytes));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/canonicalization/CanonDirect.java b/src_samples/org/apache/xml/security/samples/canonicalization/CanonDirect.java
new file mode 100644
index 0000000..cfcd2f0
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/canonicalization/CanonDirect.java
@@ -0,0 +1,94 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.canonicalization;
+
+
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.w3c.dom.Document;
+
+
+/**
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class CanonDirect {
+   //J-
+   static String input = ""
+      + "<!DOCTYPE doc [<!ATTLIST e9 attr CDATA \"default\">]>\n"
+      + "<!-- Comment 2 --><doc>\n"
+      + "   <e1   />\n"
+      + "   <e2   ></e2>\n"
+      + "   <e3    name = \"elem3\"   id=\"elem3\"    />\n"
+      + "   <e4    name=\"elem4\"   id=\"elem4\"    ></e4>\n"
+      + "   <e5 a:attr=\"out\" b:attr=\"sorted\" attr2=\"all\" attr=\"I'm\"\n"
+      + "       xmlns:b=\"http://www.ietf.org\"\n"
+      + "       xmlns:a=\"http://www.w3.org\"\n"
+      + "       xmlns=\"http://example.org\"/>\n"
+      + "   <e6 xmlns=\"\" xmlns:a=\"http://www.w3.org\">\n"
+      + "       <e7 xmlns=\"http://www.ietf.org\">\n"
+      + "           <e8 xmlns=\"\" xmlns:a=\"http://www.w3.org\">\n"
+      + "               <e9 xmlns=\"\" xmlns:a=\"http://www.ietf.org\"/>\n"
+      + "               <text>&#169;</text>\n"
+      + "           </e8>\n"
+      + "       </e7>\n"
+      + "   </e6>\n"
+      + "</doc><!-- Comment 3 -->\n"
+      ;
+   //J+
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      org.apache.xml.security.Init.init();
+
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+      dfactory.setValidating(true);
+
+      DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
+
+      // this is to throw away all validation warnings
+      documentBuilder
+         .setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+
+      byte inputBytes[] = input.getBytes();
+      Document doc =
+         documentBuilder.parse(new ByteArrayInputStream(inputBytes));
+
+      // after playing around, we have our document now
+      Canonicalizer c14n = Canonicalizer.getInstance(
+         "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments");
+      byte outputBytes[] = c14n.canonicalizeSubtree(doc);
+
+      System.out.println(new String(outputBytes));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/canonicalization/CanonSubTree.java b/src_samples/org/apache/xml/security/samples/canonicalization/CanonSubTree.java
new file mode 100644
index 0000000..e20160c
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/canonicalization/CanonSubTree.java
@@ -0,0 +1,101 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.canonicalization;
+
+
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class CanonSubTree {
+   //J-
+   static String input = ""
+      + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+      + "<Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">\n"
+      + "  <SignedInfo><!-- comment inside -->\n"
+      + "    <CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\" />\n"
+      + "    <SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\" />\n"
+      + "    <Reference URI=\"http://www.w3.org/TR/xml-stylesheet\">\n"
+      + "      <DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" />\n"
+      + "      <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>\n"
+      + "    </Reference>\n"
+      + "  </SignedInfo>\n"
+      + "  <SignatureValue>\n"
+      + "    fKMmy9GYF2s8rLFrZdVugTOFuWx19ccX7jh5HqFd4vMOY7LWAj52ykjSdvtW3fNY\n"
+      + "    PPYGC4MFL19oPSId5GEsMtFMpGXB3XaCtoKjMCHQsN3+kom8YnGf7Ge1JNRcGty5\n"
+      + "    0UsoP6Asj47+QR7QECT64uoziha4WRDVyXjDrg24W+U=\n"
+      + "  </SignatureValue>\n"
+      + "  <KeyInfo>\n"
+      + "    <KeyName>Lugh</KeyName>\n"
+      + "  </KeyInfo>\n"
+      + "</Signature>\n"
+      ;
+   //J+
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      org.apache.xml.security.Init.init();
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+      dfactory.setValidating(true);
+
+      DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
+
+      // this is to throw away all validation warnings
+      documentBuilder
+         .setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+
+      byte inputBytes[] = input.getBytes();
+      Document doc =
+         documentBuilder.parse(new ByteArrayInputStream(inputBytes));
+      Canonicalizer c14n =
+         Canonicalizer
+            .getInstance("http://www.w3.org/TR/2001/REC-xml-c14n-20010315");
+      Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+      Node signedInfo = XPathAPI.selectSingleNode(doc, "//ds:SignedInfo",
+                                                  nscontext);
+      byte outputBytes[] = c14n.canonicalizeSubtree(signedInfo);
+
+      if (outputBytes != null) {
+         System.out.println(new String(outputBytes));
+      }
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/encryption/Decrypter.java b/src_samples/org/apache/xml/security/samples/encryption/Decrypter.java
new file mode 100755
index 0000000..c419588
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/encryption/Decrypter.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.encryption;
+
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import java.security.Key;
+
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESedeKeySpec;
+
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.EncryptionConstants;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.OutputKeys;
+
+/**
+ * This sample demonstrates how to decrypt data inside an xml document.
+ *
+ * @author Vishal Mahajan (Sun Microsystems)
+ */
+public class Decrypter {
+
+    /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+            Decrypter.class.getName());
+
+    static {
+        org.apache.xml.security.Init.init();
+    }
+
+    private static Document loadEncryptionDocument() throws Exception {
+
+        String fileName = "encryptedInfo.xml";
+        File encryptionFile = new File(fileName);
+        javax.xml.parsers.DocumentBuilderFactory dbf =
+            javax.xml.parsers.DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+        Document document = db.parse(encryptionFile);
+        System.out.println(
+            "Encryption document loaded from " +
+            encryptionFile.toURL().toString());
+        return document;
+    }
+
+    private static SecretKey loadKeyEncryptionKey() throws Exception {
+
+        String fileName = "kek";
+        String jceAlgorithmName = "DESede";
+
+        File kekFile = new File(fileName);
+
+        DESedeKeySpec keySpec =
+            new DESedeKeySpec(JavaUtils.getBytesFromFile(fileName));
+        SecretKeyFactory skf =
+             SecretKeyFactory.getInstance(jceAlgorithmName);
+        SecretKey key = skf.generateSecret(keySpec);
+         
+        System.out.println(
+            "Key encryption key loaded from " + kekFile.toURL().toString());
+        return key;
+    }
+
+    private static void outputDocToFile(Document doc, String fileName)
+        throws Exception {
+        File encryptionFile = new File(fileName);
+        FileOutputStream f = new FileOutputStream(encryptionFile);
+
+        TransformerFactory factory = TransformerFactory.newInstance();
+        Transformer transformer = factory.newTransformer();
+        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+        DOMSource source = new DOMSource(doc);
+        StreamResult result = new StreamResult(f);
+        transformer.transform(source, result);
+
+        f.close();
+        System.out.println(
+            "Wrote document containing decrypted data to " +
+            encryptionFile.toURL().toString());
+    }
+
+    public static void main(String unused[]) throws Exception {
+
+        Document document = loadEncryptionDocument();
+
+        Element encryptedDataElement =
+            (Element) document.getElementsByTagNameNS(
+                EncryptionConstants.EncryptionSpecNS,
+                EncryptionConstants._TAG_ENCRYPTEDDATA).item(0);
+
+        /*
+         * Load the key to be used for decrypting the xml data
+         * encryption key.
+         */
+        Key kek = loadKeyEncryptionKey();
+
+        String providerName = "BC";
+
+        XMLCipher xmlCipher =
+            XMLCipher.getInstance();
+        /*
+         * The key to be used for decrypting xml data would be obtained
+         * from the keyinfo of the EncrypteData using the kek.
+         */
+        xmlCipher.init(XMLCipher.DECRYPT_MODE, null);
+        xmlCipher.setKEK(kek);
+        /*
+         * The following doFinal call replaces the encrypted data with
+         * decrypted contents in the document.
+         */
+        xmlCipher.doFinal(document, encryptedDataElement);
+
+        outputDocToFile(document, "decryptedInfo.xml");
+    }
+}
diff --git a/src_samples/org/apache/xml/security/samples/encryption/Encrypter.java b/src_samples/org/apache/xml/security/samples/encryption/Encrypter.java
new file mode 100755
index 0000000..09ea216
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/encryption/Encrypter.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.encryption;
+
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import java.security.Key;
+
+import javax.crypto.SecretKey;
+import javax.crypto.KeyGenerator;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.encryption.EncryptedData;
+import org.apache.xml.security.encryption.EncryptedKey;
+import org.apache.xml.security.utils.Constants;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.OutputKeys;
+
+/**
+ * This sample demonstrates how to encrypt data inside an xml document.
+ *
+ * @author Vishal Mahajan (Sun Microsystems)
+ */
+public class Encrypter {
+
+    /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+            Encrypter.class.getName());
+
+    static {
+        org.apache.xml.security.Init.init();
+    }
+
+    private static Document createSampleDocument() throws Exception {
+
+        javax.xml.parsers.DocumentBuilderFactory dbf =
+            javax.xml.parsers.DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+        Document document = db.newDocument();
+
+        /**
+         * Build a sample document. It will look something like:
+         *
+         * <apache:RootElement xmlns:apache="http://www.apache.org/ns/#app1">
+         * <apache:foo>Some simple text</apache:foo>
+         * </apache:RootElement>
+         */
+        Element root =
+            document.createElementNS(
+                "http://www.apache.org/ns/#app1", "apache:RootElement");
+        root.setAttributeNS(
+            Constants.NamespaceSpecNS,
+            "xmlns:apache",
+            "http://www.apache.org/ns/#app1");
+        document.appendChild(root);
+
+        root.appendChild(document.createTextNode("\n"));
+
+        Element childElement =
+            document.createElementNS(
+                "http://www.apache.org/ns/#app1", "apache:foo");
+        childElement.appendChild(
+            document.createTextNode("Some simple text"));
+        root.appendChild(childElement);
+
+        root.appendChild(document.createTextNode("\n"));
+
+        return document;
+    }
+
+    private static SecretKey GenerateAndStoreKeyEncryptionKey()
+        throws Exception {
+
+        String jceAlgorithmName = "DESede";
+        KeyGenerator keyGenerator =
+            KeyGenerator.getInstance(jceAlgorithmName);
+        SecretKey kek = keyGenerator.generateKey();
+
+        byte[] keyBytes = kek.getEncoded();
+        File kekFile = new File("kek");
+        FileOutputStream f = new FileOutputStream(kekFile);
+        f.write(keyBytes);
+        f.close();
+        System.out.println(
+            "Key encryption key stored in " + kekFile.toURL().toString());
+
+        return kek;
+    }
+
+    private static SecretKey GenerateDataEncryptionKey() throws Exception {
+
+        String jceAlgorithmName = "AES";
+        KeyGenerator keyGenerator =
+            KeyGenerator.getInstance(jceAlgorithmName);
+        keyGenerator.init(128);
+        return keyGenerator.generateKey();
+    }
+
+    private static void outputDocToFile(Document doc, String fileName)
+        throws Exception {
+        File encryptionFile = new File(fileName);
+        FileOutputStream f = new FileOutputStream(encryptionFile);
+
+        TransformerFactory factory = TransformerFactory.newInstance();
+        Transformer transformer = factory.newTransformer();
+        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+        DOMSource source = new DOMSource(doc);
+        StreamResult result = new StreamResult(f);
+        transformer.transform(source, result);
+
+        f.close();
+        System.out.println(
+            "Wrote document containing encrypted data to " +
+            encryptionFile.toURL().toString());
+    }
+
+    public static void main(String unused[]) throws Exception {
+
+        Document document = createSampleDocument();
+
+        /*
+         * Get a key to be used for encrypting the element.
+         * Here we are generating an AES key.
+         */
+        Key symmetricKey = GenerateDataEncryptionKey();
+
+        /*
+         * Get a key to be used for encrypting the symmetric key.
+         * Here we are generating a DESede key.
+         */
+        Key kek = GenerateAndStoreKeyEncryptionKey();
+
+        String algorithmURI = XMLCipher.TRIPLEDES_KeyWrap;
+
+        XMLCipher keyCipher =
+            XMLCipher.getInstance(algorithmURI);
+        keyCipher.init(XMLCipher.WRAP_MODE, kek);
+        EncryptedKey encryptedKey =
+            keyCipher.encryptKey(document, symmetricKey);
+
+        /*
+         * Let us encrypt the contents of the document element.
+         */
+        Element rootElement = document.getDocumentElement();
+
+        algorithmURI = XMLCipher.AES_128;
+
+        XMLCipher xmlCipher =
+            XMLCipher.getInstance(algorithmURI);
+        xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);
+
+        /*
+         * Setting keyinfo inside the encrypted data being prepared.
+         */
+        EncryptedData encryptedData = xmlCipher.getEncryptedData();
+        KeyInfo keyInfo = new KeyInfo(document);
+        keyInfo.add(encryptedKey);
+        encryptedData.setKeyInfo(keyInfo);
+
+        /*
+         * doFinal -
+         * "true" below indicates that we want to encrypt element's content
+         * and not the element itself. Also, the doFinal method would
+         * modify the document by replacing the EncrypteData element
+         * for the data to be encrypted.
+         */
+        xmlCipher.doFinal(document, rootElement, true);
+
+        /*
+         * Output the document containing the encrypted information into
+         * a file.
+         */
+        outputDocToFile(document, "encryptedInfo.xml");
+    }
+}
diff --git a/src_samples/org/apache/xml/security/samples/iaik/IAIKInterOp.java b/src_samples/org/apache/xml/security/samples/iaik/IAIKInterOp.java
new file mode 100644
index 0000000..6a32934
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/iaik/IAIKInterOp.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.iaik;
+
+
+
+import java.io.File;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.apache.xml.security.utils.resolver.implementations.ResolverAnonymous;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class IAIKInterOp {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(IAIKInterOp.class.getName());
+
+   /** Field schemaValidate */
+   static final boolean schemaValidate = false;
+
+   /** Field signatureSchemaFile */
+   static final String signatureSchemaFile = "data/xmldsig-core-schema.xsd";
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      if (schemaValidate) {
+         System.out.println("We do schema-validation");
+      } else {
+         System.out.println("We do not schema-validation");
+      }
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      if (IAIKInterOp.schemaValidate) {
+         dbf.setAttribute("http://apache.org/xml/features/validation/schema",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/features/dom/defer-node-expansion",
+            Boolean.TRUE);
+         dbf.setValidating(true);
+         dbf.setAttribute("http://xml.org/sax/features/validation",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/properties/schema/external-schemaLocation",
+            Constants.SignatureSpecNS + " " + IAIKInterOp.signatureSchemaFile);
+      }
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      //J-
+      String gregorsDir =
+         "data/at/iaik/ixsil/";
+      String filenames[] = {
+                              gregorsDir + "signatureAlgorithms/signatures/hMACSignature.xml"
+                             ,gregorsDir + "signatureAlgorithms/signatures/hMACShortSignature.xml"
+                             ,gregorsDir + "signatureAlgorithms/signatures/dSASignature.xml"
+                             ,gregorsDir + "signatureAlgorithms/signatures/rSASignature.xml"
+                             ,gregorsDir + "transforms/signatures/base64DecodeSignature.xml"
+                             ,gregorsDir + "transforms/signatures/c14nSignature.xml"
+                             ,gregorsDir + "coreFeatures/signatures/manifestSignature.xml"
+                             ,gregorsDir + "transforms/signatures/xPathSignature.xml"
+                             ,gregorsDir + "coreFeatures/signatures/signatureTypesSignature.xml"
+                             ,gregorsDir + "transforms/signatures/envelopedSignatureSignature.xml"
+                             };
+      //J+
+      verifyAnonymous(gregorsDir, dbf);
+
+      for (int i = 0; i < 2; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            org.apache.xml.security.samples.signature
+               .VerifyMerlinsExamplesFifteen.verifyHMAC(dbf, signatureFileName);
+         } catch (Exception ex) {
+            System.out.println("The XML signature in file "
+                               + signatureFileName + " crashed the application (bad)");
+            ex.printStackTrace();
+            System.out.println();
+         }
+      }
+
+      for (int i = 2; i < filenames.length; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            org.apache.xml.security.samples.signature
+               .VerifyMerlinsExamplesSixteen.verify(dbf, signatureFileName);
+         } catch (Exception ex) {
+            System.out.println("The XML signature in file "
+                               + signatureFileName + " crashed the application (bad)");
+            ex.printStackTrace();
+            System.out.println();
+         }
+      }
+
+      for (int i = 2; i < filenames.length; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            org.apache.xml.security.samples.signature
+               .VerifyMerlinsExamplesTwentyThree.verify(dbf, signatureFileName);
+         } catch (Exception ex) {
+            System.out.println("The XML signature in file "
+                               + signatureFileName + " crashed the application (bad)");
+            ex.printStackTrace();
+            System.out.println();
+         }
+      }
+   }
+
+   public static void verifyAnonymous(String gregorsDir, DocumentBuilderFactory dbf) {
+         String filename =
+            gregorsDir
+            + "coreFeatures/signatures/anonymousReferenceSignature.xml";
+      try {
+         String anonymousRef =
+            gregorsDir + "coreFeatures/samples/anonymousReferenceContent.xml";
+         ResourceResolverSpi resolver = new ResolverAnonymous(anonymousRef);
+         File f = new File(filename);
+
+         System.out.println("Try to verify " + f.toURL().toString());
+
+         javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+         org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream(f));
+         Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                                  Constants.SignatureSpecNS);
+         Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                                 "//ds:Signature[1]", nscontext);
+         XMLSignature signature = new XMLSignature(sigElement,
+                                                   f.toURL().toString());
+
+         signature.setFollowNestedManifests(false);
+         signature.addResourceResolver(resolver);
+
+         KeyInfo ki = signature.getKeyInfo();
+
+         if (ki != null) {
+            X509Certificate cert = signature.getKeyInfo().getX509Certificate();
+
+            if (cert != null) {
+               System.out.println("The XML signature in file "
+                                  + f.toURL().toString() + " is "
+                                  + (signature.checkSignatureValue(cert)
+                                     ? "valid (good)"
+                                     : "invalid !!!!! (bad)"));
+            } else {
+               PublicKey pk = signature.getKeyInfo().getPublicKey();
+
+               if (pk != null) {
+                  System.out.println("The XML signature in file "
+                                     + f.toURL().toString() + " is "
+                                     + (signature.checkSignatureValue(pk)
+                                        ? "valid (good)"
+                                        : "invalid !!!!! (bad)"));
+               } else {
+                  System.out.println(
+                     "Did not find a public key, so I can't check the signature");
+               }
+            }
+         } else {
+            System.out.println("Did not find a KeyInfo");
+         }
+      } catch (Exception ex) {
+            System.out.println("The XML signature in file "
+                               + filename + " crashed the application (bad)");
+            ex.printStackTrace();
+            System.out.println();
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java b/src_samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java
new file mode 100644
index 0000000..ff01545
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/keys/CreateKeyInfo.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.keys;
+
+
+
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.security.KeyStore;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.keys.content.keyvalues.RSAKeyValue;
+import org.apache.xml.security.utils.XMLUtils;
+
+
+/**
+ * Class CreateKeyInfo
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class CreateKeyInfo {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      KeyStore ks = KeyStore.getInstance("JKS");
+      FileInputStream fis = new FileInputStream(
+         "data/org/apache/xml/security/samples/input/keystore.jks");
+
+      ks.load(fis, "xmlsecurity".toCharArray());
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+      KeyInfo ki = new KeyInfo(doc);
+
+      doc.appendChild(ki.getElement());
+      ki.setId("myKI");
+      ki.addKeyName("A simple key");
+
+      X509Certificate cert = (X509Certificate) ks.getCertificate("test");
+
+      ki.addKeyValue(cert.getPublicKey());
+
+      X509Data x509Data = new X509Data(doc);
+
+      ki.add(x509Data);
+      x509Data.addCertificate(cert);
+      x509Data.addSubjectName("Subject name");
+      x509Data.addIssuerSerial("Subject nfsdfhs", 6786);
+      ki.add(new RSAKeyValue(doc, new BigInteger("678"),
+                             new BigInteger("6870")));
+      XMLUtils.outputDOMc14nWithComments(doc, System.out);
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java b/src_samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java
new file mode 100644
index 0000000..915ef60
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/keys/RetrievePublicKeys.java
@@ -0,0 +1,122 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.keys;
+
+
+
+import java.io.File;
+import java.security.PublicKey;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.keys.storage.implementations.CertsInFilesystemDirectoryResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class RetrievePublicKeys {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      //J-
+      String merlinsDir =
+         "data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/";
+      String ourDir =
+         "data/org/apache/xml/security/temp/key/";
+      String filenames[] = { merlinsDir +
+                             /* 0 */ "signature-keyname.xml",
+                             merlinsDir +
+                             /* 1 */ "signature-retrievalmethod-rawx509crt.xml",
+                             merlinsDir +
+                             /* 2 */ "signature-x509-crt-crl.xml",
+                             merlinsDir +
+                             /* 3 */ "signature-x509-crt.xml",
+                             merlinsDir +
+                             /* 4 */ "signature-x509-is.xml",
+                             merlinsDir +
+                             /* 5 */ "signature-x509-ski.xml",
+                             merlinsDir +
+                             /* 6 */ "signature-x509-sn.xml",
+                             ourDir +
+                             /* 7 */ "signature-retrievalmethod-x509data.xml",
+                             ourDir +
+                             /* 8 */ "signature-retrievalmethod-dsavalue.xml",
+                             ourDir +
+                             /* 9 */ "retrieval-from-same-doc.xml"
+                             };
+      //J+
+      int start = 0;
+      int end = filenames.length;
+      // int end = filenames.length;
+      for (int filetoverify = start; filetoverify < end;
+              filetoverify++) {
+         String filename = filenames[filetoverify];
+
+         System.out.println(
+            "#########################################################");
+         System.out.println("Try to verify " + filename);
+
+         try {
+            javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+            org.w3c.dom.Document doc =
+               db.parse(new java.io.FileInputStream(filename));
+            Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+            Element kiElement = (Element) XPathAPI.selectSingleNode(doc,
+                                   "//ds:KeyInfo[1]", nscontext);
+            KeyInfo ki = new KeyInfo(kiElement,
+                                     (new File(filename)).toURL().toString());
+            StorageResolver storageResolver = new StorageResolver(
+               new CertsInFilesystemDirectoryResolver(merlinsDir + "certs"));
+
+            ki.addStorageResolver(storageResolver);
+
+            PublicKey pk = ki.getPublicKey();
+
+            System.out.println("PublicKey" + ((pk != null)
+                                              ? " found:"
+                                              : " not found!!!"));
+
+            if (pk != null) {
+               System.out.println("   Format: " + pk.getFormat());
+               System.out.println("   Algorithm: " + pk.getAlgorithm());
+            }
+
+            System.out.println("   Key: " + pk);
+         } catch (Exception ex) {
+            ex.printStackTrace();
+         }
+      }
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/package.html b/src_samples/org/apache/xml/security/samples/package.html
new file mode 100644
index 0000000..a2d1ca7
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/package.html
@@ -0,0 +1,8 @@
+<HTML> 
+<HEAD> </HEAD> 
+<BODY> 
+<P>
+{@link org.apache.xml.security.samples} contains some sample applications and non-standard transforms.
+</P>
+</BODY> 
+</HTML>
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateCollectableSignature.java b/src_samples/org/apache/xml/security/samples/signature/CreateCollectableSignature.java
new file mode 100644
index 0000000..33434b2
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateCollectableSignature.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import org.apache.xml.security.keys.content.KeyName;
+import org.apache.xml.security.signature.SignedInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * These ones can be used to create Signatures which can be collected
+ * using your text editors cut-and-paste feature to create a file wich
+ * contains multiple signatures which remain valid after cut-and-paste.
+ *
+ * This program creates a Signature which can be used for cut-and-paste to be
+ * put into a larger document.
+ *
+ * @author $Author$
+ */
+public class CreateCollectableSignature {
+
+    /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    CreateCollectableSignature.class.getName());
+
+   /** Field passphrase */
+   public static final String passphrase =
+      "The super-mega-secret public static passphrase";
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      //J-
+      File signatureFile = new File("collectableSignature.xml");
+      String BaseURI = signatureFile.toURL().toString();
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+      Element rootElement = doc.createElementNS(null, "root");
+
+      doc.appendChild(rootElement);
+
+      /*
+      Element signedResourceElement = doc.createElementNS("http://custom/", "custom:signedContent");
+      signedResourceElement.setAttributeNS(Constants.NamespaceNS, "xmlns:custom", "http://custom/");
+      signedResourceElement.setAttributeNS(null, "Id", "id0");
+      */
+      Element signedResourceElement = doc.createElementNS(null, "signedContent");
+
+      signedResourceElement.appendChild(doc.createTextNode("Signed Text\n"));
+      rootElement.appendChild(signedResourceElement);
+
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      signedResourceElement.appendChild(sig.getElement());
+
+      {
+         String rootnamespace = signedResourceElement.getNamespaceURI();
+         boolean rootprefixed = (rootnamespace != null)
+                                && (rootnamespace.length() > 0);
+         String rootlocalname = signedResourceElement.getNodeName();
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xpath = new XPathContainer(doc);
+
+         xpath.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+
+         if (rootprefixed) {
+            xpath.setXPathNamespaceContext("root", rootnamespace);
+         }
+
+         //J-
+         String xpathStr = "\n"
+          + "count(                                                                 " + "\n"
+          + " ancestor-or-self::" + (rootprefixed ? "root:" : "") + rootlocalname + "" + "\n"
+          + " |                                                                     " + "\n"
+          + " here()/ancestor::" + (rootprefixed ? "root:" : "") + rootlocalname + "[1] " + "\n"
+          + ") <= count(                                                             " + "\n"
+          + " ancestor-or-self::" + (rootprefixed ? "root:" : "") + rootlocalname + "" + "\n"
+          + ")                                                                      " + "\n"
+          + " and                                                                   " + "\n"
+          + "count(                                                                 " + "\n"
+          + " ancestor-or-self::ds:Signature                                        " + "\n"
+          + " |                                                                     " + "\n"
+          + " here()/ancestor::ds:Signature[1]                                      " + "\n"
+          + ") > count(                                                             " + "\n"
+          + " ancestor-or-self::ds:Signature                                        " + "\n"
+          + ")                                                                      " + "\n"
+
+
+
+          ;
+         //J+
+         xpath.setXPath(xpathStr);
+         transforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                 xpath.getElementPlusReturns());
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         sig.getKeyInfo()
+            .add(new KeyName(doc, CreateCollectableSignature.passphrase));
+         System.out.println("Start signing");
+         sig.sign(sig
+            .createSecretKey(CreateCollectableSignature.passphrase.getBytes()));
+         System.out.println("Finished signing");
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+
+      SignedInfo s = sig.getSignedInfo();
+
+      for (int i = 0; i < s.getSignedContentLength(); i++) {
+         System.out.println("################ Signed Resource " + i
+                            + " ################");
+         System.out.println(new String(s.getSignedContentItem(i)));
+         System.out.println();
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+
+      // org.apache.xml.security.utils.Constants.setSignatureSpecNSprefix("");
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateDonaldsAdditionalURISignature.java b/src_samples/org/apache/xml/security/samples/signature/CreateDonaldsAdditionalURISignature.java
new file mode 100644
index 0000000..02f728f
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateDonaldsAdditionalURISignature.java
@@ -0,0 +1,244 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+
+import javax.crypto.SecretKey;
+import javax.xml.parsers.DocumentBuilder;
+
+import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+/**
+ * Class CreateDonaldsAdditionalURISignature
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class CreateDonaldsAdditionalURISignature {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+            CreateDonaldsAdditionalURISignature.class.getName());
+
+   static Document createDocument(DocumentBuilder db) throws Exception {
+      Document doc = db.newDocument();
+      Element root = doc.createElementNS(null, "container");
+      Element contents = doc.createElementNS(null, "signedContents");
+
+      doc.appendChild(root);
+      XMLUtils.addReturnToElement(root);
+      root.appendChild(contents);
+      XMLUtils.addReturnToElement(root);
+      contents.appendChild(doc.createTextNode("\nSigned item\n\nfor questions, contact geuer-pollmann@nue.et-inf.uni-siegen.de\n"));
+
+      return doc;
+   }
+
+   /**
+    * Method signAndWrite
+    *
+    * @param db
+    * @param privk
+    * @param pubkey
+    * @param SignatureURI
+    * @param DigestURI
+    * @param filename
+    * @throws Exception
+    */
+   public static void signAndWrite(
+           DocumentBuilder db, PrivateKey privk, PublicKey pubkey, String SignatureURI, String DigestURI, String filename)
+              throws Exception {
+
+      Document doc = createDocument(db);
+      Element root = doc.getDocumentElement();
+
+      File f = new File(filename);
+      XMLSignature signature = new XMLSignature(doc, f.toURL().toString(),
+                                                SignatureURI);
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+      signature.addDocument("", transforms, DigestURI);
+      signature.addKeyInfo(pubkey);
+      root.appendChild(signature.getElement());
+      XMLUtils.addReturnToElement(root);
+      signature.sign(privk);
+
+      FileOutputStream fos = new FileOutputStream(f);
+
+      XMLUtils.outputDOMc14nWithComments(doc, fos);
+
+      // System.out.println(new String(signature.getSignedInfo().getReferencedContentAfterTransformsItem(0).getBytes()));
+   }
+
+   /**
+    * Method macAndWrite
+    *
+    * @param db
+    * @param mackey
+    * @param SignatureURI
+    * @param DigestURI
+    * @param filename
+    * @throws Exception
+    */
+   public static void macAndWrite(
+           DocumentBuilder db, byte[] mackey, String SignatureURI, String DigestURI, String filename)
+              throws Exception {
+      System.out.println(SignatureURI + "  ---   " + DigestURI);
+
+
+      Document doc = createDocument(db);
+      Element root = doc.getDocumentElement();
+
+      File f = new File(filename);
+      XMLSignature signature = new XMLSignature(doc, f.toURL().toString(),
+                                                SignatureURI);
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+      signature.addDocument("", transforms, DigestURI);
+
+      SecretKey secretKey = signature.createSecretKey(mackey);
+
+      root.appendChild(signature.getElement());
+      XMLUtils.addReturnToElement(root);
+      signature.sign(secretKey);
+
+      FileOutputStream fos = new FileOutputStream(f);
+
+      XMLUtils.outputDOMc14nWithComments(doc, fos);
+
+      // System.out.println(new String(signature.getSignedInfo().getReferencedContentAfterTransformsItem(0).getBytes()));
+   }
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+      // test digests in references
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacSha1_DigestSha1.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256,
+                  "MacSha1_DigestSha256.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA384,
+                  "MacSha1_DigestSha384.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA512,
+                  "MacSha1_DigestSha512.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_RIPEMD160,
+                  "MacSha1_DigestRipemd160.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5,
+                  "MacSha1_DigestMd5.xml");
+
+
+      // test digests in hmacs
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacSha1_DigestSha1.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA256,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacSha256_DigestSha1.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA384,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacSha384_DigestSha1.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_SHA512,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacSha512_DigestSha1.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacRipemd160_DigestSha1.xml");
+      macAndWrite(db, "secret".getBytes("UTF-8"),
+                  XMLSignature.ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5,
+                  MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                  "MacMd5_DigestSha1.xml");
+
+      KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
+      KeyPair keyPair = kpg.generateKeyPair();
+      PrivateKey privateKey = keyPair.getPrivate();
+      PublicKey pubkey = keyPair.getPublic();
+
+      // test digests in RSA
+      signAndWrite(db, privateKey, pubkey,
+                   XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1,
+                   MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                   "SignatureRsaSha1_DigestSha1.xml");
+      signAndWrite(db, privateKey, pubkey,
+                   XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256,
+                   MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                   "SignatureRsaSha256_DigestSha1.xml");
+      signAndWrite(db, privateKey, pubkey,
+                   XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384,
+                   MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                   "SignatureRsaSha384_DigestSha1.xml");
+      signAndWrite(db, privateKey, pubkey,
+                   XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512,
+                   MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                   "SignatureRsaSha512_DigestSha1.xml");
+      signAndWrite(db, privateKey, pubkey,
+                   XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160,
+                   MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                   "SignatureRsaRipemd160_DigestSha1.xml");
+      signAndWrite(db, privateKey, pubkey,
+                   XMLSignature.ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5,
+                   MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
+                   "SignatureRsaMd5_DigestSha1.xml");
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateEnvelopingSignature.java b/src_samples/org/apache/xml/security/samples/signature/CreateEnvelopingSignature.java
new file mode 100644
index 0000000..f2356bb
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateEnvelopingSignature.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.signature.ObjectContainer;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ *
+ * @author $Author$
+ */
+public class CreateEnvelopingSignature {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(CreateSignature.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("signature.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                 privateKeyPass.toCharArray());
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+      String BaseURI = signatureFile.toURL().toString();
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+
+      doc.appendChild(sig.getElement());
+
+      {
+         ObjectContainer obj = new ObjectContainer(doc);
+         Element anElement = doc.createElementNS(null, "InsideObject");
+
+         anElement.appendChild(doc.createTextNode("A text in a box"));
+         obj.appendChild(anElement);
+
+         String Id = "TheFirstObject";
+
+         obj.setId(Id);
+         sig.appendObject(obj);
+
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#" + Id, transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         X509Certificate cert =
+            (X509Certificate) ks.getCertificate(certificateAlias);
+
+         sig.addKeyInfo(cert);
+         sig.addKeyInfo(cert.getPublicKey());
+         System.out.println("Start signing");
+         sig.sign(privateKey);
+         System.out.println("Finished signing");
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+
+      for (int i=0; i<sig.getSignedInfo().getSignedContentLength(); i++) {
+         System.out.println("--- Signed Content follows ---");
+         System.out.println(new String(sig.getSignedInfo().getSignedContentItem(i)));
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateMerlinsExampleSixteen.java b/src_samples/org/apache/xml/security/samples/signature/CreateMerlinsExampleSixteen.java
new file mode 100644
index 0000000..7d0cf19
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateMerlinsExampleSixteen.java
@@ -0,0 +1,533 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.keys.content.RetrievalMethod;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.keys.content.x509.XMLX509Certificate;
+import org.apache.xml.security.keys.content.x509.XMLX509IssuerSerial;
+import org.apache.xml.security.keys.content.x509.XMLX509SubjectName;
+import org.apache.xml.security.samples.utils.resolver.OfflineResolver;
+import org.apache.xml.security.signature.Manifest;
+import org.apache.xml.security.signature.ObjectContainer;
+import org.apache.xml.security.signature.Reference;
+import org.apache.xml.security.signature.SignatureProperties;
+import org.apache.xml.security.signature.SignatureProperty;
+import org.apache.xml.security.signature.SignedInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class CreateMerlinsExampleSixteen {
+    
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(CreateMerlinsExampleSixteen.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      Constants.setSignatureSpecNSprefix("");
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("merlinsSixteenRecreatedNoRetrievalMethod.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                 privateKeyPass.toCharArray());
+
+      if (privateKey == null) {
+         throw new RuntimeException("Private key is null");
+      }
+
+      X509Certificate cert =
+         (X509Certificate) ks.getCertificate(certificateAlias);
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+
+      //////////////////////////////////////////////////
+      Element envelope = doc.createElementNS("http://www.usps.gov/",
+                                             "Envelope");
+
+      envelope.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "http://www.usps.gov/");
+      envelope.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:foo", "http://www.usps.gov/foo");
+      envelope.appendChild(doc.createTextNode("\n"));
+      doc.appendChild(doc.createComment(" Preamble "));
+      doc.appendChild(envelope);
+      doc.appendChild(doc.createComment(" Postamble "));
+
+      Element dearSir = doc.createElementNS("http://www.usps.gov/", "DearSir");
+
+      dearSir.appendChild(doc.createTextNode("foo"));
+      envelope.appendChild(dearSir);
+      envelope.appendChild(doc.createTextNode("\n"));
+
+      Element body = doc.createElementNS("http://www.usps.gov/", "Body");
+
+      body.appendChild(doc.createTextNode("bar"));
+      envelope.appendChild(body);
+      envelope.appendChild(doc.createTextNode("\n"));
+
+      Element YoursSincerely = doc.createElementNS("http://www.usps.gov/",
+                                  "YoursSincerely");
+      YoursSincerely.appendChild(doc.createTextNode("\n"));
+
+      envelope.appendChild(YoursSincerely);
+
+      Element PostScript = doc.createElementNS("http://www.usps.gov/",
+                                               "PostScript");
+
+      PostScript.appendChild(doc.createTextNode("bar"));
+      envelope.appendChild(PostScript);
+
+      Element Notaries = doc.createElementNS(null, "Notaries");
+
+      Notaries.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "");
+      Notaries.setAttributeNS(null, "Id", "notaries");
+      IdResolver.registerElementById(Notaries, "Id");
+
+      {
+         Element Notary = doc.createElementNS(null, "Notary");
+
+         Notary.setAttributeNS(null, "name", "Great, A. T.");
+         Notaries.appendChild(Notary);
+      }
+
+      {
+         Element Notary = doc.createElementNS(null, "Notary");
+
+         Notary.setAttributeNS(null, "name", "Hun, A. T.");
+         Notaries.appendChild(Notary);
+      }
+
+      envelope.appendChild(Notaries);
+      envelope.appendChild(doc.createComment(" Commentary "));
+
+      //////////////////////////////////////////////////
+      String BaseURI = signatureFile.toURL().toString();
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+
+      YoursSincerely.appendChild(sig.getElement());
+      sig.setId("signature");
+
+      /*
+       * Add the Objects
+       */
+
+      // object-1
+      {
+         ObjectContainer object1 = new ObjectContainer(doc);
+
+         object1.setId("object-1");
+         object1.setMimeType("text/plain");
+         object1.appendChild(doc.createTextNode("I am the text."));
+         sig.appendObject(object1);
+      }
+
+      // object-2
+      {
+         ObjectContainer object2 = new ObjectContainer(doc);
+
+         object2.setId("object-2");
+         object2.setMimeType("text/plain");
+         object2.setEncoding("http://www.w3.org/2000/09/xmldsig#base64");
+         object2.appendChild(doc.createTextNode("SSBhbSB0aGUgdGV4dC4="));
+         sig.appendObject(object2);
+      }
+
+      // object-3
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+
+         object.setId("object-3");
+
+         Element nonc = doc.createElementNS(null, "NonCommentandus");
+
+         nonc.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "");
+         nonc.appendChild(doc.createComment(" Commentandum "));
+         object.appendChild(doc.createTextNode("\n        "));
+         object.appendChild(nonc);
+         object.appendChild(doc.createTextNode("\n      "));
+         sig.appendObject(object);
+      }
+
+      // object number 4
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+
+         object.appendChild(createObject4(sig));
+         sig.appendObject(object);
+      }
+
+      // object number 4
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+         SignatureProperties sps = new SignatureProperties(doc);
+
+         sps.setId("signature-properties-1");
+
+         SignatureProperty sp = new SignatureProperty(doc, "#signature");
+         Element signedAdress = doc.createElementNS("urn:demo",
+                                                    "SignedAddress");
+
+         signedAdress.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "urn:demo");
+
+         Element IP = doc.createElementNS("urn:demo", "IP");
+
+         IP.appendChild(doc.createTextNode("192.168.21.138"));
+         signedAdress.appendChild(IP);
+         sp.appendChild(signedAdress);
+         sps.addSignatureProperty(sp);
+         object.appendChild(sps.getElement());
+         sig.appendObject(object);
+      }
+
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+
+         object.setId("object-4");
+
+         X509Data x509data = new X509Data(doc);
+
+         x509data.add(new XMLX509SubjectName(doc, cert));
+         x509data.add(new XMLX509IssuerSerial(doc, cert));
+         x509data.add(new XMLX509Certificate(doc, cert));
+         object.appendChild(x509data.getElement());
+         sig.appendObject(object);
+      }
+
+      /*
+       * Add References
+       */
+      sig.getSignedInfo()
+         .addResourceResolver(new org.apache.xml.security.samples.utils.resolver
+            .OfflineResolver());
+      sig.addDocument("http://www.w3.org/TR/xml-stylesheet");
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_BASE64_DECODE);
+         sig.addDocument("http://xmldsig.pothole.com/xml-stylesheet.txt",
+                         transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xpathC = new XPathContainer(doc);
+
+         xpathC.setXPath("self::text()");
+         transforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                 xpathC.getElementPlusReturns());
+         sig.addDocument("#object-1", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+      /*
+      {
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xpathC = new XPathContainer(doc);
+
+         //J-
+         xpathC.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpathC.setXPath("\n"
+          + " ancestor-or-self::ds:SignedInfo                    " + "\n"
+          + "  and                                               " + "\n"
+          + " count(ancestor-or-self::ds:Reference |             " + "\n"
+          + "      here()/ancestor::ds:Reference[1]) >           " + "\n"
+          + " count(ancestor-or-self::ds:Reference)              " + "\n"
+          + "  or                                                " + "\n"
+          + " count(ancestor-or-self::node() |                   " + "\n"
+          + "      id('notaries')) =                             " + "\n"
+          + " count(ancestor-or-self::node())                    " + "\n");
+         //J+
+         transforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                 xpathC.getElementPlusReturns());
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+      */
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_BASE64_DECODE);
+         sig.addDocument("#object-2", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      sig.addDocument("#manifest-1", null, Constants.ALGO_ID_DIGEST_SHA1, null,
+                      "http://www.w3.org/2000/09/xmldsig#Manifest");
+      sig.addDocument("#signature-properties-1", null,
+                      Constants.ALGO_ID_DIGEST_SHA1, null,
+                      "http://www.w3.org/2000/09/xmldsig#SignatureProperties");
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         sig.addDocument("#xpointer(/)", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#xpointer(/)", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         sig.addDocument("#object-3", null, Constants.ALGO_ID_DIGEST_SHA1,
+                         null, "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#object-3", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         sig.addDocument("#xpointer(id('object-3'))", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#xpointer(id('object-3'))", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         sig.addDocument("#manifest-reference-1", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, "reference-1",
+                         "http://www.w3.org/2000/09/xmldsig#Reference");
+      }
+
+      {
+         sig.addDocument("#reference-1", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, "reference-2",
+                         "http://www.w3.org/2000/09/xmldsig#Reference");
+      }
+
+      {
+         sig.addDocument("#reference-2", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Reference");
+      }
+
+      /*
+       * Add KeyInfo and sign()
+       */
+      {
+         Transforms retrievalTransforms = new Transforms(doc);
+         XPathContainer xpathC = new XPathContainer(doc);
+
+         xpathC.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpathC.setXPath("ancestor-or-self::ds:X509Data");
+         retrievalTransforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                          xpathC.getElement());
+         sig.getKeyInfo().add(
+            new RetrievalMethod(
+               doc, "#object-4", retrievalTransforms,
+               "http://www.w3.org/2000/09/xmldsig#X509Data"));
+
+         /*
+         X509Data x509data = new X509Data(doc);
+
+         x509data.add(new XMLX509SubjectName(doc, cert));
+         x509data.add(new XMLX509IssuerSerial(doc, cert));
+         x509data.add(new XMLX509Certificate(doc, cert));
+         sig.getKeyInfo().add(x509data);
+         */
+
+         System.out.println("Start signing");
+         sig.sign(privateKey);
+         System.out.println("Finished signing");
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+
+      SignedInfo s = sig.getSignedInfo();
+      for (int i=0; i<s.getLength(); i++) {
+         Reference r = s.item(i);
+         String fn = "merlin16_"+i+".html";
+         System.out.println("Wrote Reference " + i + " to file " + fn);
+         JavaUtils.writeBytesToFilename(fn, r.getHTMLRepresentation().getBytes());
+      }
+
+
+      /*
+      for (int i=0; i<s.getSignedContentLength(); i++) {
+         if (s.item(i).getType().equals(Reference.MANIFEST_URI)) {
+            System.out.println("################ Signed Manifest " + i + " ################");
+         } else {
+            System.out.println("################ Signed Resource " + i + " ################");
+         }
+         System.out.println(new String(s.getSignedContentItem(i)));
+         System.out.println();
+      }
+      */
+   }
+
+   /**
+    * Method createObject4
+    *
+    * @param sig
+    *
+    * @throws Exception
+    */
+   public static Element createObject4(XMLSignature sig) throws Exception {
+
+      Document doc = sig.getElement().getOwnerDocument();
+      String BaseURI = sig.getBaseURI();
+      Manifest manifest = new Manifest(doc);
+      manifest.addResourceResolver(new OfflineResolver());
+
+      manifest.setId("manifest-1");
+      manifest.addDocument(BaseURI, "http://www.w3.org/TR/xml-stylesheet",
+                           null, Constants.ALGO_ID_DIGEST_SHA1,
+                           "manifest-reference-1", null);
+      manifest.addDocument(BaseURI, "#reference-1", null,
+                           Constants.ALGO_ID_DIGEST_SHA1, null,
+                           "http://www.w3.org/2000/09/xmldsig#Reference");
+
+      //J-
+      String xslt = ""
+      + "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'\n"
+      + "                xmlns='http://www.w3.org/TR/xhtml1/strict' \n"
+      + "                exclude-result-prefixes='foo' \n"
+      + "                version='1.0'>\n"
+      + "  <xsl:output encoding='UTF-8' \n"
+      + "              indent='no' \n"
+      + "              method='xml' />\n"
+      + "  <xsl:template match='/'>\n"
+      + "    <html>\n"
+      + "      <head>\n"
+      + "        <title>Notaries</title>\n"
+      + "      </head>\n"
+      + "      <body>\n"
+      + "        <table>\n"
+      + "          <xsl:for-each select='Notaries/Notary'>\n"
+      + "            <tr>\n"
+      + "              <th>\n"
+      + "                <xsl:value-of select='@name' />\n"
+      + "              </th>\n"
+      + "            </tr>\n"
+      + "          </xsl:for-each>\n"
+      + "        </table>\n"
+      + "      </body>\n"
+      + "    </html>\n"
+      + "  </xsl:template>\n"
+      + "</xsl:stylesheet>\n"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document docxslt =
+         db.parse(new ByteArrayInputStream(xslt.getBytes()));
+      Node xslElem = docxslt.getDocumentElement();
+      Node xslElemImported = doc.importNode(xslElem, true);
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_XSLT,
+                              (Element) xslElemImported);
+      manifest.addDocument(BaseURI, "#notaries", transforms,
+                           Constants.ALGO_ID_DIGEST_SHA1, null, null);
+
+      return manifest.getElement();
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateMerlinsExampleTwentyThree.java b/src_samples/org/apache/xml/security/samples/signature/CreateMerlinsExampleTwentyThree.java
new file mode 100644
index 0000000..6a9b1ef
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateMerlinsExampleTwentyThree.java
@@ -0,0 +1,533 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.keys.content.RetrievalMethod;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.keys.content.x509.XMLX509Certificate;
+import org.apache.xml.security.keys.content.x509.XMLX509IssuerSerial;
+import org.apache.xml.security.keys.content.x509.XMLX509SubjectName;
+import org.apache.xml.security.samples.utils.resolver.OfflineResolver;
+import org.apache.xml.security.signature.Manifest;
+import org.apache.xml.security.signature.ObjectContainer;
+import org.apache.xml.security.signature.Reference;
+import org.apache.xml.security.signature.SignatureProperties;
+import org.apache.xml.security.signature.SignatureProperty;
+import org.apache.xml.security.signature.SignedInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class CreateMerlinsExampleTwentyThree {
+    
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(CreateMerlinsExampleTwentyThree.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      Constants.setSignatureSpecNSprefix("");
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("merlinsTwentyThreeRecreatedNoRetrievalMethod.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                 privateKeyPass.toCharArray());
+
+      if (privateKey == null) {
+         throw new RuntimeException("Private key is null");
+      }
+
+      X509Certificate cert =
+         (X509Certificate) ks.getCertificate(certificateAlias);
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+
+      //////////////////////////////////////////////////
+      Element envelope = doc.createElementNS("http://www.usps.gov/",
+                                             "Envelope");
+
+      envelope.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "http://www.usps.gov/");
+      envelope.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:foo", "http://www.usps.gov/foo");
+      envelope.appendChild(doc.createTextNode("\n"));
+      doc.appendChild(doc.createComment(" Preamble "));
+      doc.appendChild(envelope);
+      doc.appendChild(doc.createComment(" Postamble "));
+
+      Element dearSir = doc.createElementNS("http://www.usps.gov/", "DearSir");
+
+      dearSir.appendChild(doc.createTextNode("foo"));
+      envelope.appendChild(dearSir);
+      envelope.appendChild(doc.createTextNode("\n"));
+
+      Element body = doc.createElementNS("http://www.usps.gov/", "Body");
+
+      body.appendChild(doc.createTextNode("bar"));
+      envelope.appendChild(body);
+      envelope.appendChild(doc.createTextNode("\n"));
+
+      Element YoursSincerely = doc.createElementNS("http://www.usps.gov/",
+                                  "YoursSincerely");
+      YoursSincerely.appendChild(doc.createTextNode("\n"));
+
+      envelope.appendChild(YoursSincerely);
+
+      Element PostScript = doc.createElementNS("http://www.usps.gov/",
+                                               "PostScript");
+
+      PostScript.appendChild(doc.createTextNode("bar"));
+      envelope.appendChild(PostScript);
+
+      Element Notaries = doc.createElementNS(null, "Notaries");
+
+      Notaries.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "");
+      Notaries.setAttributeNS(null, "Id", "notaries");
+      IdResolver.registerElementById(Notaries, "Id");
+
+      {
+         Element Notary = doc.createElementNS(null, "Notary");
+
+         Notary.setAttributeNS(null, "name", "Great, A. T.");
+         Notaries.appendChild(Notary);
+      }
+
+      {
+         Element Notary = doc.createElementNS(null, "Notary");
+
+         Notary.setAttributeNS(null, "name", "Hun, A. T.");
+         Notaries.appendChild(Notary);
+      }
+
+      envelope.appendChild(Notaries);
+      envelope.appendChild(doc.createComment(" Commentary "));
+
+      //////////////////////////////////////////////////
+      String BaseURI = signatureFile.toURL().toString();
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+
+      YoursSincerely.appendChild(sig.getElement());
+      sig.setId("signature");
+
+      /*
+       * Add the Objects
+       */
+
+      // object-1
+      {
+         ObjectContainer object1 = new ObjectContainer(doc);
+
+         object1.setId("object-1");
+         object1.setMimeType("text/plain");
+         object1.appendChild(doc.createTextNode("I am the text."));
+         sig.appendObject(object1);
+      }
+
+      // object-2
+      {
+         ObjectContainer object2 = new ObjectContainer(doc);
+
+         object2.setId("object-2");
+         object2.setMimeType("text/plain");
+         object2.setEncoding("http://www.w3.org/2000/09/xmldsig#base64");
+         object2.appendChild(doc.createTextNode("SSBhbSB0aGUgdGV4dC4="));
+         sig.appendObject(object2);
+      }
+
+      // object-3
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+
+         object.setId("object-3");
+
+         Element nonc = doc.createElementNS(null, "NonCommentandus");
+
+         nonc.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "");
+         nonc.appendChild(doc.createComment(" Commentandum "));
+         object.appendChild(doc.createTextNode("\n        "));
+         object.appendChild(nonc);
+         object.appendChild(doc.createTextNode("\n      "));
+         sig.appendObject(object);
+      }
+
+      // object number 4
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+
+         object.appendChild(createObject4(sig));
+         sig.appendObject(object);
+      }
+
+      // object number 4
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+         SignatureProperties sps = new SignatureProperties(doc);
+
+         sps.setId("signature-properties-1");
+
+         SignatureProperty sp = new SignatureProperty(doc, "#signature");
+         Element signedAdress = doc.createElementNS("urn:demo",
+                                                    "SignedAddress");
+
+         signedAdress.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "urn:demo");
+
+         Element IP = doc.createElementNS("urn:demo", "IP");
+
+         IP.appendChild(doc.createTextNode("192.168.21.138"));
+         signedAdress.appendChild(IP);
+         sp.appendChild(signedAdress);
+         sps.addSignatureProperty(sp);
+         object.appendChild(sps.getElement());
+         sig.appendObject(object);
+      }
+
+      {
+         ObjectContainer object = new ObjectContainer(doc);
+
+         object.setId("object-4");
+
+         X509Data x509data = new X509Data(doc);
+
+         x509data.add(new XMLX509SubjectName(doc, cert));
+         x509data.add(new XMLX509IssuerSerial(doc, cert));
+         x509data.add(new XMLX509Certificate(doc, cert));
+         object.appendChild(x509data.getElement());
+         sig.appendObject(object);
+      }
+
+      /*
+       * Add References
+       */
+      sig.getSignedInfo()
+         .addResourceResolver(new org.apache.xml.security.samples.utils.resolver
+            .OfflineResolver());
+      sig.addDocument("http://www.w3.org/TR/xml-stylesheet");
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_BASE64_DECODE);
+         sig.addDocument("http://xmldsig.pothole.com/xml-stylesheet.txt",
+                         transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xpathC = new XPathContainer(doc);
+
+         xpathC.setXPath("self::text()");
+         transforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                 xpathC.getElementPlusReturns());
+         sig.addDocument("#object-1", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+      /*
+      {
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xpathC = new XPathContainer(doc);
+
+         //J-
+         xpathC.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpathC.setXPath("\n"
+          + " ancestor-or-self::ds:SignedInfo                    " + "\n"
+          + "  and                                               " + "\n"
+          + " count(ancestor-or-self::ds:Reference |             " + "\n"
+          + "      here()/ancestor::ds:Reference[1]) >           " + "\n"
+          + " count(ancestor-or-self::ds:Reference)              " + "\n"
+          + "  or                                                " + "\n"
+          + " count(ancestor-or-self::node() |                   " + "\n"
+          + "      id('notaries')) =                             " + "\n"
+          + " count(ancestor-or-self::node())                    " + "\n");
+         //J+
+         transforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                 xpathC.getElementPlusReturns());
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+      */
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_BASE64_DECODE);
+         sig.addDocument("#object-2", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      sig.addDocument("#manifest-1", null, Constants.ALGO_ID_DIGEST_SHA1, null,
+                      "http://www.w3.org/2000/09/xmldsig#Manifest");
+      sig.addDocument("#signature-properties-1", null,
+                      Constants.ALGO_ID_DIGEST_SHA1, null,
+                      "http://www.w3.org/2000/09/xmldsig#SignatureProperties");
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         sig.addDocument("#xpointer(/)", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#xpointer(/)", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         sig.addDocument("#object-3", null, Constants.ALGO_ID_DIGEST_SHA1,
+                         null, "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#object-3", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         sig.addDocument("#xpointer(id('object-3'))", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         Transforms transforms = new Transforms(doc);
+
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("#xpointer(id('object-3'))", transforms,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Object");
+      }
+
+      {
+         sig.addDocument("#manifest-reference-1", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, "reference-1",
+                         "http://www.w3.org/2000/09/xmldsig#Reference");
+      }
+
+      {
+         sig.addDocument("#reference-1", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, "reference-2",
+                         "http://www.w3.org/2000/09/xmldsig#Reference");
+      }
+
+      {
+         sig.addDocument("#reference-2", null,
+                         Constants.ALGO_ID_DIGEST_SHA1, null,
+                         "http://www.w3.org/2000/09/xmldsig#Reference");
+      }
+
+      /*
+       * Add KeyInfo and sign()
+       */
+      {
+         Transforms retrievalTransforms = new Transforms(doc);
+         XPathContainer xpathC = new XPathContainer(doc);
+
+         xpathC.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpathC.setXPath("ancestor-or-self::ds:X509Data");
+         retrievalTransforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                          xpathC.getElement());
+         sig.getKeyInfo().add(
+            new RetrievalMethod(
+               doc, "#object-4", retrievalTransforms,
+               "http://www.w3.org/2000/09/xmldsig#X509Data"));
+
+         /*
+         X509Data x509data = new X509Data(doc);
+
+         x509data.add(new XMLX509SubjectName(doc, cert));
+         x509data.add(new XMLX509IssuerSerial(doc, cert));
+         x509data.add(new XMLX509Certificate(doc, cert));
+         sig.getKeyInfo().add(x509data);
+         */
+
+         System.out.println("Start signing");
+         sig.sign(privateKey);
+         System.out.println("Finished signing");
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+
+      SignedInfo s = sig.getSignedInfo();
+      for (int i=0; i<s.getLength(); i++) {
+         Reference r = s.item(i);
+         String fn = "merlin16_"+i+".html";
+         System.out.println("Wrote Reference " + i + " to file " + fn);
+         JavaUtils.writeBytesToFilename(fn, r.getHTMLRepresentation().getBytes());
+      }
+
+
+      /*
+      for (int i=0; i<s.getSignedContentLength(); i++) {
+         if (s.item(i).getType().equals(Reference.MANIFEST_URI)) {
+            System.out.println("################ Signed Manifest " + i + " ################");
+         } else {
+            System.out.println("################ Signed Resource " + i + " ################");
+         }
+         System.out.println(new String(s.getSignedContentItem(i)));
+         System.out.println();
+      }
+      */
+   }
+
+   /**
+    * Method createObject4
+    *
+    * @param sig
+    *
+    * @throws Exception
+    */
+   public static Element createObject4(XMLSignature sig) throws Exception {
+
+      Document doc = sig.getElement().getOwnerDocument();
+      String BaseURI = sig.getBaseURI();
+      Manifest manifest = new Manifest(doc);
+      manifest.addResourceResolver(new OfflineResolver());
+
+      manifest.setId("manifest-1");
+      manifest.addDocument(BaseURI, "http://www.w3.org/TR/xml-stylesheet",
+                           null, Constants.ALGO_ID_DIGEST_SHA1,
+                           "manifest-reference-1", null);
+      manifest.addDocument(BaseURI, "#reference-1", null,
+                           Constants.ALGO_ID_DIGEST_SHA1, null,
+                           "http://www.w3.org/2000/09/xmldsig#Reference");
+
+      //J-
+      String xslt = ""
+      + "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'\n"
+      + "                xmlns='http://www.w3.org/TR/xhtml1/strict' \n"
+      + "                exclude-result-prefixes='foo' \n"
+      + "                version='1.0'>\n"
+      + "  <xsl:output encoding='UTF-8' \n"
+      + "              indent='no' \n"
+      + "              method='xml' />\n"
+      + "  <xsl:template match='/'>\n"
+      + "    <html>\n"
+      + "      <head>\n"
+      + "        <title>Notaries</title>\n"
+      + "      </head>\n"
+      + "      <body>\n"
+      + "        <table>\n"
+      + "          <xsl:for-each select='Notaries/Notary'>\n"
+      + "            <tr>\n"
+      + "              <th>\n"
+      + "                <xsl:value-of select='@name' />\n"
+      + "              </th>\n"
+      + "            </tr>\n"
+      + "          </xsl:for-each>\n"
+      + "        </table>\n"
+      + "      </body>\n"
+      + "    </html>\n"
+      + "  </xsl:template>\n"
+      + "</xsl:stylesheet>\n"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document docxslt =
+         db.parse(new ByteArrayInputStream(xslt.getBytes()));
+      Node xslElem = docxslt.getDocumentElement();
+      Node xslElemImported = doc.importNode(xslElem, true);
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_XSLT,
+                              (Element) xslElemImported);
+      manifest.addDocument(BaseURI, "#notaries", transforms,
+                           Constants.ALGO_ID_DIGEST_SHA1, null, null);
+
+      return manifest.getElement();
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateNullURIReference.java b/src_samples/org/apache/xml/security/samples/signature/CreateNullURIReference.java
new file mode 100644
index 0000000..157ae45
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateNullURIReference.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+
+
+/**
+ * Class CreateNullURIReference
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class CreateNullURIReference {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                        CreateNullURIReference.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("signature.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                 privateKeyPass.toCharArray());
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+      String BaseURI = signatureFile.toURL().toString();
+
+      Constants.setSignatureSpecNSprefix(null);
+
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+      byte[][] memoryData = {
+         "The secret data".getBytes(), "dataset 2".getBytes(),
+      };
+
+      sig.addResourceResolver(new NullURIReferenceResolver(memoryData));
+      doc.appendChild(sig.getElement());
+
+      {
+         sig.addDocument(null, null, Constants.ALGO_ID_DIGEST_SHA1);
+         sig.addDocument(null, null, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         X509Certificate cert =
+            (X509Certificate) ks.getCertificate(certificateAlias);
+
+         sig.addKeyInfo(cert);
+         sig.addKeyInfo(cert.getPublicKey());
+         System.out.println("Start signing");
+         sig.sign(privateKey);
+         System.out.println("Finished signing");
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/CreateSignature.java b/src_samples/org/apache/xml/security/samples/signature/CreateSignature.java
new file mode 100644
index 0000000..37e90e9
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/CreateSignature.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ *
+ * @author $Author$
+ */
+public class CreateSignature {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(CreateSignature.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      Constants.setSignatureSpecNSprefix("");
+
+      //J-
+      //All the parameters for the keystore
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("signature.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      //load the keystore
+      ks.load(fis, keystorePass.toCharArray());
+
+      //get the private key for signing.
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                             privateKeyPass.toCharArray());
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      //XML Signature needs to be namespace aware
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+
+      //Build a sample document. It will look something like:
+      //<!-- Comment before -->
+      //<apache:RootElement xmlns:apache="http://www.apache.org/ns/#app1">Some simple text
+      //</apache:RootElement>
+      //<!-- Comment after -->
+      doc.appendChild(doc.createComment(" Comment before "));
+
+      Element root = doc.createElementNS("http://www.apache.org/ns/#app1",
+                                         "apache:RootElement");
+
+      root.setAttributeNS(null, "attr1", "test1");
+      root.setAttributeNS(null, "attr2", "test2");
+      root.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:foo", "http://example.org/#foo");
+      root.setAttributeNS("http://example.org/#foo", "foo:attr1", "foo's test");
+
+
+
+      root.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:apache", "http://www.apache.org/ns/#app1");
+      doc.appendChild(root);
+      root.appendChild(doc.createTextNode("Some simple text\n"));
+
+      //The BaseURI is the URI that's used to prepend to relative URIs
+      String BaseURI = signatureFile.toURL().toString();
+      //Create an XML Signature object from the document, BaseURI and
+      //signature algorithm (in this case DSA)
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+
+
+      //Append the signature element to the root element before signing because
+      //this is going to be an enveloped signature.
+      //This means the signature is going to be enveloped by the document.
+      //Two other possible forms are enveloping where the document is inside the
+      //signature and detached where they are seperate.
+      //Note that they can be mixed in 1 signature with seperate references as
+      //shown below.
+      root.appendChild(sig.getElement());
+      doc.appendChild(doc.createComment(" Comment after "));
+      sig.getSignedInfo()
+         .addResourceResolver(new org.apache.xml.security.samples.utils.resolver
+            .OfflineResolver());
+
+      {
+         //create the transforms object for the Document/Reference
+         Transforms transforms = new Transforms(doc);
+
+         //First we have to strip away the signature element (it's not part of the
+         //signature calculations). The enveloped transform can be used for this.
+         transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
+         //Part of the signature element needs to be canonicalized. It is a kind
+         //of normalizing algorithm for XML. For more information please take a
+         //look at the W3C XML Digital Signature webpage.
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         //Add the above Document/Reference
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         //Add in 2 external URIs. This is a detached Reference.
+         //
+         // When sign() is called, two network connections are made. -- well,
+         // not really, as we use the OfflineResolver which acts as a proxy for
+         // these two resouces ;-))
+         //
+         sig.addDocument("http://www.w3.org/TR/xml-stylesheet");
+         sig.addDocument("http://www.nue.et-inf.uni-siegen.de/index.html");
+      }
+
+      {
+         //Add in the KeyInfo for the certificate that we used the private key of
+         X509Certificate cert =
+            (X509Certificate) ks.getCertificate(certificateAlias);
+
+         sig.addKeyInfo(cert);
+         sig.addKeyInfo(cert.getPublicKey());
+         System.out.println("Start signing");
+         sig.sign(privateKey);
+         System.out.println("Finished signing");
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/HereSigner.java b/src_samples/org/apache/xml/security/samples/signature/HereSigner.java
new file mode 100644
index 0000000..619f22e
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/HereSigner.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.signature.ObjectContainer;
+import org.apache.xml.security.signature.SignedInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.HelperNodeList;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ *
+ * @author $Author$
+ */
+public class HereSigner {
+
+    /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(HereSigner.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      //J-
+      String keystoreType = "JKS";
+      String keystoreFile = "data/org/apache/xml/security/samples/input/keystore.jks";
+      String keystorePass = "xmlsecurity";
+      String privateKeyAlias = "test";
+      String privateKeyPass = "xmlsecurity";
+      String certificateAlias = "test";
+      File signatureFile = new File("hereSignature.xml");
+      //J+
+      KeyStore ks = KeyStore.getInstance(keystoreType);
+      FileInputStream fis = new FileInputStream(keystoreFile);
+
+      ks.load(fis, keystorePass.toCharArray());
+
+      PrivateKey privateKey = (PrivateKey) ks.getKey(privateKeyAlias,
+                                             privateKeyPass.toCharArray());
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+
+
+      String BaseURI = signatureFile.toURL().toString();
+      Constants.setSignatureSpecNSprefix("prof");
+      XMLSignature sig = new XMLSignature(doc, BaseURI,
+                                          XMLSignature.ALGO_ID_SIGNATURE_DSA);
+
+      doc.appendChild(sig.getElement());
+      sig.getSignedInfo()
+         .addResourceResolver(new org.apache.xml.security.samples.utils.resolver
+            .OfflineResolver());
+
+      {
+         ObjectContainer ob1 = new ObjectContainer(doc);
+         ob1.setId("object-1");
+         ob1.appendChild(doc.createTextNode("\nSigned Text\n"));
+         Element c = doc.createElementNS(null, "element");
+         c.setAttributeNS(null, "name", "val");
+         ob1.appendChild(c);
+         sig.appendObject(ob1);
+
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xc = new XPathContainer(doc);
+         xc.setXPathNamespaceContext("prof", Constants.SignatureSpecNS);
+
+         //J-
+         String xpath = "\n"
+          + "count(" + "\n"
+          + " ancestor-or-self::prof:Object " + "\n"
+          + " | " + "\n"
+          + " here()/ancestor::prof:Signature[1]/child::prof:Object[@Id='object-1']" + "\n"
+          + ") <= count(" + "\n"
+          + " ancestor-or-self::prof:Object" + "\n"
+          + ") " + "\n";
+         //J+
+
+         xc.setXPath(xpath);
+         HelperNodeList nl = new HelperNodeList();
+         nl.appendChild(doc.createTextNode("\n"));
+         nl.appendChild(xc.getElement());
+         nl.appendChild(doc.createTextNode("\n"));
+
+         transforms.addTransform(Transforms.TRANSFORM_XPATH, nl);
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+         sig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+      }
+
+      {
+         X509Certificate cert =
+            (X509Certificate) ks.getCertificate(certificateAlias);
+
+         sig.addKeyInfo(cert);
+         sig.addKeyInfo(cert.getPublicKey());
+         System.out.println("Start signing");
+         sig.sign(privateKey);
+         System.out.println("Finished signing");
+      }
+
+      SignedInfo s = sig.getSignedInfo();
+      for (int i=0; i<s.getSignedContentLength(); i++) {
+         System.out.println(new String(s.getSignedContentItem(i)));
+      }
+
+      FileOutputStream f = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOMc14nWithComments(doc, f);
+
+      f.close();
+      System.out.println("Wrote signature to " + BaseURI);
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/NullURIReferenceResolver.java b/src_samples/org/apache/xml/security/samples/signature/NullURIReferenceResolver.java
new file mode 100644
index 0000000..dba04ad
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/NullURIReferenceResolver.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.w3c.dom.Attr;
+
+
+/**
+ * This is a sample ResourceResolver who demonstrated how References without
+ * URI attribuet could be handled.
+ *
+ * @author $Author$
+ */
+public class NullURIReferenceResolver extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                NullURIReferenceResolver.class.getName());
+
+   /** Field _data[] */
+   byte _data[] = null;
+
+   /** Field _data2[][] */
+   byte _data2[][] = null;
+
+   /** Field _count */
+   int _count = -1;
+
+   /**
+    * Constructor NullURIReferenceResolver
+    *
+    * @param data
+    */
+   public NullURIReferenceResolver(byte[] data) {
+      _data = data;
+      _count = -1;
+   }
+
+   /**
+    * Constructor NullURIReferenceResolver
+    *
+    * @param data
+    */
+   public NullURIReferenceResolver(byte[][] data) {
+      _data2 = data;
+      _count = 0;
+   }
+
+   /**
+    * Method engineResolve
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    * @throws ResourceResolverException
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+      XMLSignatureInput result = null;
+
+      if ((this._data != null) && (this._count == -1)) {
+
+         // we always return the same stuff;
+         result = new XMLSignatureInput(this._data);
+
+         result.setSourceURI("memory://null");
+         result.setMIMEType("text/txt");
+      } else if ((this._data == null) && (this._count != -1)) {
+         if (this._count < this._data2.length) {
+            result = new XMLSignatureInput(this._data2[this._count]);
+
+            result.setSourceURI("memory://" + this._count);
+
+            this._count++;
+
+            result.setMIMEType("text/txt");
+         } else {
+            String errMsg = "You did not supply enough data!!! There are only "
+                            + (this._data2.length) + " byte[] arrays";
+            Object exArgs[] = { errMsg };
+
+            throw new ResourceResolverException("empty", exArgs, uri, BaseURI);
+         }
+      } else {
+         Object exArgs[] = { "You did not supply data !!!" };
+
+         throw new ResourceResolverException("empty", exArgs, uri, BaseURI);
+      }
+
+      return result;
+   }
+
+   /**
+    * Method engineCanResolve
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+
+      if (uri == null) {
+         if ((this._data != null) && (this._count == -1)) {
+            return true;
+         } else if ((this._data == null) && (this._count != -1)) {
+            return true;
+         }
+      }
+
+      return false;
+   }
+
+   /**
+    * Method engineGetPropertyKeys
+    *
+    *
+    */
+   public String[] engineGetPropertyKeys() {
+      return null;
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/SignaturePropertiesSample.java b/src_samples/org/apache/xml/security/samples/signature/SignaturePropertiesSample.java
new file mode 100644
index 0000000..24c85d9
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/SignaturePropertiesSample.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.signature.ObjectContainer;
+import org.apache.xml.security.signature.SignatureProperties;
+import org.apache.xml.security.signature.SignatureProperty;
+import org.apache.xml.security.signature.XMLSignature;
+import org.w3c.dom.Document;
+
+
+/**
+ * Class SignaturePropertiesSample
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class SignaturePropertiesSample {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.newDocument();
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.appendChild(sig.getElement());
+
+      SignatureProperty prop1 = new SignatureProperty(doc,
+                                   "http://www.xmlsecurity.org/#target",
+                                   "prop1");
+
+      prop1.getElement()
+         .appendChild(doc.createTextNode("\n   some data for this property\n"));
+
+      SignatureProperties props = new SignatureProperties(doc);
+
+      props.addSignatureProperty(prop1);
+
+      ObjectContainer object = new ObjectContainer(doc);
+
+      object.appendChild(doc.createTextNode("\n"));
+      object.appendChild(props.getElement());
+      object.appendChild(doc.createTextNode("\n"));
+      sig.appendObject(object);
+      sig.addDocument("#prop1");
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+      System.out.println("---------------------------------------");
+      System.out.println(new String(c14n.canonicalizeSubtree(doc)));
+      System.out.println("---------------------------------------");
+      System.out
+         .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
+            .getBytes()));
+      System.out.println("---------------------------------------");
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/TestSignature.java b/src_samples/org/apache/xml/security/samples/signature/TestSignature.java
new file mode 100644
index 0000000..8e1900c
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/TestSignature.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.samples.utils.resolver.OfflineResolver;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ * Class TestSignature
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class TestSignature {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      //J-
+      String merlinsDir =
+         "data/ie/baltimore/merlin-examples/merlin-xmldsig-eighteen/";
+      String ourDir =
+         "data/org/apache/xml/security/temp/key/";
+      String filenames[] = { merlinsDir +
+                             /* 0 */ "signature-keyname.xml",
+                             merlinsDir +
+                             /* 1 */ "signature-retrievalmethod-rawx509crt.xml",
+                             merlinsDir +
+                             /* 2 */ "signature-x509-crt-crl.xml",
+                             merlinsDir +
+                             /* 3 */ "signature-x509-crt.xml",
+                             merlinsDir +
+                             /* 4 */ "signature-x509-is.xml",
+                             merlinsDir +
+                             /* 5 */ "signature-x509-ski.xml",
+                             merlinsDir +
+                             /* 6 */ "signature-x509-sn.xml",
+                             ourDir +
+                             /* 7 */ "signature-retrievalmethod-x509data.xml"
+                             };
+      //J+
+      int start = 0;
+      int end = filenames.length;
+
+      // int end = filenames.length;
+      for (int file_to_verify = start; file_to_verify < end; file_to_verify++) {
+         try {
+            String filename = filenames[file_to_verify];
+            File f = new File(filename);
+
+            System.out.println("");
+            System.out.println(
+               "#########################################################");
+            System.out.println("Try to verify " + f.toURL().toString());
+
+            javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+            org.w3c.dom.Document doc =
+               db.parse(new java.io.FileInputStream(filename));
+
+            //create a namespace context for use in the XPath expression below
+            Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                                     Constants.SignatureSpecNS);
+
+            //retrieve the signature Element from the document
+            Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                                    "//ds:Signature[1]", nscontext);
+
+            //Creates a XMLSignature from the element and uses the filename as
+            //the baseURI. That URI is prepended to all relative URIs.
+            XMLSignature signature =
+               new XMLSignature(sigElement,
+                                (new File(filename)).toURL().toString());
+
+            signature.addResourceResolver(new OfflineResolver());
+
+            //Get the KeyInfo object, which might contain some clues as to what
+            //key was used to create the signature. It might also contain the
+            //full cert.
+            KeyInfo ki = signature.getKeyInfo();
+
+            ki.addStorageResolver(new StorageResolver(new org.apache.xml
+               .security.keys.storage.implementations
+               .CertsInFilesystemDirectoryResolver(merlinsDir + "certs")));
+
+            if (ki != null) {
+
+               //First try to see if it is an X509Cert
+               X509Certificate cert =
+                  signature.getKeyInfo().getX509Certificate();
+
+               if (cert != null) {
+
+                  //check if the signature is valid using the cert
+                  System.out.println("Check: "
+                                     + signature.checkSignatureValue(cert));
+               } else {
+
+                  //Maybe it's a public key
+                  PublicKey pk = signature.getKeyInfo().getPublicKey();
+
+                  if (pk != null) {
+
+                     //check if the signature is valid using the public key
+                     System.out.println("Check: "
+                                        + signature.checkSignatureValue(pk));
+                  } else {
+
+                     //No X509Cert or PublicKey could be found.
+                     System.out
+                        .println("Could not find Certificate or PublicKey");
+                  }
+               }
+            } else {
+
+               //If the signature did not contain any KeyInfo element
+               System.out.println("Could not find ds:KeyInfo");
+            }
+         } catch (Exception ex) {
+            ex.printStackTrace();
+         }
+      }
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/VerifyCollectableSignature.java b/src_samples/org/apache/xml/security/samples/signature/VerifyCollectableSignature.java
new file mode 100644
index 0000000..64d02e4
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/VerifyCollectableSignature.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+
+import org.apache.xml.security.signature.SignedInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class VerifyCollectableSignature {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(VerifyCollectableSignature.class.getName());
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      try {
+         File signatureFile = new File("collectableSignature.xml");
+         String BaseURI = signatureFile.toURL().toString();
+
+         System.out.println("Try to verify "
+                            + signatureFile.toURL().toString());
+
+         javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+         db.setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+
+         org.w3c.dom.Document doc =
+            db.parse(new java.io.FileInputStream(signatureFile));
+         Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                                  Constants.SignatureSpecNS);
+         NodeList signatureElems = XPathAPI.selectNodeList(doc,
+                                      "//ds:Signature", nscontext);
+
+         for (int i = 0; i < signatureElems.getLength(); i++) {
+            Element sigElement = (Element) signatureElems.item(i);
+            XMLSignature signature = new XMLSignature(sigElement, BaseURI);
+            byte[] secretKey = "secretValue".getBytes();
+
+            System.out
+               .println("The XML signature number " + i + " in file " + BaseURI + " is "
+                        + (signature
+                           .checkSignatureValue(signature
+                              .createSecretKey(CreateCollectableSignature
+                                 .passphrase.getBytes()))
+                           ? "valid (good)"
+                           : "invalid !!!!! (bad)"));
+
+            SignedInfo s = signature.getSignedInfo();
+
+            for (int j = 0; j < s.getSignedContentLength(); j++) {
+               System.out.println("################ Signed Resource " + i + "/" + j
+                                  + " ################");
+               System.out.println(new String(s.getSignedContentItem(j)));
+               System.out.println();
+            }
+         }
+      } catch (Exception ex) {
+         ex.printStackTrace();
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesFifteen.java b/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesFifteen.java
new file mode 100644
index 0000000..df21d26
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesFifteen.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class VerifyMerlinsExamplesFifteen {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                        VerifyMerlinsExamplesFifteen.class.getName());
+
+   /** Field schemaValidate */
+   static final boolean schemaValidate = false;
+
+   /** Field signatureSchemaFile */
+   static final String signatureSchemaFile = "data/xmldsig-core-schema.xsd";
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      if (schemaValidate) {
+         System.out.println("We do schema-validation");
+      } else {
+         System.out.println("We do not schema-validation");
+      }
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      if (VerifyMerlinsExamplesSixteen.schemaValidate) {
+         dbf.setAttribute("http://apache.org/xml/features/validation/schema",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/features/dom/defer-node-expansion",
+            Boolean.TRUE);
+         dbf.setValidating(true);
+         dbf.setAttribute("http://xml.org/sax/features/validation",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/properties/schema/external-schemaLocation",
+            Constants.SignatureSpecNS + " "
+            + VerifyMerlinsExamplesSixteen.signatureSchemaFile);
+      }
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      //J-
+      String merlinsDir =
+         "data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/";
+      String filenames[] = { merlinsDir + "signature-enveloping-hmac-sha1.xml",
+                             merlinsDir + "signature-enveloping-hmac-sha1-40.xml",
+                             merlinsDir + "signature-enveloped-dsa.xml",
+                             merlinsDir + "signature-enveloping-b64-dsa.xml",
+                             merlinsDir + "signature-enveloping-dsa.xml",
+                             merlinsDir + "signature-enveloping-rsa.xml",
+                             merlinsDir + "signature-external-b64-dsa.xml",
+                             merlinsDir + "signature-external-dsa.xml"
+                             };
+      //J+
+      int start = 0;
+      // int end = filenames.length;
+      int end = 2;
+
+      for (int i = start; i < 2; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            verifyHMAC(dbf, signatureFileName);
+         } catch (Exception ex) {
+            ex.printStackTrace();
+         }
+      }
+
+      for (int i = 2; i < filenames.length; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            VerifyMerlinsExamplesSixteen.verify(dbf, signatureFileName);
+         } catch (Exception ex) {
+            ex.printStackTrace();
+         }
+      }
+   }
+
+   /**
+    * Method verify
+    *
+    * @param dbf
+    * @param filename
+    * @throws Exception
+    */
+   public static void verifyHMAC(DocumentBuilderFactory dbf, String filename)
+           throws Exception {
+
+      File f = new File(filename);
+
+      System.out.println("Try to verify " + f.toURL().toString());
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+      if (VerifyMerlinsExamplesSixteen.schemaValidate) {
+         db.setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+         db.setEntityResolver(new org.xml.sax.EntityResolver() {
+
+            public org.xml.sax
+                    .InputSource resolveEntity(String publicId, String systemId)
+                       throws org.xml.sax.SAXException {
+
+               if (systemId.endsWith("xmldsig-core-schema.xsd")) {
+                  try {
+                     return new org.xml.sax
+                        .InputSource(new FileInputStream(signatureSchemaFile));
+                  } catch (FileNotFoundException ex) {
+                     throw new org.xml.sax.SAXException(ex);
+                  }
+               } else {
+                  return null;
+               }
+            }
+         });
+      }
+
+      org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream(f));
+
+      Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                               Constants.SignatureSpecNS);
+      Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                              "//ds:Signature[1]", nscontext);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+
+      // signature.addResourceResolver(new OfflineResolver());
+
+      byte keybytes[] = "secret".getBytes("ASCII");
+      javax.crypto.SecretKey sk = signature.createSecretKey(keybytes);
+
+      System.out.println("The XML signature in file "
+                               + f.toURL().toString() + " is "
+                               + (signature.checkSignatureValue(sk)
+                                  ? "valid (good)"
+                                  : "invalid !!!!! (bad)"));
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesSixteen.java b/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesSixteen.java
new file mode 100644
index 0000000..b05bc85
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesSixteen.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class VerifyMerlinsExamplesSixteen {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                VerifyMerlinsExamplesSixteen.class.getName());
+
+   /** Field schemaValidate */
+   static final boolean schemaValidate = false;
+
+   /** Field signatureSchemaFile */
+   static final String signatureSchemaFile = "data/xmldsig-core-schema.xsd";
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      if (schemaValidate) {
+         System.out.println("We do schema-validation");
+      } else {
+         System.out.println("We do not schema-validation");
+      }
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      if (VerifyMerlinsExamplesSixteen.schemaValidate) {
+         dbf.setAttribute("http://apache.org/xml/features/validation/schema",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/features/dom/defer-node-expansion",
+            Boolean.TRUE);
+         dbf.setValidating(true);
+         dbf.setAttribute("http://xml.org/sax/features/validation",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/properties/schema/external-schemaLocation",
+            Constants.SignatureSpecNS + " "
+            + VerifyMerlinsExamplesSixteen.signatureSchemaFile);
+      }
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      //J-
+      String filenames[] = { // "16signature.xml"
+                             // "merlinsSixteenRecreated.xml"
+                             "data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen/signature.xml"
+                             };
+      //J+
+      int start = 0;
+      int end = filenames.length;
+
+      for (int i = start; i < end; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            verify(dbf, signatureFileName);
+         } catch (Exception ex) {
+            ex.printStackTrace();
+         }
+      }
+   }
+
+   /**
+    * Method verify
+    *
+    * @param dbf
+    * @param filename
+    * @throws Exception
+    */
+   public static void verify(DocumentBuilderFactory dbf, String filename)
+           throws Exception {
+
+      File f = new File(filename);
+
+      System.out.println("Try to verify " + f.toURL().toString());
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+      if (VerifyMerlinsExamplesSixteen.schemaValidate) {
+         db.setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+         db.setEntityResolver(new org.xml.sax.EntityResolver() {
+
+            public org.xml.sax
+                    .InputSource resolveEntity(String publicId, String systemId)
+                       throws org.xml.sax.SAXException {
+
+               if (systemId.endsWith("xmldsig-core-schema.xsd")) {
+                  try {
+                     return new org.xml.sax
+                        .InputSource(new FileInputStream(signatureSchemaFile));
+                  } catch (FileNotFoundException ex) {
+                     throw new org.xml.sax.SAXException(ex);
+                  }
+               } else {
+                  return null;
+               }
+            }
+         });
+      }
+
+      org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream(f));
+
+      Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                               Constants.SignatureSpecNS);
+      Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                              "//ds:Signature[1]", nscontext);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+
+      signature.getSignedInfo()
+         .addResourceResolver(new org.apache.xml.security.samples.utils.resolver
+            .OfflineResolver());
+
+      signature.setFollowNestedManifests(false);
+
+      // signature.addResourceResolver(new OfflineResolver());
+
+      // XMLUtils.outputDOMc14nWithComments(signature.getElement(), System.out);
+      KeyInfo ki = signature.getKeyInfo();
+
+      if (ki != null) {
+         /*
+         if (ki.containsX509Data()) {
+            System.out.println("Could find a X509Data element in the KeyInfo");
+         }
+         */
+
+         X509Certificate cert = signature.getKeyInfo().getX509Certificate();
+
+         if (cert != null) {
+            /*
+            System.out.println(
+               "I try to verify the signature using the X509 Certificate: "
+               + cert);
+            */
+            System.out.println("The XML signature in file "
+                               + f.toURL().toString() + " is "
+                               + (signature.checkSignatureValue(cert)
+                                  ? "valid (good)"
+                                  : "invalid !!!!! (bad)"));
+         } else {
+            // System.out.println("Did not find a Certificate");
+
+            PublicKey pk = signature.getKeyInfo().getPublicKey();
+
+            if (pk != null) {
+               // System.out.println("I try to verify the signature using the public key: " + pk);
+               System.out.println("The XML signature in file "
+                                  + f.toURL().toString() + " is "
+                                  + (signature.checkSignatureValue(pk)
+                                     ? "valid (good)"
+                                     : "invalid !!!!! (bad)"));
+            } else {
+               System.out.println(
+                  "Did not find a public key, so I can't check the signature");
+            }
+         }
+      } else {
+         System.out.println("Did not find a KeyInfo");
+      }
+
+      /*
+      SignedInfo s = signature.getSignedInfo();
+      for (int i=0; i<s.getSignedContentLength(); i++) {
+         System.out.println("################ Signed Resource " + i + " ################");
+         FileOutputStream f2 = new FileOutputStream(filename + "." + i + ".input");
+         byte[] data = s.getSignedContentItem(i);
+         f2.write(data);
+         f2.close();
+
+         System.out.println(new String(data));
+         System.out.println();
+      }
+      */
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesTwentyThree.java b/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesTwentyThree.java
new file mode 100644
index 0000000..a36de99
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/VerifyMerlinsExamplesTwentyThree.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ * @author $Author$
+ */
+public class VerifyMerlinsExamplesTwentyThree {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                VerifyMerlinsExamplesTwentyThree.class.getName());
+
+   /** Field schemaValidate */
+   static final boolean schemaValidate = false;
+
+   /** Field signatureSchemaFile */
+   static final String signatureSchemaFile = "data/xmldsig-core-schema.xsd";
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      if (schemaValidate) {
+         System.out.println("We do schema-validation");
+      } else {
+         System.out.println("We do not schema-validation");
+      }
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      if (VerifyMerlinsExamplesTwentyThree.schemaValidate) {
+         dbf.setAttribute("http://apache.org/xml/features/validation/schema",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/features/dom/defer-node-expansion",
+            Boolean.TRUE);
+         dbf.setValidating(true);
+         dbf.setAttribute("http://xml.org/sax/features/validation",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/properties/schema/external-schemaLocation",
+            Constants.SignatureSpecNS + " "
+            + VerifyMerlinsExamplesTwentyThree.signatureSchemaFile);
+      }
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      //J-
+      String merlinsDir =
+         "data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/";
+      String filenames[] = { // "23signature.xml"
+                             // "merlinsTwentyThreeRecreated.xml"
+                             merlinsDir + "signature.xml",
+                             merlinsDir + "signature-enveloped-dsa.xml",
+                             merlinsDir + "signature-enveloping-b64-dsa.xml",
+                             merlinsDir + "signature-enveloping-dsa.xml",
+                             merlinsDir + "signature-enveloping-hmac-sha1-40.xml",
+                             merlinsDir + "signature-enveloping-hmac-sha1.xml",
+                             merlinsDir + "signature-enveloping-rsa.xml",
+                             merlinsDir + "signature-external-b64-dsa.xml",
+                             merlinsDir + "signature-external-dsa.xml"
+                             };
+      //J+
+      int start = 0;
+      int end = filenames.length;
+
+      for (int i = start; i < end; i++) {
+         String signatureFileName = filenames[i];
+
+         try {
+            verify(dbf, signatureFileName);
+         } catch (Exception ex) {
+            ex.printStackTrace();
+         }
+      }
+   }
+
+   /**
+    * Method verify
+    *
+    * @param dbf
+    * @param filename
+    * @throws Exception
+    */
+   public static void verify(DocumentBuilderFactory dbf, String filename)
+           throws Exception {
+
+      File f = new File(filename);
+
+      System.out.println("Try to verify " + f.toURL().toString());
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+      if (VerifyMerlinsExamplesTwentyThree.schemaValidate) {
+         db.setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+         db.setEntityResolver(new org.xml.sax.EntityResolver() {
+
+            public org.xml.sax
+                    .InputSource resolveEntity(String publicId, String systemId)
+                       throws org.xml.sax.SAXException {
+
+               if (systemId.endsWith("xmldsig-core-schema.xsd")) {
+                  try {
+                     return new org.xml.sax
+                        .InputSource(new FileInputStream(signatureSchemaFile));
+                  } catch (FileNotFoundException ex) {
+                     throw new org.xml.sax.SAXException(ex);
+                  }
+               } else {
+                  return null;
+               }
+            }
+         });
+      }
+
+      org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream(f));
+
+      Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                               Constants.SignatureSpecNS);
+      Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                              "//ds:Signature[1]", nscontext);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+
+      signature.getSignedInfo()
+         .addResourceResolver(new org.apache.xml.security.samples.utils.resolver
+            .OfflineResolver());
+
+      signature.setFollowNestedManifests(false);
+
+      // signature.addResourceResolver(new OfflineResolver());
+
+      // XMLUtils.outputDOMc14nWithComments(signature.getElement(), System.out);
+      KeyInfo ki = signature.getKeyInfo();
+
+      if (ki != null) {
+         /*
+         if (ki.containsX509Data()) {
+            System.out.println("Could find a X509Data element in the KeyInfo");
+         }
+         */
+
+         X509Certificate cert = signature.getKeyInfo().getX509Certificate();
+
+         if (cert != null) {
+            /*
+            System.out.println(
+               "I try to verify the signature using the X509 Certificate: "
+               + cert);
+            */
+            System.out.println("The XML signature in file "
+                               + f.toURL().toString() + " is "
+                               + (signature.checkSignatureValue(cert)
+                                  ? "valid (good)"
+                                  : "invalid !!!!! (bad)"));
+         } else {
+            // System.out.println("Did not find a Certificate");
+
+            PublicKey pk = signature.getKeyInfo().getPublicKey();
+
+            if (pk != null) {
+               // System.out.println("I try to verify the signature using the public key: " + pk);
+               System.out.println("The XML signature in file "
+                                  + f.toURL().toString() + " is "
+                                  + (signature.checkSignatureValue(pk)
+                                     ? "valid (good)"
+                                     : "invalid !!!!! (bad)"));
+            } else {
+               System.out.println(
+                  "Did not find a public key, so I can't check the signature");
+            }
+         }
+      } else {
+         System.out.println("Did not find a KeyInfo");
+      }
+
+      /*
+      SignedInfo s = signature.getSignedInfo();
+      for (int i=0; i<s.getSignedContentLength(); i++) {
+         System.out.println("################ Signed Resource " + i + " ################");
+         FileOutputStream f2 = new FileOutputStream(filename + "." + i + ".input");
+         byte[] data = s.getSignedContentItem(i);
+         f2.write(data);
+         f2.close();
+
+         System.out.println(new String(data));
+         System.out.println();
+      }
+      */
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/VerifySignature.java b/src_samples/org/apache/xml/security/samples/signature/VerifySignature.java
new file mode 100644
index 0000000..590e950
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/VerifySignature.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.samples.utils.resolver.OfflineResolver;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ *
+ *
+ *
+ *
+ * @author $Author$
+ *
+ */
+public class VerifySignature {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    */
+   public static void main(String unused[]) {
+
+      boolean schemaValidate = false;
+      final String signatureSchemaFile = "data/xmldsig-core-schema.xsd";
+      // String signatureFileName = "data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/signature-enveloping-rsa.xml";
+      String signatureFileName = "signature.xml";
+
+      if (schemaValidate) {
+         System.out.println("We do schema-validation");
+      }
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      if (schemaValidate) {
+         dbf.setAttribute("http://apache.org/xml/features/validation/schema",
+                          Boolean.TRUE);
+         dbf.setAttribute(
+            "http://apache.org/xml/features/dom/defer-node-expansion",
+            Boolean.TRUE);
+         dbf.setValidating(true);
+         dbf.setAttribute("http://xml.org/sax/features/validation",
+                          Boolean.TRUE);
+      }
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      if (schemaValidate) {
+         dbf.setAttribute(
+            "http://apache.org/xml/properties/schema/external-schemaLocation",
+            Constants.SignatureSpecNS + " " + signatureSchemaFile);
+      }
+
+      try {
+
+         // File f = new File("signature.xml");
+         File f = new File(signatureFileName);
+
+         System.out.println("Try to verify " + f.toURL().toString());
+
+         javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+         db.setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+
+         if (schemaValidate) {
+            db.setEntityResolver(new org.xml.sax.EntityResolver() {
+
+               public org.xml.sax.InputSource resolveEntity(
+                       String publicId, String systemId)
+                          throws org.xml.sax.SAXException {
+
+                  if (systemId.endsWith("xmldsig-core-schema.xsd")) {
+                     try {
+                        return new org.xml.sax.InputSource(
+                           new FileInputStream(signatureSchemaFile));
+                     } catch (FileNotFoundException ex) {
+                        throw new org.xml.sax.SAXException(ex);
+                     }
+                  } else {
+                     return null;
+                  }
+               }
+            });
+         }
+
+         org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream(f));
+         Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                                  Constants.SignatureSpecNS);
+         Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                                 "//ds:Signature[1]", nscontext);
+         XMLSignature signature = new XMLSignature(sigElement,
+                                                   f.toURL().toString());
+
+         signature.addResourceResolver(new OfflineResolver());
+
+         // XMLUtils.outputDOMc14nWithComments(signature.getElement(), System.out);
+         KeyInfo ki = signature.getKeyInfo();
+
+         if (ki != null) {
+            if (ki.containsX509Data()) {
+               System.out
+                  .println("Could find a X509Data element in the KeyInfo");
+            }
+
+            X509Certificate cert = signature.getKeyInfo().getX509Certificate();
+
+            if (cert != null) {
+               /*
+               System.out.println(
+                  "I try to verify the signature using the X509 Certificate: "
+                  + cert);
+               */
+               System.out.println("The XML signature in file "
+                                  + f.toURL().toString() + " is "
+                                  + (signature.checkSignatureValue(cert)
+                                     ? "valid (good)"
+                                     : "invalid !!!!! (bad)"));
+            } else {
+               System.out.println("Did not find a Certificate");
+
+               PublicKey pk = signature.getKeyInfo().getPublicKey();
+
+               if (pk != null) {
+                  /*
+                  System.out.println(
+                     "I try to verify the signature using the public key: "
+                     + pk);
+                  */
+                  System.out.println("The XML signature in file "
+                                     + f.toURL().toString() + " is "
+                                     + (signature.checkSignatureValue(pk)
+                                        ? "valid (good)"
+                                        : "invalid !!!!! (bad)"));
+               } else {
+                  System.out.println(
+                     "Did not find a public key, so I can't check the signature");
+               }
+            }
+         } else {
+            System.out.println("Did not find a KeyInfo");
+         }
+      } catch (Exception ex) {
+         ex.printStackTrace();
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/contract/ThreeSignerContractSign.java b/src_samples/org/apache/xml/security/samples/signature/contract/ThreeSignerContractSign.java
new file mode 100644
index 0000000..5a137cc
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/contract/ThreeSignerContractSign.java
@@ -0,0 +1,334 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature.contract;
+
+
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import org.apache.xml.security.keys.content.KeyName;
+import org.apache.xml.security.signature.SignedInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+
+
+/**
+ * In the past the protokol to sign data (like a contract) from more than one people
+ * looks like this:
+ * 1. A signes the hash of the data => SignatureA
+ * 2. B signes SignatureA => SignatureB
+ * 3. C signes SignatureB => SignatureC
+ *
+ * To verify e.g. signature C the following steps were necessary:
+ * 1. Verify signature C thereby decrypt SignatureC (SignatureB)
+ * 2. Verify signature B thereby decrypt SignatureB (SignatureA)
+ * 3. Verify signature A thereby decrypt SignatureA (hash of the data)
+ * 4. Compare the calculated hash of the sent contract with the decrypted SignatureA result
+ *
+ * XML-Signatures are more flexible in this way.
+ * It is possible to sign data in steps from different signers and
+ * verify a signature independent from the others signatures.
+ * Furthermore all the signed data and the signatures can be hold in one file.
+ *
+ * @author Rene Kollmorgen <Rene.Kollmorgen@softwareag.com>
+ */
+public class ThreeSignerContractSign {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+      //J-
+      File signatureFile = new File("threeSignerContract.xml");
+      String BaseURI = signatureFile.toURL().toString();
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.newDocument();
+      Element contract = doc.createElementNS(null, "contract");
+
+      // create contract ////////////////////////////////////////////
+      doc.appendChild(contract);
+
+      // beautifying //////
+      Element condition1 = doc.createElementNS(null, "condition1");
+
+      condition1.setAttributeNS(null, "Id", "cond1");
+      condition1.appendChild(
+         doc.createTextNode(
+            "condition1 not covered in first signature, only binding for the second and third signer"));
+
+      Element condition2 = doc.createElementNS(null, "condition2");
+
+      condition2.appendChild(doc.createTextNode("condition2"));
+
+      Element condition3 = doc.createElementNS(null, "condition3");
+
+      condition3.appendChild(doc.createTextNode("condition3"));
+      contract.appendChild(doc.createTextNode("\n"));
+      contract.appendChild(condition1);
+      contract.appendChild(doc.createTextNode("\n"));
+      contract.appendChild(condition2);
+      contract.appendChild(doc.createTextNode("\n"));
+      contract.appendChild(condition3);
+      contract.appendChild(doc.createTextNode("\n"));
+
+      //J-
+      String id1 = "firstSigner";
+      String id2 = "secondSigner";
+      String id3 = "thirdSigner";
+
+      // sign the whole contract and no signature and exclude condition1
+      String xp1Old = "not(ancestor-or-self::ds:Signature)"
+            + " and not(ancestor-or-self::node()[@Id='cond1'])";
+
+      // sign the contract with condition2 and codition3 and no signature
+      String xp1 = "not(ancestor-or-self::ds:Signature)" + "\n"
+                + " and (" + "\n"
+                + "    (ancestor-or-self::node() = /contract/condition2) " + "\n"
+                + " or (ancestor-or-self::node() = /contract/condition3) " + "\n"
+                + " or (self::node() = /contract) " + "\n"
+                + " or ((parent::node() = /contract) and (self::text()))" + "\n"
+                + ")";
+
+      // sign the whole contract and no signature but the first
+      String xp2 = "not(ancestor-or-self::ds:Signature)" + "\n"
+                 + " or ancestor-or-self::ds:Signature[@Id='" + id1 + "']";
+
+      // sign the whole contract and no signature but the first and the second
+      String xp3 = "not(ancestor-or-self::ds:Signature)" + "\n"
+                 + " or ancestor-or-self::ds:Signature[@Id='" + id1 + "']" + "\n"
+                 + " or ancestor-or-self::ds:Signature[@Id='" + id2 + "']";
+      //J+
+      //////////////////////////////////////////////////////////////////
+      // first signer //////////////////////////////////////////////////
+      //////////////////////////////////////////////////////////////////
+      {
+         XMLSignature firstSigner =
+            new XMLSignature(doc, BaseURI, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+         firstSigner.setId(id1);
+         contract.appendChild(firstSigner.getElement());
+
+         String rootnamespace = contract.getNamespaceURI();
+         boolean rootprefixed = (rootnamespace != null)
+                                && (rootnamespace.length() > 0);
+         String rootlocalname = contract.getNodeName();
+         Transforms transforms = new Transforms(doc);
+         XPathContainer xpath = new XPathContainer(doc);
+
+         xpath.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpath.setXPath("\n" + xp1 + "\n");
+         transforms.addTransform(Transforms.TRANSFORM_XPATH,
+                                 xpath.getElementPlusReturns());
+         firstSigner.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);
+
+         {
+
+            // not really secure ///////////////////
+            firstSigner.getKeyInfo().add(new KeyName(doc, "First signer key"));
+
+            ////////////////////////////////////////////////
+            System.out.println("First signer: Start signing");
+            firstSigner
+               .sign(firstSigner
+                  .createSecretKey("First signer key".getBytes()));
+            System.out.println("First signer: Finished signing");
+         }
+
+         SignedInfo s = firstSigner.getSignedInfo();
+
+         for (int i = 0; i < s.getSignedContentLength(); i++) {
+            System.out.println("################ Signed Resource " + i
+                               + " ################");
+            System.out.println(new String(s.getSignedContentItem(i)));
+            System.out.println();
+         }
+      }
+
+      //////////////////////////////////////////////////////////////////
+      // second signer /////////////////////////////////////////////////
+      //////////////////////////////////////////////////////////////////
+      {
+         XMLSignature secondSigner = new XMLSignature(doc, BaseURI,
+                                        XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+         secondSigner.setId(id2);
+         contract.appendChild(secondSigner.getElement());
+
+         Transforms transforms2 = new Transforms(doc);
+         XPathContainer xpath2 = new XPathContainer(doc);
+
+         xpath2.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpath2.setXPath("\n" + xp2 + "\n");
+         transforms2.addTransform(Transforms.TRANSFORM_XPATH,
+                                  xpath2.getElementPlusReturns());
+         secondSigner.addDocument("", transforms2,
+                                  Constants.ALGO_ID_DIGEST_SHA1);
+
+         {
+            secondSigner.getKeyInfo().add(new KeyName(doc,
+                                                      "Second signer key"));
+            System.out.println("Second signer: Start signing");
+            secondSigner
+               .sign(secondSigner
+                  .createSecretKey("Second signer key".getBytes()));
+            System.out.println("Second signer: Finished signing");
+         }
+
+         SignedInfo s2 = secondSigner.getSignedInfo();
+
+         for (int i = 0; i < s2.getSignedContentLength(); i++) {
+            System.out.println("################ Signed Resource " + i
+                               + " ################");
+            System.out.println(new String(s2.getSignedContentItem(i)));
+            System.out.println();
+         }
+      }
+
+      //////////////////////////////////////////////////////////////////
+      // third signer //////////////////////////////////////////////////
+      //////////////////////////////////////////////////////////////////
+      {
+         XMLSignature thirdSigner =
+            new XMLSignature(doc, BaseURI, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+         thirdSigner.setId(id3);
+         contract.appendChild(thirdSigner.getElement());
+
+         Transforms transforms3 = new Transforms(doc);
+         XPathContainer xpath3 = new XPathContainer(doc);
+
+         xpath3.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+         xpath3.setXPath("\n" + xp3 + "\n");
+         transforms3.addTransform(Transforms.TRANSFORM_XPATH,
+                                  xpath3.getElementPlusReturns());
+         thirdSigner.addDocument("", transforms3,
+                                 Constants.ALGO_ID_DIGEST_SHA1);
+
+         {
+            thirdSigner.getKeyInfo().add(new KeyName(doc, "Third signer key"));
+            System.out.println("Third signer: Start signing");
+            thirdSigner
+               .sign(thirdSigner
+                  .createSecretKey("Third signer key".getBytes()));
+            System.out.println("Third signer: Finished signing");
+         }
+
+         SignedInfo s3 = thirdSigner.getSignedInfo();
+
+         for (int i = 0; i < s3.getSignedContentLength(); i++) {
+            System.out.println("################ Signed Resource " + i
+                               + " ################");
+            System.out.println(new String(s3.getSignedContentItem(i)));
+            System.out.println();
+         }
+      }
+
+      //////////////////////////////////////////////////////////////////
+      // forth signer //////////////////////////////////////////////////
+      //////////////////////////////////////////////////////////////////
+      {
+         XMLSignature forthSigner =
+            new XMLSignature(doc, BaseURI, XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+         forthSigner.setId("sig4");
+         contract.appendChild(forthSigner.getElement());
+
+         {
+
+            // first of all, add the basic document without signatures
+            Transforms transforms4 = new Transforms(doc);
+            XPathContainer xpath4 = new XPathContainer(doc);
+
+            xpath4.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+            xpath4.setXPath("\n" + "not(ancestor-or-self::ds:Signature)"
+                            + "\n");
+            transforms4.addTransform(Transforms.TRANSFORM_XPATH,
+                                     xpath4.getElementPlusReturns());
+            forthSigner.addDocument("", transforms4,
+                                    Constants.ALGO_ID_DIGEST_SHA1);
+         }
+
+         {
+
+            // then add the different signatures
+
+            /*
+            Transforms transforms4 = new Transforms(doc);
+            XPathContainer xpath4 = new XPathContainer(doc);
+
+            xpath4.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+            xpath4.setXPath("\n" + "ancestor-or-self::ds:Signature[@Id='" + id1 + "']" + "\n");
+            transforms4.addTransform(Transforms.TRANSFORM_XPATH, xpath4.getElementPlusReturns());
+            forthSigner.addDocument("#xpointer(id('firstSigner'))", transforms4, Constants.ALGO_ID_DIGEST_SHA1, null, "ds:Signature");
+            */
+            forthSigner.addDocument("#xpointer(id('firstSigner'))", null,
+                                    Constants.ALGO_ID_DIGEST_SHA1, null,
+                                    "ds:Signature");
+         }
+
+         {
+            forthSigner.getKeyInfo().add(new KeyName(doc, "Forth signer key"));
+            System.out.println("Forth signer: Start signing");
+            forthSigner
+               .sign(forthSigner
+                  .createSecretKey("Forth signer key".getBytes()));
+            System.out.println("Forth signer: Finished signing");
+         }
+
+         SignedInfo s4 = forthSigner.getSignedInfo();
+
+         for (int i = 0; i < s4.getSignedContentLength(); i++) {
+            System.out.println("################ Signed Resource " + i
+                               + " ################");
+            System.out.println(new String(s4.getSignedContentItem(i)));
+            System.out.println();
+         }
+      }
+
+      //////////////////////////////////////////////////////////////////
+      // write away files
+      //////////////////////////////////////////////////////////////////
+      {
+         FileOutputStream f = new FileOutputStream(signatureFile);
+
+         XMLUtils.outputDOMc14nWithComments(doc, f);
+         f.close();
+         System.out.println("Wrote signature to " + BaseURI);
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+
+      // org.apache.xml.security.utils.Constants.setSignatureSpecNSprefix("");
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/signature/contract/ThreeSignerContractVerify.java b/src_samples/org/apache/xml/security/samples/signature/contract/ThreeSignerContractVerify.java
new file mode 100644
index 0000000..baf941d
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/signature/contract/ThreeSignerContractVerify.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.signature.contract;
+
+
+
+import java.io.File;
+
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+/**
+ *
+ * @author Rene Kollmorgen <Rene.Kollmorgen@softwareag.com>
+ */
+public class ThreeSignerContractVerify {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+      dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+
+      try {
+
+         //File signatureFile = new File("collectableSignature.xml");
+         File signatureFile = new File("threeSignerContract.xml");
+         String BaseURI = signatureFile.toURL().toString();
+
+         System.out.println("Try to verify "
+                            + signatureFile.toURL().toString());
+
+         javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+
+         db.setErrorHandler(new org.apache.xml.security.utils
+            .IgnoreAllErrorHandler());
+
+         org.w3c.dom.Document doc =
+            db.parse(new java.io.FileInputStream(signatureFile));
+         Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                                  Constants.SignatureSpecNS);
+         NodeList signatureElems = XPathAPI.selectNodeList(doc,
+                                      "//ds:Signature", nscontext);
+
+         for (int i = 0; i < signatureElems.getLength(); i++) {
+            Element sigElement = (Element) signatureElems.item(i);
+            XMLSignature signature = new XMLSignature(sigElement, BaseURI);
+
+            //byte[] secretKey = "secretValue".getBytes();
+            Element keyName =
+               (Element) sigElement
+                  .getElementsByTagNameNS(Constants.SignatureSpecNS, "KeyName")
+                     .item(0);
+            String keyValue = keyName.getFirstChild().getNodeValue();
+
+            System.out
+               .println("The signature number " + (i + 1) + " is "
+                        + (signature
+                           .checkSignatureValue(signature
+                              .createSecretKey(keyValue.getBytes()))
+                           ? "valid (good)"
+                           : "invalid !!!!! (bad)"));
+
+            /*
+            SignedInfo s = signature.getSignedInfo();
+
+            for (int j = 0; j < s.getSignedContentLength(); j++) {
+               System.out.println("################ Signed Resource " + i + "/"
+                                  + j + " ################");
+               System.out.println(new String(s.getSignedContentItem(j)));
+               System.out.println();
+            }
+            */
+         }
+      } catch (Exception ex) {
+         ex.printStackTrace();
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java
new file mode 100644
index 0000000..2ea3aff
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformChaining.java
@@ -0,0 +1,106 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+
+/**
+ * This class demonstrates the use of a Transform for XSLT. The
+ * <CODE>xsl:stylesheet</CODE> is directly embedded in the <CODE>ds:Transform</CODE>,
+ * so the {@link Transform} object is created by using the Element.
+ *
+ * @author Christian Geuer-Pollmann
+ * @version %I%, %G%
+ */
+public class SampleTransformChaining {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      //J-
+      String inputStr =
+        "<?xml version=\"1.0\"?>" + "\n"
+      + "<Class>" + "\n"
+      + "   <BASE64>" + "\n"
+      + "       PGNvbnRhaW5lcj4KICAgPGU+SGVsbG8sIDwhLS0gY29tbWVudCAtLT4gd29ybGQhPC9lPgogICA8" + "\n"
+      + "       T3JkZXIgTmFtZT0nVElOQU1JRk9STUVTJyB4bWxucz0naHR0cDovL3NmZGZnLyc+CiAgICAgIDxG" + "\n"
+      + "       YW1pbHkgTmFtZT0nVElOQU1JREFFJz4KICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1l" + "\n"
+      + "       PSdDcnlwdHVyZWxsdXMgYm91Y2FyZGknPlNsYXR5LWJyZWFzdGVkIFRpbmFtb3UuPC9TcGVjaWVz" + "\n"
+      + "       PgogICAgICA8L0ZhbWlseT4KICAgPC9PcmRlcj4KICAgPE9yZGVyIE5hbWU9J1BPRElDSVBFRElG" + "\n"
+      + "       T1JNRVMnLz4KPC9jb250YWluZXI+Cg==" + "\n"
+      + "   </BASE64>" + "\n"
+      + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "     <SignedInfo>" + "\n"
+      + "       <Reference URI=''>" + "\n"
+      + "         <Transforms>" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+      + "             <!-- Exclude all signatures -->\n"
+      + "               <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
+      + "                 ancestor::BASE64"
+      + "               </ds:XPath>\n"
+      + "           </Transform>\n"
+      + "           <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#base64' />\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+      + "               <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
+      + "                 not(self::container)     "
+      + "               </ds:XPath>\n"
+      + "           </Transform>\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315' />\n"
+      + "         </Transforms>" + "\n"
+      + "       </Reference>" + "\n"
+      + "     </SignedInfo>" + "\n"
+      + "   </Signature>"
+      + "</Class>" + "\n"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc =
+         db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
+
+      // catch the ds:Transforms
+      Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+      Element transformsElement = (Element) XPathAPI.selectSingleNode(doc,
+                                     "//ds:Transforms", nscontext);
+      Transforms transforms = new Transforms(transformsElement, "memory://");
+      XMLSignatureInput input = new XMLSignatureInput(doc);
+
+      // execute Transforms
+      XMLSignatureInput result = transforms.performTransforms(input);
+
+      // output result
+      System.out.println(new String(result.getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java
new file mode 100644
index 0000000..5095f1f
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformEnvelopedSignature.java
@@ -0,0 +1,97 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * This class demonstrates the use of a Transform forEnveloped Signature.
+ *
+ * @author Christian Geuer-Pollmann
+ * @version %I%, %G%
+ */
+public class SampleTransformEnvelopedSignature {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      //J-
+      String inputStr =
+        "<?xml version=\"1.0\"?>" + "\n"
+      + "<Document xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "   <Data attr='attrValue'>text in Data</Data>" + "\n"
+      + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "     <SignedInfo>" + "\n"
+      + "       <Reference>" + "\n"
+      + "         <Transforms>" + "\n"
+      // + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "         </Transforms>" + "\n"
+      + "       </Reference>" + "\n"
+      + "     </SignedInfo>" + "\n"
+      + "   </Signature>"
+      + "   <Signature Id='VisibleSignature' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "     <SignedInfo xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "       <Reference xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "         <Transforms xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "         </Transforms>" + "\n"
+      + "       </Reference>" + "\n"
+      + "     </SignedInfo>" + "\n"
+      + "   </Signature>" + "\n"
+      + "</Document>" + "\n"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc =
+         db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
+      Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+      Element transformsElem = (Element) XPathAPI.selectSingleNode(
+         doc, "//ds:Signature[@Id='SignatureToBeOmitted']//ds:Transforms",
+         nscontext);
+      Transforms transforms = new Transforms(transformsElem, "memory://");
+      XMLSignatureInput input = new XMLSignatureInput((Node) doc);
+
+      // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+      XMLSignatureInput result = transforms.performTransforms(input);
+
+      System.out.println(new String(result.getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java
new file mode 100644
index 0000000..f30b60c
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformNone.java
@@ -0,0 +1,71 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.TransformSpi;
+
+
+/**
+ * Implements a null transform which leaved the input unmodified.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class SampleTransformNone extends TransformSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    SampleTransformNone.class.getName());
+
+   /** Field implementedTransformURI */
+   public static final String implementedTransformURI =
+      "http://www.xmlsecurity.org/NS/Transforms#none";
+
+   /**
+    * Method engineGetURI
+    *
+    *
+    */
+   protected String engineGetURI() {
+      return SampleTransformNone.implementedTransformURI;
+   }
+
+   //J-
+   public boolean wantsOctetStream ()   { return true; }
+   public boolean wantsNodeSet ()       { return true; }
+   public boolean returnsOctetStream () { return true; }
+   public boolean returnsNodeSet ()     { return true; }
+   //J+
+
+   /**
+    * Method enginePerformTransform
+    *
+    * @param input
+    *
+    */
+   protected XMLSignatureInput enginePerformTransform(XMLSignatureInput input) {
+      return input;
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java
new file mode 100644
index 0000000..be97835
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath.java
@@ -0,0 +1,100 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+
+
+/**
+ * This class demonstrates the use of a Transform for XSLT. The
+ * <CODE>xsl:stylesheet</CODE> is directly embedded in the <CODE>ds:Transform</CODE>,
+ * so the {@link Transform} object is created by using the Element.
+ *
+ * @author Christian Geuer-Pollmann
+ * @version %I%, %G%
+ */
+public class SampleTransformXPath {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      //J-
+      String transformStr =
+        "<?xml version='1.0'?>\n"
+      + "<Transforms xmlns='http://www.w3.org/2000/09/xmldsig#'>\n"
+      + "<Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+      // + "   <ds:XPath xmlns:match='http://sfdfg/'>(self::match:Order | self::text()[string(parent::e)=\"Hello,  world!\"])</ds:XPath>\n"
+      // + "   <ds:XPath>//@*</ds:XPath>\n"
+      + "   <!-- Exclude all signatures -->\n"
+      // + "   <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>not(ancestor-or-self::ds:Signature)</ds:XPath>\n"
+      + "   <ds:XPath xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>self::text()[ancestor-or-self::node()=/Class/e[1]]</ds:XPath>\n"
+      + "</Transform>\n"
+      + "</Transforms>\n"
+      ;
+
+      String inputStr =
+        "<?xml version=\"1.0\"?>" + "\n"
+      + "<Class>" + "\n"
+      + "   <e>Hello, <!-- comment --> world!</e>" + "\n"
+      + "   <Order Name='TINAMIFORMES' xmlns='http://sfdfg/'>" + "\n"
+      + "      <Family Name='TINAMIDAE'>" + "\n"
+      + "         <Species Scientific_Name='Crypturellus boucardi'>Slaty-breasted Tinamou.</Species>" + "\n"
+      + "      </Family>" + "\n"
+      + "   </Order>" + "\n"
+      + "   <Order Name='PODICIPEDIFORMES'/>" + "\n"
+      + "<Signature Id='SignatureToBeOmitted' xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "     <SignedInfo>" + "\n"
+      + "       <Reference>" + "\n"
+      + "         <Transforms>" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/2000/09/xmldsig#enveloped-signature' />" + "\n"
+//       + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "         </Transforms>" + "\n"
+      + "       </Reference>" + "\n"
+      + "     </SignedInfo>" + "\n"
+      + "   </Signature>"
+      + "</Class>" + "\n"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc =
+         db.parse(new java.io.ByteArrayInputStream(transformStr.getBytes()));
+
+      String BaseURI = null;
+      Transforms transforms = new Transforms(doc.getDocumentElement(), BaseURI);
+
+      XMLSignatureInput input = new XMLSignatureInput(inputStr.getBytes());
+
+      // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+      XMLSignatureInput result = transforms.performTransforms(input);
+
+      System.out.println(new String(result.getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java
new file mode 100644
index 0000000..3c62266
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.JavaUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Sample for the <I>XML Signature XPath Filter v2.0</I>
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</A>
+ * @see <A HREF=http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filter v2.0 (editors copy)</A>
+ */
+public class SampleTransformXPath2Filter {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      boolean verbose = true;
+
+      create("withComments.xml", true, verbose);
+      System.out.println();
+      System.out.println();
+      System.out.println();
+      create("omitComments.xml", false, verbose);
+      System.out.println();
+      System.out.println();
+      System.out.println();
+      check("withComments.xml");
+   }
+
+   /**
+    * Method create
+    *
+    * @param filename
+    * @param withComments
+    * @param verbose
+    * @throws Exception
+    */
+   public static void create(
+           String filename, boolean withComments, boolean verbose)
+              throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      //J-
+      String inputDoc =
+"<Document>\n" +
+"     <ToBeSigned>\n" +
+"       <!-- comment -->\n" +
+"       <Data />\n" +
+"       <NotToBeSigned>\n" +
+"         <ReallyToBeSigned>\n" +
+"           <!-- comment -->\n" +
+"           <Data />\n" +
+"         </ReallyToBeSigned>\n" +
+"       </NotToBeSigned>\n" +
+"     </ToBeSigned>\n" +
+"     <ToBeSigned>\n" +
+"       <Data />\n" +
+"       <NotToBeSigned>\n" +
+"         <Data />\n" +
+"       </NotToBeSigned>\n" +
+"     </ToBeSigned>\n" +
+"</Document>";
+      //J+
+      Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+      doc.getDocumentElement().appendChild(doc.createTextNode("\n"));
+
+      Transforms transforms = new Transforms(doc);
+
+      String filters[][] = {{XPath2FilterContainer.INTERSECT, "//ToBeSigned"},
+                            {XPath2FilterContainer.SUBTRACT,  "//NotToBeSigned"},
+                            {XPath2FilterContainer.UNION,     "//ReallyToBeSigned"}};
+      //J-
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, XPath2FilterContainer.newInstances(doc, filters));
+      if (withComments) {
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+      }
+
+      /*
+      XPath2FilterContainer x = XPath2FilterContainer.newInstanceSubtract(doc, "here()/ancestor::ds:Signature[1]");
+      x.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, x.getElement());
+      */
+      //J+
+      sig.addDocument("#xpointer(/)", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      FileOutputStream fos = new FileOutputStream(filename);
+
+      try {
+         fos.write(full);
+      } finally {
+         fos.close();
+      }
+
+      if (verbose) {
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out.println("Input to the transforms is");
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println(new String(sig.getSignedInfo().item(0).getTransformsInput()
+               .getBytes()));
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println("The signed octets (output of the transforms) are ");
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println(new String(sig.getSignedInfo().item(0)
+               .getTransformsOutput().getBytes()));
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out.println("The document is ");
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out.println(new String(full));
+         System.out.println(
+            "-------------------------------------------------------------");
+      }
+
+      JavaUtils.writeBytesToFilename("xfilter2.html",
+      sig.getSignedInfo().item(0).getHTMLRepresentation().getBytes());
+   }
+
+   /**
+    * Method check
+    *
+    * @param filename
+    * @throws Exception
+    */
+   public static void check(String filename) throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.parse(new FileInputStream(filename));
+      NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
+
+      XMLSignature sig = new XMLSignature((Element)sigs.item(0), new File(filename).toURL().toString());
+      boolean check = sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
+
+         System.out.println(
+            "-------------------------------------------------------------");
+      System.out.println("Verification of " + filename + ": " + check);
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println(new String(sig.getSignedInfo().item(0)
+               .getTransformsOutput().getBytes()));
+         System.out.println(
+            "-------------------------------------------------------------");
+
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java
new file mode 100644
index 0000000..d6085f4
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPath2Filter2.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.samples.transforms;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.ElementProxy;
+import org.apache.xml.security.utils.JavaUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * Sample for the <I>XML Signature XPath Filter v2.0</I>
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</
+A>
+ * @see <A HREF=http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filt
+er v2.0 (editors copy)</A>
+ */
+
+
+public class SampleTransformXPath2Filter2 {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      boolean verbose = true;
+
+      create("withComments.xml", true, verbose);
+      System.out.println();
+      System.out.println();
+      System.out.println();
+      create("omitComments.xml", false, verbose);
+      System.out.println();
+      System.out.println();
+      System.out.println();
+      check("withComments.xml");
+   }
+
+   /**
+    * Method create
+    *
+    * @param filename
+    * @param withComments
+    * @param verbose
+    * @throws Exception
+    */
+   public static void create(
+           String filename, boolean withComments, boolean verbose)
+              throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      //J-
+      String inputDoc = "<A><UNSIGNED><B><SIGNED><MORE_SIGNED_STUFF/></SIGNED><C><UNSIGNED/></C></B><D><UNSIGNED/></D><UNSIGNED><E><SIGNED><MORE_SIGNED_STUFF/></SIGNED></E><UNSIGNED><F><G><H/></G></F></UNSIGNED></UNSIGNED></UNSIGNED></A>";
+
+      //J+
+      Document doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+      sig.getElement().setAttributeNS(Constants.NamespaceSpecNS, "xmlns:" + ElementProxy.getDefaultPrefix(Transforms.TRANSFORM_XPATH2FILTER), Transforms.TRANSFORM_XPATH2FILTER);
+      doc.getDocumentElement().appendChild(doc.createTextNode("\n"));
+
+      Transforms transforms = new Transforms(doc);
+      //J-
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+            XPath2FilterContainer.newInstanceIntersect(doc, "//E").getElement());
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+            XPath2FilterContainer.newInstanceUnion(doc, "//B").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+         XPath2FilterContainer.newInstanceSubtract(doc, "//C").getElement());
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+            XPath2FilterContainer.newInstanceUnion(doc, "//F").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+         XPath2FilterContainer.newInstanceSubtract(doc, "//G").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+            XPath2FilterContainer.newInstanceUnion(doc, "//H").getElement());
+
+
+      /*
+      XPath2FilterContainer x = XPath2FilterContainer.newInstanceSubtract(doc, "here()/ancestor::ds:Signature[1]");
+      x.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, x.getElement());
+      if (withComments) {
+         transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+      }
+      */
+      //J+
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+      FileOutputStream fos = new FileOutputStream(filename);
+
+      try {
+         fos.write(full);
+      } finally {
+         fos.close();
+      }
+
+      if (verbose) {
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out.println("Input to the transforms is");
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println(new String(sig.getSignedInfo().item(0).getTransformsInput()
+               .getBytes()));
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println("The signed octets (output of the transforms) are ");
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println(new String(sig.getSignedInfo().item(0)
+               .getTransformsOutput().getBytes()));
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out.println("The document is ");
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out.println(new String(full));
+         System.out.println(
+            "-------------------------------------------------------------");
+      }
+   }
+
+   /**
+    * Method check
+    *
+    * @param filename
+    * @throws Exception
+    */
+   public static void check(String filename) throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.parse(new FileInputStream(filename));
+      NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);
+
+      XMLSignature sig = new XMLSignature((Element)sigs.item(0), new File(filename).toURL().toString());
+      boolean check = sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
+
+         System.out.println(
+            "-------------------------------------------------------------");
+      System.out.println("Verification of " + filename + ": " + check);
+         System.out.println(
+            "-------------------------------------------------------------");
+         System.out
+            .println(new String(sig.getSignedInfo().item(0)
+               .getTransformsOutput().getBytes()));
+         System.out.println(
+            "-------------------------------------------------------------");
+
+      JavaUtils.writeBytesToFilename("1.html", sig.getSignedInfo().item(0).getHTMLRepresentation().getBytes());
+
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java
new file mode 100644
index 0000000..afd5f71
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPathFilterCHGP.java
@@ -0,0 +1,265 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer;
+import org.apache.xml.security.transforms.params.XPathFilterCHGPContainer;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+/**
+ * Sample for the <I>XML Signature XPath Filter v2.0</I>
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.w3.org/TR/xmldsig-filter2/">XPath Filter v2.0 (TR)</A>
+ * @see <A HREF=http://www.w3.org/Signature/Drafts/xmldsig-xfilter2/">XPath Filter v2.0 (editors copy)</A>
+ */
+public class SampleTransformXPathFilterCHGP {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+
+      // String inputDoc = "<A><U><B><S><S><S></S><S><S></S><S></S></S><S></S></S><S><S></S></S></S><C><U><U><U><U></U><U><U></U><U></U></U><U></U></U><U><U></U></U></U></U></C></B><D><U></U></D><U><E><S><S><S></S><S><S></S><S></S></S><S></S></S><S><S></S></S></S></E><U><F><G><H/></G></F></U></U></U></A>";
+      // String inputDoc = "<A><U><B><S></S><C><U></U></C></B><D><U></U></D><U><E><S></S></E><U><F><G><H/></G></F></U></U></U></A>";
+      String inputDoc =
+         "<A xmlns:foo=\"http://foo.bar/\">\n<U>\n<U>\n<U>\n<U>\n<U>\n<B foo:attr=\"attr\">\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<C>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n<U>\n<U>\n<U>\n<U/>\n<U>\n<U/>\n<U/>\n</U>\n<U/>\n</U>\n<U>\n<U/>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</C>\n</B>\n<D>\n<U/>\n</D>\n<U>\n<E>\n<S>\n<S>\n<S/>\n<S>\n<S/>\n<S/>\n</S>\n<S/>\n</S>\n<S>\n<S/>\n</S>\n</S>\n</E>\n<U>\n<F>\n<G>\n<H/>\n<G>\n<H/>\n</G>\n</G>\n</F>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</U>\n</A>\n";
+      Document doc;
+
+      doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+
+      SampleTransformXPathFilterCHGP.outApache(doc);
+
+      doc = db.parse(new ByteArrayInputStream(inputDoc.getBytes()));
+
+      SampleTransformXPathFilterCHGP.outXFilter2(doc);
+   }
+
+   /**
+    * Method outApache
+    *
+    * @param doc
+    * @throws Exception
+    */
+   static void outApache(Document doc) throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+      String includeButSearchStr = "//B | //E | //F | //H";
+      String excludeButSearchStr = "//G";
+
+      // String excludeStr = "//C | //D | //ds:Signature";
+      String excludeStr =
+         "//C | //D | here()/ancestor::ds:Signature[1] | //@x:attr";
+      boolean includeSlashPolicy = XPathFilterCHGPContainer.ExcludeSlash;
+      XPathFilterCHGPContainer xpathContainer =
+         XPathFilterCHGPContainer.getInstance(doc, includeSlashPolicy,
+                                              includeButSearchStr,
+                                              excludeButSearchStr, excludeStr);
+
+      xpathContainer.setXPathNamespaceContext("ds", Constants.SignatureSpecNS);
+      xpathContainer.setXPathNamespaceContext("x", "http://foo.bar/");
+      transforms.addTransform(Transforms.TRANSFORM_XPATHFILTERCHGP,
+                              xpathContainer.getElement());
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println("The signed octets (output of the transforms) are ");
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out
+         .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
+            .getBytes()));
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println("The document is ");
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println(new String(full));
+      System.out.println(
+         "-------------------------------------------------------------");
+
+      Element sE =
+         (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+                                              Constants._TAG_SIGNATURE).item(0);
+      XMLSignature sigVer = new XMLSignature(sE, null);
+      boolean verify =
+         sigVer.checkSignatureValue(sigVer
+            .createSecretKey("secret".getBytes()));
+
+      System.out.println("verify: " + verify);
+   }
+
+   /**
+    * Method outXFilter2
+    *
+    * @param doc
+    * @throws Exception
+    */
+   static void outXFilter2(Document doc) throws Exception {
+
+      XMLSignature sig = new XMLSignature(doc, null,
+                                          XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.getDocumentElement().appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceIntersect(doc,
+                                 "//E").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceUnion(doc,
+                                 "//B").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceSubtract(doc,
+                                 "//C").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceUnion(doc,
+                                 "//F").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceSubtract(doc,
+                                 "//G").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceUnion(doc,
+                                 "//H").getElement());
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
+                              XPath2FilterContainer.newInstanceSubtract(doc,
+                                 "//@x:attr").getElement());
+      transforms.setXPathNamespaceContext("xmlns:x", "http://foo.bar/");
+      transforms
+         .setXPathNamespaceContext(Transforms
+            .getDefaultPrefix(Transforms.TRANSFORM_XPATH2FILTER), Transforms
+            .TRANSFORM_XPATH2FILTER);
+      sig.addDocument("", transforms);
+
+      String secretKey = "secret";
+
+      sig.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                  + "\" are used for signing ("
+                                  + secretKey.length() + " octets)");
+      sig.sign(sig.createSecretKey(secretKey.getBytes()));
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+      byte[] full = c14n.canonicalizeSubtree(doc);
+
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println("The signed octets (output of the transforms) are ");
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out
+         .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
+            .getBytes()));
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println("The document is ");
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println(new String(full));
+      System.out.println(
+         "-------------------------------------------------------------");
+
+      Element sE =
+         (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+                                              Constants._TAG_SIGNATURE).item(0);
+      XMLSignature sigVer = new XMLSignature(sE, null);
+      boolean verify =
+         sigVer.checkSignatureValue(sigVer
+            .createSecretKey("secret".getBytes()));
+
+      System.out.println("verify: " + verify);
+   }
+
+   /**
+    * Method check
+    *
+    * @param filename
+    * @throws Exception
+    */
+   public static void check(String filename) throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.parse(new FileInputStream(filename));
+      NodeList sigs = doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+                                                 Constants._TAG_SIGNATURE);
+      XMLSignature sig =
+         new XMLSignature((Element) sigs.item(0),
+                          new File(filename).toURL().toString());
+      boolean check =
+         sig.checkSignatureValue(sig.createSecretKey("secret".getBytes()));
+
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out.println("Verification of " + filename + ": " + check);
+      System.out.println(
+         "-------------------------------------------------------------");
+      System.out
+         .println(new String(sig.getSignedInfo().item(0).getTransformsOutput()
+            .getBytes()));
+      System.out.println(
+         "-------------------------------------------------------------");
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPathHereFunc.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPathHereFunc.java
new file mode 100644
index 0000000..137993e
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXPathHereFunc.java
@@ -0,0 +1,95 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * This class demonstrates the use of a Transform for XSLT. The
+ * <CODE>xsl:stylesheet</CODE> is directly embedded in the <CODE>ds:Transform</CODE>,
+ * so the {@link Transform} object is created by using the Element.
+ *
+ * @author Christian Geuer-Pollmann
+ * @version %I%, %G%
+ */
+public class SampleTransformXPathHereFunc {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      //J-
+      String inputStr =
+        "<?xml version=\"1.0\"?>" + "\n"
+      + "<Document>" + "\n"
+      + "   <Data attr='attrValue'>text in Data</Data>" + "\n"
+      + "<Signature xmlns='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+      + "     <SignedInfo>" + "\n"
+      + "       <Reference>" + "\n"
+      + "         <Transforms>" + "\n"
+      + "           <Transform xmlns:ds='http://www.w3.org/2000/09/xmldsig#' Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>" + "\n"
+      + "             <XPath>count(ancestor-or-self::ds:Signature | here()/ancestor::ds:Signature[1]) &gt; count(ancestor-or-self::ds:Signature)</XPath>" + "\n"
+      + "           </Transform>" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "           <Transform Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments' />" + "\n"
+      + "         </Transforms>" + "\n"
+      + "       </Reference>" + "\n"
+      + "     </SignedInfo>" + "\n"
+      + "   </Signature>"
+      + "</Document>"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc =
+         db.parse(new java.io.ByteArrayInputStream(inputStr.getBytes()));
+      Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+      Element transformsElem = (Element) XPathAPI.selectSingleNode(
+         doc,
+         "/Document/ds:Signature[1]/ds:SignedInfo/ds:Reference[1]/ds:Transforms",
+         nscontext);
+      Transforms transforms = new Transforms(transformsElem, "memory://");
+      XMLSignatureInput input = new XMLSignatureInput((Node) doc);
+
+      // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+      XMLSignatureInput result = transforms.performTransforms(input);
+
+      System.out.println(new String(result.getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXSLT.java b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXSLT.java
new file mode 100644
index 0000000..42e30ea
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/transforms/SampleTransformXSLT.java
@@ -0,0 +1,143 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.transforms;
+
+
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.Transforms;
+
+
+/**
+ * This class demonstrates the use of a Transform for XSLT. The
+ * <CODE>xsl:stylesheet</CODE> is directly embedded in the <CODE>ds:Transform</CODE>,
+ * so the {@link Transform} object is created by using the Element.
+ *
+ * @author Christian Geuer-Pollmann
+ * @version %I%, %G%
+ */
+public class SampleTransformXSLT {
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String args[]) throws Exception {
+      org.apache.xml.security.Init.init();
+
+      //J-
+      String transformStr =
+        "<?xml version=\"1.0\"?>\n"
+      + "<ds:Transforms xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>\n"
+      + "<ds:Transform Algorithm='http://www.w3.org/TR/1999/REC-xslt-19991116'>\n"
+      + "<xsl:stylesheet  version=\"1.0\"\n"
+      + "                 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n"
+      + "<xsl:output method=\"xml\" indent=\"yes\"/>\n"
+
+      + "<xsl:template match=\"Class\">\n"
+      + "<BirdInfo>\n"
+      + "	<xsl:apply-templates select=\"Order\"/>\n"
+      + "</BirdInfo>\n"
+      + "</xsl:template>\n"
+
+      + "<xsl:template match=\"Order\">\n"
+      + "Order is:  <xsl:value-of select=\"@Name\"/>\n"
+      + "	<xsl:apply-templates select=\"Family\"/><xsl:text>\n"
+      + "</xsl:text>\n"
+      + "</xsl:template>\n"
+
+      + "<xsl:template match=\"Family\">\n"
+      + "	Family is:  <xsl:value-of select=\"@Name\"/>\n"
+      + "	<xsl:apply-templates select=\"Species | SubFamily | text()\"/>\n"
+      + "</xsl:template>\n"
+      + "<xsl:template match=\"SubFamily\">\n"
+      + "		SubFamily is <xsl:value-of select=\"@Name\"/>\n"
+      + "    <xsl:apply-templates select=\"Species | text()\"/>\n"
+      + "</xsl:template>\n"
+
+      + "<xsl:template match=\"Species\">\n"
+      + "	<xsl:choose>\n"
+      + "	  <xsl:when test=\"name(..)='SubFamily'\">\n"
+      + "		<xsl:text>	</xsl:text><xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>\n"
+      + "	  </xsl:when>\n"
+      + "	  <xsl:otherwise>\n"
+      + "		<xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>\n"
+      + "	  </xsl:otherwise>\n"
+      + "	</xsl:choose>\n"
+      + "</xsl:template>\n"
+
+      + "</xsl:stylesheet>\n"
+      + "</ds:Transform>\n"
+      + "</ds:Transforms>\n"
+      ;
+
+      String inputStr =
+        "<?xml version=\"1.0\"?>\n"
+      + "<Class>\n"
+      + "<Order Name=\"TINAMIFORMES\">\n"
+      + "        <Family Name=\"TINAMIDAE\">\n"
+      + "            <Species Scientific_Name=\"Tinamus major\">  Great Tinamou.</Species>\n"
+      + "            <Species Scientific_Name=\"Nothocercus\">Highland Tinamou.</Species>\n"
+      + "            <Species Scientific_Name=\"Crypturellus soui\">Little Tinamou.</Species>\n"
+      + "            <Species Scientific_Name=\"Crypturellus cinnamomeus\">Thicket Tinamou.</Species>\n"
+      + "            <Species Scientific_Name=\"Crypturellus boucardi\">Slaty-breasted Tinamou.</Species>\n"
+      + "            <Species Scientific_Name=\"Crypturellus kerriae\">Choco Tinamou.</Species>\n"
+      + "        </Family>\n"
+      + "    </Order>\n"
+      + "    <Order Name=\"GAVIIFORMES\">\n"
+      + "        <Family Name=\"GAVIIDAE\">\n"
+      + "            <Species Scientific_Name=\"Gavia stellata\">Red-throated Loon.</Species>\n"
+      + "            <Species Scientific_Name=\"Gavia arctica\">Arctic Loon.</Species>\n"
+      + "            <Species Scientific_Name=\"Gavia pacifica\">Pacific Loon.</Species>\n"
+      + "            <Species Scientific_Name=\"Gavia immer\">Common Loon.</Species>\n"
+      + "            <Species Scientific_Name=\"Gavia adamsii\">Yellow-billed Loon.</Species>\n"
+      + "        </Family>\n"
+      + "    </Order>\n"
+      + "    <Order Name=\"PODICIPEDIFORMES\">\n"
+      + "        <Family Name=\"PODICIPEDIDAE\">\n"
+      + "            <Species Scientific_Name=\"Tachybaptus dominicus\">Least Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"Podilymbus podiceps\">Pied-billed Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"\">Atitlan Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"\">Horned Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"\">Red-necked Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"\">Eared Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"\">Western Grebe.</Species>\n"
+      + "            <Species Scientific_Name=\"\">Clark's Grebe.</Species>\n"
+      + "        </Family>\n"
+      + "    </Order>\n"
+      + "</Class>\n"
+      ;
+      //J+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc =
+         db.parse(new java.io.ByteArrayInputStream(transformStr.getBytes()));
+
+      Transforms t = new Transforms(doc.getDocumentElement(), "memory://");
+      XMLSignatureInput result =
+         t.performTransforms(new XMLSignatureInput(inputStr.getBytes()));
+
+      System.out.println(new String(result.getBytes()));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/utils/Base64Sample.java b/src_samples/org/apache/xml/security/samples/utils/Base64Sample.java
new file mode 100644
index 0000000..5595f36
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/utils/Base64Sample.java
@@ -0,0 +1,91 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.utils;
+
+
+
+import java.math.BigInteger;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.utils.Base64;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+
+
+/**
+ * Sample usage for Base64 class
+ *
+ * @author $Author$
+ */
+public class Base64Sample {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String[] unused) throws Exception {
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.newDocument();
+      //J-
+      BigInteger bi =
+         new BigInteger("43268743267463264169236328648732694167862"
+                        + "349613278648732164986132849761329543543"
+                        + "874618327964897164823698416236345435435"
+                        + "491823648913268496218974698126498712698"
+                        + "426861432892343242343243242342342354354"
+                        + "349613278648732164986132849761329543543"
+                        + "874618327964897164823698416236345435435"
+                        + "491823648913268496218974698126498712698"
+                        + "426861432892343242343243242342342354354"
+                        + "349613278648732164986132849761329543543"
+                        + "874618327964897164823698416236345435435"
+                        + "491823648913268496218974698126498712698"
+                        + "426861432892343242343243242342342354354"
+                        + "349613278648732164986132849761329543543"
+                        + "874618327964897164823698416236345435435"
+                        + "491823648913268496218974698126498712698"
+                        + "426861432892343242343243242342342354354"
+                        + "349613278648732164986132849761329543543"
+                        + "874618327964897164823698416236345435435"
+                        + "491823648913268496218974698126498712698"
+                        + "426861432892343242343243242342342354354"
+                        + "3246874621496829136");
+      //J+
+      Text base64text = doc.createTextNode(Base64.encode(bi));
+      Element root = doc.createElementNS(null, "Base64");
+
+      doc.appendChild(root);
+      root.appendChild(base64text);
+
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS);
+
+      System.out.println(new String(c14n.canonicalizeSubtree(doc)));
+   }
+}
diff --git a/src_samples/org/apache/xml/security/samples/utils/resolver/OfflineResolver.java b/src_samples/org/apache/xml/security/samples/utils/resolver/OfflineResolver.java
new file mode 100644
index 0000000..a2a9ae9
--- /dev/null
+++ b/src_samples/org/apache/xml/security/samples/utils/resolver/OfflineResolver.java
@@ -0,0 +1,163 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.samples.utils.resolver;
+
+
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.apache.xml.utils.URI;
+import org.w3c.dom.Attr;
+
+
+/**
+ * This class helps us home users to resolve http URIs without a network
+ * connection
+ *
+ * @author $Author$
+ */
+public class OfflineResolver extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(OfflineResolver.class.getName());
+
+   /**
+    * Method engineResolve
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    * @throws ResourceResolverException
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+      try {
+         String URI = uri.getNodeValue();
+
+         if (OfflineResolver._uriMap.containsKey(URI)) {
+            String newURI = (String) OfflineResolver._uriMap.get(URI);
+
+            log.debug("Mapped " + URI + " to " + newURI);
+
+            InputStream is = new FileInputStream(newURI);
+
+            log.debug("Available bytes = " + is.available());
+
+            XMLSignatureInput result = new XMLSignatureInput(is);
+
+            // XMLSignatureInput result = new XMLSignatureInput(inputStream);
+            result.setSourceURI(URI);
+            result.setMIMEType((String) OfflineResolver._mimeMap.get(URI));
+
+            return result;
+         } else {
+            Object exArgs[] = {
+               "The URI " + URI + " is not configured for offline work" };
+
+            throw new ResourceResolverException("generic.EmptyMessage", exArgs,
+                                                uri, BaseURI);
+         }
+      } catch (IOException ex) {
+         throw new ResourceResolverException("generic.EmptyMessage", ex, uri,
+                                             BaseURI);
+      }
+   }
+
+   /**
+    * We resolve http URIs <I>without</I> fragment...
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+
+      String uriNodeValue = uri.getNodeValue();
+
+      if (uriNodeValue.equals("") || uriNodeValue.startsWith("#")) {
+         return false;
+      }
+
+      try {
+         URI uriNew = new URI(new URI(BaseURI), uri.getNodeValue());
+
+         if (uriNew.getScheme().equals("http")) {
+            log.debug("I state that I can resolve " + uriNew.toString());
+
+            return true;
+         }
+
+         log.debug("I state that I can't resolve " + uriNew.toString());
+      } catch (URI.MalformedURIException ex) {}
+
+      return false;
+   }
+
+   /** Field _uriMap */
+   static Map _uriMap = null;
+
+   /** Field _mimeMap */
+   static Map _mimeMap = null;
+
+   /**
+    * Method register
+    *
+    * @param URI
+    * @param filename
+    * @param MIME
+    */
+   private static void register(String URI, String filename, String MIME) {
+      OfflineResolver._uriMap.put(URI, filename);
+      OfflineResolver._mimeMap.put(URI, MIME);
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+
+      OfflineResolver._uriMap = new HashMap();
+      OfflineResolver._mimeMap = new HashMap();
+
+      OfflineResolver.register("http://www.w3.org/TR/xml-stylesheet",
+                               "data/org/w3c/www/TR/xml-stylesheet.html",
+                               "text/html");
+      OfflineResolver.register("http://www.w3.org/TR/2000/REC-xml-20001006",
+                               "data/org/w3c/www/TR/2000/REC-xml-20001006",
+                               "text/xml");
+      OfflineResolver.register("http://www.nue.et-inf.uni-siegen.de/index.html",
+                               "data/org/apache/xml/security/temp/nuehomepage",
+                               "text/html");
+      OfflineResolver.register(
+         "http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/id2.xml",
+         "data/org/apache/xml/security/temp/id2.xml", "text/xml");
+      OfflineResolver.register(
+         "http://xmldsig.pothole.com/xml-stylesheet.txt",
+         "data/com/pothole/xmldsig/xml-stylesheet.txt", "text/xml");
+      OfflineResolver.register(
+         "http://www.w3.org/Signature/2002/04/xml-stylesheet.b64",
+         "data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/xml-stylesheet.b64", "text/plain");
+   }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/KeySelectorExceptionTest.java b/src_unitTests/javax/xml/crypto/test/KeySelectorExceptionTest.java
new file mode 100644
index 0000000..d76615b
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/KeySelectorExceptionTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright  2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.Arrays;
+import javax.xml.crypto.KeySelectorException;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.KeySelectorException
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class KeySelectorExceptionTest extends TestCase {
+
+    public KeySelectorExceptionTest() {
+	super("KeySelectorExceptionTest");
+    }
+
+    public KeySelectorExceptionTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { }
+
+    public void tearDown() { }
+
+    public void testConstructor() {
+	// test KeySelectorException()
+	KeySelectorException kse = new KeySelectorException();
+	assertNull(kse.getMessage());
+	assertNull(kse.getCause());
+
+	// test KeySelectorException(String)
+	kse = new KeySelectorException("test");
+	assertEquals("test", kse.getMessage());
+	assertNull(kse.getCause());
+	
+	// test KeySelectorException(String, Throwable)
+	IllegalArgumentException iae = new IllegalArgumentException("iae");
+	kse = new KeySelectorException("random", iae);
+	assertEquals("random", kse.getMessage());
+	assertTrue(compareThrowable(iae, kse.getCause()));
+
+	// test KeySelectorException(Throwable)
+	kse = new KeySelectorException(iae);
+	assertEquals(iae.toString(), kse.getMessage());
+	assertTrue(compareThrowable(iae, kse.getCause()));
+    }
+    private static boolean compareThrowable(Throwable t1, Throwable t2) {
+	boolean result = false;
+	// first compare their toString presentation
+	if (t1.toString().equals(t2.toString())) {
+	    ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+	    ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+	    // then compare their StackTrace
+	    PrintStream ps = new PrintStream(baos1);
+	    t1.printStackTrace(ps);
+	    ps.close();
+	    ps = new PrintStream(baos2);
+	    t2.printStackTrace(ps);
+	    ps.close();
+
+	    if (Arrays.equals(baos1.toByteArray(), baos2.toByteArray())) {
+		result = true;
+	    } else {
+		System.out.println("StackTrace comparison failed");
+		t1.printStackTrace(System.out);
+		t2.printStackTrace(System.out);
+	    }
+	} else {
+	    System.out.println("ToString comparison failed");
+	    System.out.println(t1);
+	    System.out.println(t2);
+	}
+	return result;
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/KeySelectorTest.java b/src_unitTests/javax/xml/crypto/test/KeySelectorTest.java
new file mode 100644
index 0000000..63fa9c7
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/KeySelectorTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test;
+
+import java.util.*;
+import java.security.Key;
+import java.security.cert.X509Certificate;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.KeySelector
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class KeySelectorTest extends TestCase {
+    private Key key;
+    private KeySelector selector1;
+
+    private class MyOwnKey implements Key {
+	private String algo;
+	private byte[] val;
+	MyOwnKey(String algorithm, byte[] value) {
+	    algo = algorithm;
+	    val = (byte[]) value.clone();
+	}
+	
+	public String getAlgorithm() {
+	    return algo;
+	}
+	public byte[] getEncoded() {
+	    return val;
+	}
+	public String getFormat() {
+	    return "RAW";
+	}
+    }
+
+    public KeySelectorTest() {
+	super("KeySelectorTest");
+    }
+
+    public KeySelectorTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	// selector1: singletonKeySelector
+	key = new MyOwnKey("test", new byte[16]);
+	selector1 = KeySelector.singletonKeySelector(key);
+    }
+
+    public void tearDown() { }
+
+    public void testselect() throws Exception {
+	KeyInfoFactory factory = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	X509Data obj = factory.newX509Data(Collections.singletonList("CN=foo"));
+	KeyInfo info = factory.newKeyInfo(Collections.singletonList(obj));
+	//@@@@@what about other types of X509Data, i.e. subject name String,
+	// X509IssuerSerial objects, etc?
+	XMLSignatureFactory dsigFac = XMLSignatureFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	SignatureMethod sm1 = 
+	    dsigFac.newSignatureMethod(SignatureMethod.DSA_SHA1, null);
+	SignatureMethod sm2 = 
+	    dsigFac.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
+
+	assertTrue(compareKey(key, selector1.select
+	    (info, KeySelector.Purpose.VERIFY, sm1, null).getKey()));
+	assertTrue(compareKey(key, selector1.select
+	    (info, KeySelector.Purpose.VERIFY, sm2, null).getKey()));
+    }
+    
+    private static boolean compareKey(Object answer, Key key) {
+	boolean result = false;
+	if (answer instanceof MyOwnKey) {
+	    result = ((MyOwnKey) answer == key);
+	} else if (answer instanceof X509Certificate) {
+	    result =
+	        ((X509Certificate)answer).getPublicKey().equals(key);
+	}
+	return result;
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/KeySelectors.java b/src_unitTests/javax/xml/crypto/test/KeySelectors.java
new file mode 100644
index 0000000..5529412
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/KeySelectors.java
@@ -0,0 +1,410 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test;
+
+import java.io.*;
+import java.security.*;
+import java.security.cert.*;
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import javax.crypto.SecretKey;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.Element;
+import org.w3c.dom.traversal.*;
+import sun.security.util.DerValue;
+import sun.security.x509.X500Name;
+
+import junit.framework.*;
+
+/**
+ * This is a class which supplies several KeySelector implementations
+ *
+ * @author Sean Mullan
+ * @author Valerie Peng
+ */
+public class KeySelectors {
+
+    /**
+     * KeySelector which would always return the secret key specified in its 
+     * constructor.
+     */
+    public static class SecretKeySelector extends KeySelector {
+	private SecretKey key;
+	public SecretKeySelector(byte[] bytes) {
+	    key = wrapBytes(bytes);
+	}
+	public SecretKeySelector(SecretKey key) {
+	    this.key = key;
+	}
+    
+	public KeySelectorResult select(KeyInfo ki, 
+					KeySelector.Purpose purpose,
+					AlgorithmMethod method, 
+					XMLCryptoContext context) 
+	    throws KeySelectorException {
+	    return new SimpleKSResult(key);
+	}
+	
+	private SecretKey wrapBytes(final byte[] bytes) {
+	    return new SecretKey() {
+		    public String getFormat() {
+			return "RAW";
+		    }
+		    
+		    public String getAlgorithm() {
+			return "Secret key";
+		    }
+		    
+		    public byte[] getEncoded() {
+			return bytes;
+		    }
+		};
+	}
+    }
+
+    /**
+     * KeySelector which would retrieve the X509Certificate out of the 
+     * KeyInfo element and return the public key.
+     * NOTE: If there is an X509CRL in the KeyInfo element, then revoked
+     * certificate will be ignored.
+     */
+    public static class RawX509KeySelector extends KeySelector {
+     
+	public KeySelectorResult select(KeyInfo keyInfo, 
+					KeySelector.Purpose purpose, 
+					AlgorithmMethod method, 
+					XMLCryptoContext context) 
+	    throws KeySelectorException {
+	    if (keyInfo == null) {
+		throw new KeySelectorException("Null KeyInfo object!");
+	    } 
+	    // search for X509Data in keyinfo
+	    Iterator iter = keyInfo.getContent().iterator();
+	    while (iter.hasNext()) {
+		XMLStructure kiType = (XMLStructure) iter.next();
+		if (kiType instanceof X509Data) {
+		    X509Data xd = (X509Data) kiType;
+		    Object[] entries = xd.getContent().toArray();
+		    X509CRL crl = null;
+		    // Looking for CRL before finding certificates
+		    for (int i = 0; (i<entries.length&&crl != null); i++) {
+			if (entries[i] instanceof X509CRL) {
+			    crl = (X509CRL) entries[i];
+			}
+		    }
+		    Iterator xi = xd.getContent().iterator();
+		    boolean hasCRL = false;
+		    while (xi.hasNext()) {
+			Object o = xi.next();
+			// skip non-X509Certificate entries
+			if (o instanceof X509Certificate) {
+			    if ((purpose != KeySelector.Purpose.VERIFY) && 
+				(crl != null) && 
+				crl.isRevoked((X509Certificate)o)) {
+				continue;
+			    } else {
+				return new SimpleKSResult
+				    (((X509Certificate)o).getPublicKey());
+			    }
+			}
+		    }
+		}
+	    }
+	    throw new KeySelectorException("No X509Certificate found!");
+	}
+    }
+
+    /**
+     * KeySelector which would retrieve the public key out of the 
+     * KeyValue element and return it.
+     * NOTE: If the key algorithm doesn't match signature algorithm,
+     * then the public key will be ignored.
+     */
+    public static class KeyValueKeySelector extends KeySelector {
+	public KeySelectorResult select(KeyInfo keyInfo, 
+					KeySelector.Purpose purpose, 
+					AlgorithmMethod method, 
+					XMLCryptoContext context) 
+	    throws KeySelectorException {
+	    if (keyInfo == null) {
+		throw new KeySelectorException("Null KeyInfo object!");
+	    }
+	    SignatureMethod sm = (SignatureMethod) method;
+	    List list = keyInfo.getContent();
+	    
+	    for (int i = 0; i < list.size(); i++) {
+		XMLStructure xmlStructure = (XMLStructure) list.get(i);
+		if (xmlStructure instanceof KeyValue) {
+		    PublicKey pk = null;
+		    try {
+			pk = ((KeyValue)xmlStructure).getPublicKey();
+		    } catch (KeyException ke) {
+			throw new KeySelectorException(ke);
+		    }
+		    // make sure algorithm is compatible with method
+		    if (algEquals(sm.getAlgorithm(), pk.getAlgorithm())) {
+			return new SimpleKSResult(pk);
+		    } 
+		}
+	    }
+	    throw new KeySelectorException("No KeyValue element found!");
+	}
+	
+	//@@@FIXME: this should also work for key types other than DSA/RSA
+	static boolean algEquals(String algURI, String algName) {
+	    if (algName.equalsIgnoreCase("DSA") && 
+		algURI.equalsIgnoreCase(SignatureMethod.DSA_SHA1)) {
+		return true;
+	    } else if (algName.equalsIgnoreCase("RSA") &&
+		       algURI.equalsIgnoreCase(SignatureMethod.RSA_SHA1)) {
+		return true;
+	    } else {
+		return false;
+	    }
+	}
+    }
+
+    /**
+     * KeySelector which would perform special lookup as documented
+     * by the ie/baltimore/merlin-examples testcases and return the 
+     * matching public key.
+     */
+    public static class CollectionKeySelector extends KeySelector {
+	private CertificateFactory certFac;
+	private File certDir;
+	private Vector certs;
+	private static final int MATCH_SUBJECT = 0;
+	private static final int MATCH_ISSUER = 1;
+	private static final int MATCH_SERIAL = 2;
+	private static final int MATCH_SUBJECT_KEY_ID = 3;
+	private static final int MATCH_CERTIFICATE = 4;
+	
+	public CollectionKeySelector(File dir) {
+	    certDir = dir;
+	    try {
+		certFac = CertificateFactory.getInstance("X509");
+	    } catch (CertificateException ex) {
+		// not going to happen
+	    }
+	    certs = new Vector();
+	    File[] files = new File(certDir, "certs").listFiles();
+	    for (int i = 0; i < files.length; i++) {
+		try {
+		    certs.add((X509Certificate)certFac.generateCertificate
+			      (new FileInputStream(files[i])));
+		} catch (Exception ex) {
+		    // ignore non-cert files
+		}
+	    }
+	}
+	
+	public Vector match(int matchType, Object value, Vector pool) {
+	    Vector matchResult = new Vector();
+	    for (int j=0; j < pool.size(); j++) {
+		X509Certificate c = (X509Certificate) pool.get(j);
+		switch (matchType) {
+		case MATCH_SUBJECT:
+		    try {
+		        if (c.getSubjectDN().equals(new X500Name((String)value))) {
+			    matchResult.add(c);
+		        }
+		    } catch (IOException ioe) { }
+		    break;
+		case MATCH_ISSUER:
+		    try {
+		        if (c.getIssuerDN().equals(new X500Name((String)value))) {
+			    matchResult.add(c);
+		        }
+		    } catch (IOException ioe) { }
+		    break;
+		case MATCH_SERIAL:
+		    if (c.getSerialNumber().equals(value)) {
+			matchResult.add(c);
+		    }
+		    
+		    break;
+		case MATCH_SUBJECT_KEY_ID:
+		    byte[] extension = c.getExtensionValue("2.5.29.14");
+		    if (extension != null) {
+			try {
+			    DerValue derValue = new DerValue(extension);
+			    DerValue derValue2 = new DerValue(derValue.getOctetString());
+			    byte[] extVal = derValue2.getOctetString();
+			    
+			    if (Arrays.equals(extVal, (byte[]) value)) {
+				matchResult.add(c);
+			    }
+			} catch (IOException ex) { }
+		    }
+		    break;
+		case MATCH_CERTIFICATE:
+		    if (c.equals(value)) {
+			matchResult.add(c);
+		    }
+		    break;
+		}
+	    }
+	    return matchResult;
+	}
+	
+	public KeySelectorResult select(KeyInfo keyInfo, 
+					KeySelector.Purpose purpose, 
+					AlgorithmMethod method, 
+					XMLCryptoContext context) 
+	    throws KeySelectorException {
+	    if (keyInfo == null) {
+		throw new KeySelectorException("Null KeyInfo object!");
+	    }
+	    Iterator iter = keyInfo.getContent().iterator();
+	    while (iter.hasNext()) {
+		XMLStructure xmlStructure = (XMLStructure) iter.next();
+		try {
+		    if (xmlStructure instanceof KeyName) {
+			String name = ((KeyName)xmlStructure).getName();
+			PublicKey pk = null;
+			try {
+			    // Lookup the public key using the key name 'Xxx', 
+			    // i.e. the public key is in "certs/xxx.crt".
+			    File certFile = new File(new File(certDir, "certs"),
+				name.toLowerCase()+".crt");
+			    X509Certificate cert = (X509Certificate) 
+			        certFac.generateCertificate
+			        (new FileInputStream(certFile));
+			    pk = cert.getPublicKey();
+		        } catch (FileNotFoundException e) {
+			    // assume KeyName contains subject DN and search
+			    // collection of certs for match
+			    Vector result = match(MATCH_SUBJECT, name, certs);
+			    int numOfMatches = (result==null? 0:result.size());
+			    if (numOfMatches != 1) {
+			        throw new KeySelectorException
+				    ((numOfMatches==0?"No":"More than one") + 
+				     " match found");
+			    }
+			    pk =((X509Certificate)result.get(0)).getPublicKey();
+			}
+			return new SimpleKSResult(pk);
+		    } else if (xmlStructure instanceof RetrievalMethod) {
+			// Lookup the public key using the retrievel method.
+			// NOTE: only X509Certificate type is supported.
+			RetrievalMethod rm = (RetrievalMethod) xmlStructure;
+			String type = rm.getType();
+			if (type.equals(X509Data.RAW_X509_CERTIFICATE_TYPE)) {
+			    String uri = rm.getURI();
+			    X509Certificate cert = (X509Certificate) 
+				certFac.generateCertificate
+				(new FileInputStream(new File(certDir, uri)));
+			    return new SimpleKSResult(cert.getPublicKey());
+			} else {
+			    throw new KeySelectorException
+				("Unsupported RetrievalMethod type");
+			}
+		    } else if (xmlStructure instanceof X509Data) {
+			List content = ((X509Data)xmlStructure).getContent();
+			int size = content.size();
+			Vector result = null;
+			// Lookup the public key using the information 
+			// specified in X509Data element, i.e. searching
+			// over the collection of certificate files under
+			// "certs" subdirectory and return those match.
+			for (int k = 0; k<size; k++) {
+			    Object obj = content.get(k);
+			    if (obj instanceof String) {
+				result = match(MATCH_SUBJECT, obj, certs);
+			    } else if (obj instanceof byte[]) {
+				result = match(MATCH_SUBJECT_KEY_ID, obj, 
+					       certs);
+			    } else if (obj instanceof X509Certificate) {
+				result = match(MATCH_CERTIFICATE, obj, certs);
+			    } else if (obj instanceof X509IssuerSerial) {
+				X509IssuerSerial is = (X509IssuerSerial) obj;
+				result = match(MATCH_SERIAL, 
+					       is.getSerialNumber(), certs);
+				result = match(MATCH_ISSUER, 
+					       is.getIssuerName(), result);
+			    } else {
+				throw new KeySelectorException("Unsupported X509Data: " + obj);
+			    }
+			}
+			int numOfMatches = (result==null? 0:result.size());
+			if (numOfMatches != 1) {
+			    throw new KeySelectorException
+				((numOfMatches==0?"No":"More than one") + 
+				 " match found");
+			}
+			return new SimpleKSResult(((X509Certificate)
+					  result.get(0)).getPublicKey());
+		    }
+		} catch (Exception ex) {
+		    throw new KeySelectorException(ex);
+		}
+	    }
+	    throw new KeySelectorException("No matching key found!");
+	}
+    }
+    
+    public static class ByteUtil {
+	
+	private static String mapping = "0123456789ABCDEF";
+	private static int numBytesPerRow = 6;
+	
+	private static String getHex(byte value) {
+	    int low = value & 0x0f;
+	    int high = ((value >> 4) & 0x0f);
+	    char[] res = new char[2];
+	    res[0] = mapping.charAt(high);
+	    res[1] = mapping.charAt(low);
+	    return new String(res);
+	}
+
+	public static String dumpArray(byte[] in) {
+	    int numDumped = 0;
+	    StringBuffer buf = new StringBuffer(512);
+	    buf.append("{");
+	    for (int i=0;i<(in.length/numBytesPerRow); i++) {
+		for (int j=0; j<(numBytesPerRow); j++) {
+		    buf.append("(byte)0x" + getHex(in[i*numBytesPerRow+j]) + 
+			       ", ");
+		}
+		numDumped += numBytesPerRow;
+	    }
+	    while (numDumped < in.length) {
+		buf.append("(byte)0x" + getHex(in[numDumped]) + " ");
+		numDumped += 1;
+	    }
+	    buf.append("}");
+	    return buf.toString();
+	}
+    }
+}
+
+class SimpleKSResult implements KeySelectorResult {
+    private final Key key;
+    
+    SimpleKSResult(Key key) { this.key = key; }
+    
+    public Key getKey() { return key; }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/OctetStreamDataTest.java b/src_unitTests/javax/xml/crypto/test/OctetStreamDataTest.java
new file mode 100644
index 0000000..88f87d8
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/OctetStreamDataTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test;
+
+import java.io.*;
+import java.util.*;
+import javax.xml.crypto.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.OctetStreamData
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class OctetStreamDataTest extends TestCase {
+
+    public OctetStreamDataTest() {
+	super("OctetStreamDataTest");
+    }
+
+    public OctetStreamDataTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+    }
+    
+    public void tearDown() {}
+    
+    public void testConstructor() {
+	// test OctetStreamData(InputStream) and 
+	// OctetStreamData(InputStream, String, String)
+	OctetStreamData osdata;
+	try {
+	    osdata = new OctetStreamData(null); 
+	    fail("Should raise a NPE for null input stream"); 
+	} catch (NullPointerException npe) {}	
+	try {
+	    osdata = new OctetStreamData(null, "uri", "mimeType");
+	    fail("Should raise a NPE for null input stream"); 
+	} catch (NullPointerException npe) {}
+
+	int len = 300;
+	byte[] in = new byte[len];
+	new Random().nextBytes(in);
+	ByteArrayInputStream bais = new ByteArrayInputStream(in);
+	try {
+	    osdata = new OctetStreamData(bais); 
+	    assertNotNull(osdata);
+	    assertEquals(osdata.getOctetStream(), bais);
+	    assertNull(osdata.getURI());
+	    assertNull(osdata.getMimeType());
+	
+	    osdata = new OctetStreamData(bais, null, null);
+	    assertNotNull(osdata);
+	    assertEquals(osdata.getOctetStream(), bais);
+	    assertNull(osdata.getURI());
+	    assertNull(osdata.getMimeType());
+	} catch (Exception ex) {
+	    fail("Unexpected Exception: " + ex);
+	}
+
+	String uri="testUri";
+	String mimeType="test";
+	try {
+	    osdata = new OctetStreamData(bais, uri, mimeType);
+	    assertNotNull(osdata);
+	    assertEquals(osdata.getOctetStream(), bais);
+	    assertEquals(osdata.getURI(), uri);
+	    assertEquals(osdata.getMimeType(), mimeType);
+	} catch (Exception ex) {
+	    fail("Unexpected Exception: " + ex);
+	}
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/Baltimore18Test.java b/src_unitTests/javax/xml/crypto/test/dsig/Baltimore18Test.java
new file mode 100644
index 0000000..c81eeda
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/Baltimore18Test.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+import javax.xml.crypto.KeySelector;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "merlin-xmldsig-eighteen" 
+ * testcases from Baltimore
+ *
+ * @author Sean Mullan
+ */
+public class Baltimore18Test extends TestCase {
+
+    private SignatureValidator validator;
+    private File dir;
+    private KeySelector cks;
+
+    static {
+	Security.insertProviderAt
+	    (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public Baltimore18Test(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	dir = new File(System.getProperty("basedir") + fs + "data" + fs + "ie" +
+	    fs + "baltimore" + fs + "merlin-examples",
+            "merlin-xmldsig-eighteen");
+	validator = new SignatureValidator(dir);
+	cks = new KeySelectors.CollectionKeySelector(dir);
+    }
+    
+    public void test_signature_keyname() throws Exception {
+        String file = "signature-keyname.xml";
+	
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_retrievalmethod_rawx509crt() throws Exception {
+        String file = "signature-retrievalmethod-rawx509crt.xml";
+
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_x509_crt_crl() throws Exception {
+        String file = "signature-x509-crt-crl.xml";
+
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_x509_crt() throws Exception {
+        String file = "signature-x509-crt.xml";
+
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_x509_is() throws Exception {
+        String file = "signature-x509-is.xml";
+
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_x509_ski() throws Exception {
+        String file = "signature-x509-ski.xml";
+
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_x509_sn() throws Exception {
+        String file = "signature-x509-sn.xml";
+
+	boolean coreValidity = validator.validate(file, cks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public static void main(String[] args) throws Exception {
+        Baltimore18Test bt = new Baltimore18Test("");
+	bt.test_signature_keyname();
+	bt.test_signature_retrievalmethod_rawx509crt();
+	bt.test_signature_x509_crt_crl();
+	bt.test_signature_x509_crt();
+	bt.test_signature_x509_is();
+	bt.test_signature_x509_ski();
+	bt.test_signature_x509_sn();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/Baltimore23Test.java b/src_unitTests/javax/xml/crypto/test/dsig/Baltimore23Test.java
new file mode 100644
index 0000000..0197307
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/Baltimore23Test.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.KeyStore;
+import java.security.Security;
+import javax.xml.crypto.KeySelector;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "merlin-xmldsig-twenty-three" 
+ * testcases from Baltimore
+ *
+ * @author Sean Mullan
+ */
+public class Baltimore23Test extends TestCase {
+
+    private SignatureValidator validator;
+    private File dir;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public Baltimore23Test(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	dir = new File(System.getProperty("basedir") + fs + "data" + fs 
+	    + "ie" + fs + "baltimore" + fs + "merlin-examples",
+            "merlin-xmldsig-twenty-three");
+	validator = new SignatureValidator(dir);
+    }
+
+    public void test_signature_enveloped_dsa() throws Exception {
+        String file = "signature-enveloped-dsa.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_enveloping_b64_dsa() throws Exception {
+        String file = "signature-enveloping-b64-dsa.xml";
+     
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_enveloping_dsa() throws Exception {
+        String file = "signature-enveloping-dsa.xml";
+       
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_external_b64_dsa() throws Exception {
+        String file = "signature-external-b64-dsa.xml";
+       
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_external_dsa() throws Exception {
+        String file = "signature-external-dsa.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_enveloping_rsa() throws Exception {
+        String file = "signature-enveloping-rsa.xml";
+       
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_enveloping_hmac_sha1() throws Exception {
+        String file = "signature-enveloping-hmac-sha1.xml";
+        
+	KeySelector ks = new KeySelectors.SecretKeySelector
+	    ("secret".getBytes("ASCII") );
+	boolean coreValidity = validator.validate(file, ks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_enveloping_hmac_sha1_40() throws Exception {
+        String file = "signature-enveloping-hmac-sha1-40.xml";
+        
+	KeySelector ks = new KeySelectors.SecretKeySelector
+	    ("secret".getBytes("ASCII") );
+	boolean coreValidity = validator.validate(file, ks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_keyname() throws Exception {
+        String file = "signature-keyname.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.CollectionKeySelector(dir));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_retrievalmethod_rawx509crt() throws Exception {
+        String file = "signature-retrievalmethod-rawx509crt.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.CollectionKeySelector(dir));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_x509_crt_crl() throws Exception {
+        String file = "signature-x509-crt-crl.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_x509_crt() throws Exception {
+        String file = "signature-x509-crt.xml";
+       
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_x509_is() throws Exception {
+        String file = "signature-x509-is.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.CollectionKeySelector(dir));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    
+    public void test_signature_x509_ski() throws Exception {
+        String file = "signature-x509-ski.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.CollectionKeySelector(dir));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature_x509_sn() throws Exception {
+        String file = "signature-x509-sn.xml";
+        
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.CollectionKeySelector(dir));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public void test_signature() throws Exception {
+        String file = "signature.xml";
+	String fs = System.getProperty("file.separator");
+	String keystore = System.getProperty("basedir") + fs + "data" + fs +
+	     "ie" + fs + "baltimore" + fs + "merlin-examples" + fs +
+	     "merlin-xmldsig-twenty-three" + fs + "certs" + fs + "xmldsig.jks";
+	KeyStore ks = KeyStore.getInstance("JKS");
+	ks.load(new FileInputStream(keystore), "changeit".toCharArray());
+
+        boolean cv = validator.validate(file, new X509KeySelector(ks, false));
+        assertTrue("Signature failed core validation", cv);
+    }
+
+    public static void main(String[] args) throws Exception {
+        Baltimore23Test bt = new Baltimore23Test("");
+        bt.test_signature_enveloped_dsa();
+	bt.test_signature(); 
+	bt.test_signature_enveloping_b64_dsa();
+	bt.test_signature_enveloping_dsa();
+	bt.test_signature_enveloping_hmac_sha1();
+	bt.test_signature_enveloping_hmac_sha1_40();
+	bt.test_signature_enveloping_rsa();
+	bt.test_signature_external_b64_dsa();
+	bt.test_signature_external_dsa();
+	bt.test_signature_keyname();
+	bt.test_signature_retrievalmethod_rawx509crt();
+	bt.test_signature_x509_crt_crl();
+	bt.test_signature_x509_crt();
+	bt.test_signature_x509_is();
+	bt.test_signature_x509_ski();
+	bt.test_signature_x509_sn();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreExcC14n1Test.java b/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreExcC14n1Test.java
new file mode 100644
index 0000000..663661d
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreExcC14n1Test.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "merlin-exc-c14n-one" 
+ * testcases from Baltimore
+ *
+ * @author Sean Mullan
+ */
+public class BaltimoreExcC14n1Test extends TestCase {
+
+    private SignatureValidator validator;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public BaltimoreExcC14n1Test(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	String base = System.getProperty("basedir") + fs + "data" + fs + "ie" +
+	    fs + "baltimore" + fs + "merlin-examples";
+	validator = new SignatureValidator(new File
+	    (base, "merlin-exc-c14n-one"));
+    }
+
+    public void test_exc_signature() throws Exception {
+        String file = "exc-signature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+
+    public static void main(String[] args) throws Exception {
+        BaltimoreExcC14n1Test bt = new BaltimoreExcC14n1Test("");
+	bt.test_exc_signature();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreIaik2Test.java b/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreIaik2Test.java
new file mode 100644
index 0000000..95c739b
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreIaik2Test.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "ec-merlin-iaikTests-two" 
+ * testcases from Baltimore
+ *
+ * @author Sean Mullan
+ */
+public class BaltimoreIaik2Test extends TestCase {
+
+    private SignatureValidator validator;
+    private File dir;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public BaltimoreIaik2Test(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	dir = new File(System.getProperty("basedir") + fs + "data" + fs +
+	    "ie" + fs + "baltimore" + fs + "merlin-examples",
+            "ec-merlin-iaikTests-two");
+	validator = new SignatureValidator(dir);
+    }
+
+    public void test_signature() throws Exception {
+        String file = "signature.xml";
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+        assertTrue("Signature failed core validation", coreValidity);
+    }    
+
+    public static void main(String[] args) throws Exception {
+        BaltimoreIaik2Test bt = new BaltimoreIaik2Test("");
+	bt.test_signature();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreXPathFilter2ThreeTest.java b/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreXPathFilter2ThreeTest.java
new file mode 100644
index 0000000..ce467ed
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/BaltimoreXPathFilter2ThreeTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate the "merlin-xpath-filter2-three" testcases
+ * under data/vectors/ie/baltimore/merlin-examples directory
+ *
+ * @author Sean Mullan
+ */
+public class BaltimoreXPathFilter2ThreeTest extends TestCase {
+
+    private SignatureValidator validator = null;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public BaltimoreXPathFilter2ThreeTest(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	String base = System.getProperty("basedir") + fs + "data"
+	    + fs + "interop" + fs + "xfilter2";
+	validator = new SignatureValidator(new File
+	    (base, "merlin-xpath-filter2-three"));
+    }
+    public void test_sign_spec() throws Exception {
+        String file = "sign-spec.xml";
+
+	boolean coreValidity = validator.validate(file, 
+		    new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation#1", coreValidity);
+
+ 	coreValidity = validator.validate(file, 
+		    new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation#2", coreValidity);
+    }
+    public void test_sign_xfdl() throws Exception {
+        String file = "sign-xfdl.xml";
+
+	boolean coreValidity = validator.validate(file, 
+		    new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation#1", coreValidity);
+
+ 	coreValidity = validator.validate(file, 
+		    new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation#2", coreValidity);
+    }
+    public static void main(String[] args) throws Exception {
+        BaltimoreXPathFilter2ThreeTest it = 
+	    new BaltimoreXPathFilter2ThreeTest("");
+	it.test_sign_spec();
+	it.test_sign_xfdl();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/CanonicalizationMethodTest.java b/src_unitTests/javax/xml/crypto/test/dsig/CanonicalizationMethodTest.java
new file mode 100644
index 0000000..56e110d
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/CanonicalizationMethodTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.*;
+import java.security.spec.AlgorithmParameterSpec;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.ExcC14NParameterSpec;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.CanonicalizationMethod
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class CanonicalizationMethodTest extends TestCase {
+
+    XMLSignatureFactory factory;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    private static final String C14N_ALGOS[] = {
+	CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
+	CanonicalizationMethod.INCLUSIVE,
+	CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS,
+	CanonicalizationMethod.EXCLUSIVE
+    };
+
+    public CanonicalizationMethodTest() {
+	super("CanonicalizationMethodTest");
+    }
+
+    public CanonicalizationMethodTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testisFeatureSupported() throws Exception {
+	CanonicalizationMethod cm; 
+	for (int i = 0; i < C14N_ALGOS.length; i++) {
+	    String algo = C14N_ALGOS[i];
+	    ExcC14NParameterSpec params = null;
+	    if (i >= 2) {
+		params = new ExcC14NParameterSpec();
+	    }
+	    cm = factory.newCanonicalizationMethod(algo, params);
+	    try {
+		cm.isFeatureSupported(null); 
+		fail("Should raise a NPE for null feature"); 
+	    } catch (NullPointerException npe) {}
+	    
+	    assertTrue(!cm.isFeatureSupported("not supported"));
+	}
+    }
+
+    public void testConstructor() throws Exception {
+	// test newAlgorithmMethod(String algorithm, 
+	//                         AlgorithmParameterSpec params)
+	// for generating CanonicalizationMethod objects
+	CanonicalizationMethod cm; 
+	for (int i = 0; i < C14N_ALGOS.length; i++) {
+	    String algo = C14N_ALGOS[i];
+	    cm = factory.newCanonicalizationMethod(algo, 
+		(C14NMethodParameterSpec) null);
+	    assertNotNull(cm);
+	    assertEquals(cm.getAlgorithm(), algo);
+	    assertNull(cm.getParameterSpec());
+	    
+	    try {
+		cm = factory.newCanonicalizationMethod
+		    (algo, new TestUtils.MyOwnC14nParameterSpec());
+		fail("Should raise an IAPE for invalid c14n parameters"); 
+	    } catch (InvalidAlgorithmParameterException iape) {
+	    } catch (Exception ex) {
+		fail("Should raise a IAPE instead of " + ex); 
+	    }
+	    if (algo.equals(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS) ||
+		algo.equals(CanonicalizationMethod.EXCLUSIVE)) {
+		cm = factory.newCanonicalizationMethod
+		    (CanonicalizationMethod.EXCLUSIVE,
+		     new ExcC14NParameterSpec());
+		AlgorithmParameterSpec aps = cm.getParameterSpec();
+		assertNotNull(aps);
+		assertTrue(aps instanceof ExcC14NParameterSpec);	
+	    }
+	}
+
+	try {
+	    cm = factory.newCanonicalizationMethod(null, 
+		(C14NMethodParameterSpec) null); 
+	    fail("Should raise a NPE for null algo"); 
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE instead of " + ex); 
+	}
+
+	try {
+	    cm = factory.newCanonicalizationMethod("non-existent", 
+		(C14NMethodParameterSpec) null); 
+	    fail("Should raise an NSAE for non-existent algos"); 
+	} catch (NoSuchAlgorithmException nsae) {
+	} catch (Exception ex) {
+	    fail("Should raise an NSAE instead of " + ex); 
+	}
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/ComRSASecurityTest.java b/src_unitTests/javax/xml/crypto/test/dsig/ComRSASecurityTest.java
new file mode 100644
index 0000000..d75a1f9
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/ComRSASecurityTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "bdournaee" 
+ * testcases from RSA
+ *
+ * @author Sean Mullan
+ */
+public class ComRSASecurityTest extends TestCase {
+
+    private SignatureValidator validator;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public ComRSASecurityTest(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	String base = System.getProperty("basedir") + fs + "data" + fs + "com";
+	validator = new SignatureValidator(new File
+	    (base, "rsasecurity/bdournaee"));
+    }
+    public void test_certj201_enveloping() throws Exception {
+        String file = "certj201_enveloping.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_certj201_enveloped() throws Exception {
+        String file = "certj201_enveloped.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public static void main(String[] args) throws Exception {
+        ComRSASecurityTest ct = new ComRSASecurityTest("");
+	ct.test_certj201_enveloped();
+	ct.test_certj201_enveloping();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/CreateBaltimore23Test.java b/src_unitTests/javax/xml/crypto/test/dsig/CreateBaltimore23Test.java
new file mode 100644
index 0000000..d7e2cdb
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/CreateBaltimore23Test.java
@@ -0,0 +1,664 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.math.BigInteger;
+import java.security.Key;
+import java.security.KeyStore;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.cert.X509CRL;
+import java.util.*;
+import javax.xml.parsers.*;
+import org.w3c.dom.*;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXParseException;
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.xml.security.utils.Constants;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * Test that recreates merlin-xmldsig-twenty-three test vectors but with
+ * different keys and X.509 data.
+ *
+ * @author Sean Mullan
+ */
+public class CreateBaltimore23Test extends TestCase {
+
+    private XMLSignatureFactory fac;
+    private KeyInfoFactory kifac;
+    private DocumentBuilder db;
+    private CanonicalizationMethod withoutComments;
+    private Transform withComments;
+    private SignatureMethod dsaSha1, rsaSha1;
+    private DigestMethod sha1;
+    private KeyInfo dsa, rsa;
+    private KeySelector kvks = new KeySelectors.KeyValueKeySelector();
+    private KeySelector sks; 
+    private Key signingKey;
+    private PublicKey validatingKey;
+    private Certificate signingCert;
+    private KeyStore ks;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public CreateBaltimore23Test(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	fac = XMLSignatureFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	kifac = fac.getKeyInfoFactory();
+	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	dbf.setNamespaceAware(true);
+	db = dbf.newDocumentBuilder();
+
+	// get key & self-signed certificate from keystore
+	String fs = System.getProperty("file.separator");
+	FileInputStream fis = new FileInputStream
+	    (System.getProperty("basedir") + fs + "data" + fs + "test.jks");
+	ks = KeyStore.getInstance("JKS");
+	ks.load(fis, "changeit".toCharArray());
+	signingKey = ks.getKey("mullan", "changeit".toCharArray());
+	signingCert = ks.getCertificate("mullan");
+	validatingKey = signingCert.getPublicKey();
+
+	// create common objects
+	withoutComments = fac.newCanonicalizationMethod
+	    (CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null);
+	withComments = fac.newTransform
+	    (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+	     (TransformParameterSpec) null);
+	dsaSha1 = fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null);
+	sha1 = fac.newDigestMethod(DigestMethod.SHA1, null);
+	dsa = kifac.newKeyInfo(Collections.singletonList
+	    (kifac.newKeyValue(validatingKey)));
+	rsa = kifac.newKeyInfo(Collections.singletonList
+	    (kifac.newKeyValue(TestUtils.getPublicKey("RSA"))));
+	rsaSha1 = fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
+        sks = new KeySelectors.SecretKeySelector("secret".getBytes("ASCII"));
+
+    }
+
+    public void test_create_signature_enveloped_dsa() throws Exception {
+	// create SignedInfo
+	SignedInfo si = fac.newSignedInfo
+	    (withoutComments, dsaSha1, Collections.singletonList
+		(fac.newReference
+		    ("", sha1, Collections.singletonList
+	                (fac.newTransform(Transform.ENVELOPED, 
+			 (TransformParameterSpec) null)), 
+	         null, null)));
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature(si, dsa);
+
+	Document doc = db.newDocument();
+	Element envelope = doc.createElementNS
+	    ("http://example.org/envelope", "Envelope");
+	envelope.setAttributeNS
+	    (Constants.NamespaceSpecNS, "xmlns", "http://example.org/envelope");
+	doc.appendChild(envelope);
+
+	DOMSignContext dsc = new DOMSignContext(signingKey, envelope);
+
+	sig.sign(dsc);
+
+	DOMValidateContext dvc = new DOMValidateContext
+	    (kvks, envelope.getFirstChild());
+	XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+	assertTrue(sig.equals(sig2));
+
+	assertTrue(sig2.validate(dvc));
+    }
+
+    public void test_create_signature_enveloping_b64_dsa() throws Exception {
+	test_create_signature_enveloping(dsaSha1, dsa, signingKey, kvks, true);
+    }
+
+    public void test_create_signature_enveloping_dsa() throws Exception {
+	test_create_signature_enveloping(dsaSha1, dsa, signingKey, kvks, false);
+    }
+
+    public void test_create_signature_enveloping_hmac_sha1_40() 
+	throws Exception {
+	SignatureMethod hmacSha1 = fac.newSignatureMethod
+	    (SignatureMethod.HMAC_SHA1, new HMACParameterSpec(40));
+        test_create_signature_enveloping(hmacSha1, null,
+	    TestUtils.getSecretKey("secret".getBytes("ASCII")), sks, false);
+    }
+
+    public void test_create_signature_enveloping_hmac_sha1()
+	throws Exception {
+	SignatureMethod hmacSha1 = fac.newSignatureMethod
+	    (SignatureMethod.HMAC_SHA1, null);
+        test_create_signature_enveloping(hmacSha1, null,
+	    TestUtils.getSecretKey("secret".getBytes("ASCII")), sks, false);
+    }
+
+    public void test_create_signature_enveloping_rsa() throws Exception {
+	test_create_signature_enveloping(rsaSha1, rsa, 
+	    TestUtils.getPrivateKey("RSA"), kvks, false);
+    }
+
+    public void test_create_signature_external_b64_dsa() throws Exception {
+	test_create_signature_external(dsaSha1, dsa, signingKey, kvks, true);
+    }
+
+    public void test_create_signature_external_dsa() throws Exception {
+	test_create_signature_external(dsaSha1, dsa, signingKey, kvks, false);
+    }
+
+    public void test_create_signature_keyname() throws Exception {
+	KeyInfo kn = kifac.newKeyInfo(Collections.singletonList
+	    (kifac.newKeyName("mullan")));
+	test_create_signature_external(dsaSha1, kn, signingKey,
+	    new X509KeySelector(ks), false);
+    }
+
+    public void test_create_signature_retrievalmethod_rawx509crt() 
+	throws Exception {
+	KeyInfo rm = kifac.newKeyInfo(Collections.singletonList
+	    (kifac.newRetrievalMethod
+	    ("certs/mullan.crt", X509Data.RAW_X509_CERTIFICATE_TYPE, null)));
+	test_create_signature_external(dsaSha1, rm, signingKey,
+	    new X509KeySelector(ks), false);
+    }
+
+    public void test_create_signature_x509_crt_crl() throws Exception {
+	List xds = new ArrayList();
+	CertificateFactory cf = CertificateFactory.getInstance("X.509");
+	xds.add(signingCert);
+	String fs = System.getProperty("file.separator");
+	FileInputStream fis = new FileInputStream
+	    (System.getProperty("basedir") + fs + "data" + fs + "ie" + fs +
+	     "baltimore" + fs + "merlin-examples" + fs + 
+	     "merlin-xmldsig-twenty-three" + fs + "certs" + fs + "crl");
+	X509CRL crl = (X509CRL) cf.generateCRL(fis);
+	fis.close();
+	xds.add(crl);
+	KeyInfo crt_crl = kifac.newKeyInfo(Collections.singletonList
+            (kifac.newX509Data(xds)));
+
+	test_create_signature_external(dsaSha1, crt_crl, signingKey,
+	    new X509KeySelector(ks), false);
+    }
+
+    public void test_create_signature_x509_crt() throws Exception {
+	KeyInfo crt = kifac.newKeyInfo(Collections.singletonList
+            (kifac.newX509Data(Collections.singletonList(signingCert))));
+
+	test_create_signature_external(dsaSha1, crt, signingKey,
+	    new X509KeySelector(ks), false);
+    }
+
+    public void test_create_signature_x509_is() throws Exception {
+	KeyInfo is = kifac.newKeyInfo(Collections.singletonList
+	    (kifac.newX509Data(Collections.singletonList
+	    (kifac.newX509IssuerSerial
+	    ("CN=Sean Mullan,DC=sun,DC=com",
+	    new BigInteger("3f451a6a", 16))))));
+	test_create_signature_external(dsaSha1, is, signingKey,
+	    new X509KeySelector(ks), false);
+    }
+
+    public void test_create_signature_x509_ski() throws Exception {
+	KeyInfo ski = kifac.newKeyInfo(Collections.singletonList
+            (kifac.newX509Data(Collections.singletonList
+	    ("keyid".getBytes("ASCII")))));
+
+	test_create_signature_external(dsaSha1, ski, signingKey,
+	    KeySelector.singletonKeySelector(validatingKey), false);
+    }
+
+    public void test_create_signature_x509_sn() throws Exception {
+	KeyInfo sn = kifac.newKeyInfo(Collections.singletonList
+            (kifac.newX509Data(Collections.singletonList
+	    ("CN=Sean Mullan,DC=sun,DC=com"))));
+
+	test_create_signature_external(dsaSha1, sn, signingKey,
+	    new X509KeySelector(ks), false);
+    }
+
+    private void donottest_create_signature() throws Exception {
+	// set up reusable objects
+	Transform env = fac.newTransform(Transform.ENVELOPED, 
+	    (TransformParameterSpec) null);
+
+	// create references
+	List refs = new ArrayList();
+	
+	// Reference 1
+	refs.add(fac.newReference("http://www.w3.org/TR/xml-stylesheet", sha1));
+
+	// Reference 2
+        refs.add(fac.newReference
+	    ("http://www.w3.org/Signature/2002/04/xml-stylesheet.b64", 
+	    sha1, Collections.singletonList
+            (fac.newTransform(Transform.BASE64, 
+	     (TransformParameterSpec) null)), null, null));
+
+	// Reference 3
+        refs.add(fac.newReference("#object-1", sha1, Collections.singletonList
+	    (fac.newTransform(Transform.XPATH, 
+	    new XPathFilterParameterSpec("self::text()"))), 
+	    XMLObject.TYPE, null));
+
+	// Reference 4
+	String expr = "\n"
+          + " ancestor-or-self::dsig:SignedInfo			 " + "\n"
+          + "  and                                               " + "\n"
+          + " count(ancestor-or-self::dsig:Reference |		 " + "\n"
+          + "	   here()/ancestor::dsig:Reference[1]) >	 " + "\n"
+          + " count(ancestor-or-self::dsig:Reference)		 " + "\n"
+          + "  or                                                " + "\n"
+          + " count(ancestor-or-self::node() |			 " + "\n"
+          + "	   id('notaries')) =				 " + "\n"
+          + " count(ancestor-or-self::node())			 " + "\n";
+
+	XPathFilterParameterSpec xfp = new XPathFilterParameterSpec(expr,
+	    Collections.singletonMap("dsig", XMLSignature.XMLNS));
+//        refs.add(fac.newReference("", sha1, Collections.singletonList
+//	    (fac.newTransform(Transform.XPATH, xfp)),
+//	    XMLObject.TYPE, null));
+
+	// Reference 5
+        refs.add(fac.newReference("#object-2", sha1, Collections.singletonList
+	    (fac.newTransform(Transform.BASE64, (TransformParameterSpec) null)),
+	    XMLObject.TYPE, null));
+
+	// Reference 6
+        refs.add(fac.newReference
+	    ("#manifest-1", sha1, null, Manifest.TYPE, null));
+
+	// Reference 7
+        refs.add(fac.newReference("#signature-properties-1", sha1, null, 
+	    SignatureProperties.TYPE, null));
+
+	// Reference 8
+	List transforms = new ArrayList();
+	transforms.add(env);
+        refs.add(fac.newReference("", sha1, transforms, null, null));
+
+	// Reference 9
+	transforms.add(withComments);
+        refs.add(fac.newReference("", sha1, transforms, null, null));
+
+	// Reference 10
+        refs.add(fac.newReference("#xpointer(/)",
+	    sha1, Collections.singletonList(env), null, null));
+
+	// Reference 11
+        refs.add(fac.newReference("#xpointer(/)", sha1, transforms, 
+	    null, null));
+
+	// Reference 12
+        refs.add
+	    (fac.newReference("#object-3", sha1, null, XMLObject.TYPE, null));
+
+	// Reference 13
+        refs.add(fac.newReference("#object-3", sha1, 
+	    Collections.singletonList(withComments), XMLObject.TYPE, null));
+
+	// Reference 14
+        refs.add(fac.newReference("#xpointer(id('object-3'))", sha1, null, 
+	    XMLObject.TYPE, null));
+
+	// Reference 15
+        refs.add(fac.newReference("#xpointer(id('object-3'))", sha1, 
+	    Collections.singletonList(withComments), XMLObject.TYPE, null));
+
+	// Reference 16
+        refs.add(fac.newReference("#reference-2", sha1));
+
+	// Reference 17
+        refs.add(fac.newReference("#manifest-reference-1", sha1, null,
+	    null, "reference-1"));
+
+	// Reference 18
+        refs.add(fac.newReference("#reference-1", sha1, null, null,
+	    "reference-2"));
+
+	// create SignedInfo
+	SignedInfo si = fac.newSignedInfo(withoutComments, dsaSha1, refs);
+
+	// create keyinfo
+	XPathFilterParameterSpec xpf = new XPathFilterParameterSpec(
+	    "ancestor-or-self::dsig:X509Data",
+	    Collections.singletonMap("dsig", XMLSignature.XMLNS));
+	RetrievalMethod rm = kifac.newRetrievalMethod("#object-4", 
+	    X509Data.TYPE, Collections.singletonList(fac.newTransform
+	    (Transform.XPATH, xpf)));
+	KeyInfo ki = kifac.newKeyInfo(Collections.singletonList(rm), null);
+
+	Document doc = db.newDocument();
+
+	// create objects
+	List objs = new ArrayList();
+
+	// Object 1
+	objs.add(fac.newXMLObject(Collections.singletonList
+	    (new DOMStructure(doc.createTextNode("I am the text."))), 
+	    "object-1", "text/plain", null));
+
+	// Object 2
+	objs.add(fac.newXMLObject(Collections.singletonList
+	    (new DOMStructure(doc.createTextNode("SSBhbSB0aGUgdGV4dC4="))), 
+	    "object-2", "text/plain", Transform.BASE64));
+
+	// Object 3
+	Element nc = doc.createElementNS(null, "NonCommentandus");
+	nc.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "");
+        nc.appendChild(doc.createComment(" Commentandum "));
+	objs.add(fac.newXMLObject(Collections.singletonList
+	    (new DOMStructure(nc)), "object-3", null, null));
+
+	// Manifest
+	List manRefs = new ArrayList();
+
+	// Manifest Reference 1
+	manRefs.add(fac.newReference("http://www.w3.org/TR/xml-stylesheet",
+	    sha1, null, null, "manifest-reference-1"));
+
+	// Manifest Reference 2
+	manRefs.add(fac.newReference("#reference-1", sha1));
+
+	// Manifest Reference 3
+	List manTrans = new ArrayList();
+        String xslt = ""
+	  + "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'\n"
+	  + "		 xmlns='http://www.w3.org/TR/xhtml1/strict' \n"
+	  + "		 exclude-result-prefixes='foo' \n"
+	  + "		 version='1.0'>\n"
+	  + "  <xsl:output encoding='UTF-8' \n"
+	  + "		indent='no' \n"
+	  + "		method='xml' />\n"
+	  + "  <xsl:template match='/'>\n"
+	  + "    <html>\n"
+	  + "	<head>\n"
+	  + "	 <title>Notaries</title>\n"
+	  + "	</head>\n"
+	  + "	<body>\n"
+	  + "	 <table>\n"
+	  + "	   <xsl:for-each select='Notaries/Notary'>\n"
+	  + "		<tr>\n"
+	  + "		<th>\n"
+	  + "		 <xsl:value-of select='@name' />\n"
+	  + "		</th>\n"
+	  + "		</tr>\n"
+	  + "	   </xsl:for-each>\n"
+	  + "	 </table>\n"
+	  + "	</body>\n"
+	  + "    </html>\n"
+	  + "  </xsl:template>\n"
+	  + "</xsl:stylesheet>\n";
+	Document docxslt = db.parse(new ByteArrayInputStream(xslt.getBytes()));
+        Node xslElem = docxslt.getDocumentElement();
+
+	manTrans.add(fac.newTransform(Transform.XSLT, 
+	    new XSLTTransformParameterSpec(new DOMStructure(xslElem))));
+	manTrans.add(fac.newTransform(CanonicalizationMethod.INCLUSIVE, 
+	    (TransformParameterSpec) null));
+	manRefs.add(fac.newReference("#notaries", sha1, manTrans, null, null));
+
+	objs.add(fac.newXMLObject(Collections.singletonList
+	    (fac.newManifest(manRefs, "manifest-1")), null, null, null));
+
+	// SignatureProperties
+	Element sa = doc.createElementNS("urn:demo", "SignerAddress");
+	sa.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "urn:demo");
+	Element ip = doc.createElementNS("urn:demo", "IP");
+	ip.appendChild(doc.createTextNode("192.168.21.138"));
+	sa.appendChild(ip);
+	SignatureProperty sp = fac.newSignatureProperty
+	    (Collections.singletonList(new DOMStructure(sa)), 
+	    "#signature", null);
+	SignatureProperties sps = fac.newSignatureProperties
+	    (Collections.singletonList(sp), "signature-properties-1");
+	objs.add(fac.newXMLObject(Collections.singletonList(sps), null, 
+	    null, null));
+
+	// Object 4
+	List xds = new ArrayList();
+	xds.add("CN=Sean Mullan,DC=sun,DC=com");
+	xds.add(kifac.newX509IssuerSerial
+	    ("CN=Sean Mullan,DC=sun,DC=com",
+	    new BigInteger("3f451a6a", 16)));
+	xds.add(signingCert);
+	objs.add(fac.newXMLObject(Collections.singletonList
+	    (kifac.newX509Data(xds)), "object-4", null, null));
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature(si, ki, objs, "signature", null);
+
+	// create envelope header
+	Element envelope = doc.createElementNS
+	    ("http://example.org/usps", "Envelope");
+	envelope.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", 
+	    "http://example.org/usps");
+        envelope.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:foo", 
+	    "http://example.org/foo");
+	doc.appendChild(envelope);
+	Element dearSir = doc.createElementNS 
+	    ("http://example.org/usps", "DearSir");
+	dearSir.appendChild(doc.createTextNode("foo"));
+	envelope.appendChild(dearSir);
+	Element body = doc.createElementNS("http://example.org/usps", "Body");
+	body.appendChild(doc.createTextNode("bar"));
+	envelope.appendChild(body);
+	Element ys = doc.createElementNS 
+	    ("http://example.org/usps", "YoursSincerely");
+	envelope.appendChild(ys);
+
+	// create envelope footer
+	Element ps = doc.createElementNS
+	    ("http://example.org/usps", "PostScript");
+	ps.appendChild(doc.createTextNode("bar"));
+	envelope.appendChild(ps);
+	Element notaries = doc.createElementNS(null, "Notaries");
+	notaries.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "");
+	notaries.setAttributeNS(null, "Id", "notaries");
+	Element notary1 = doc.createElementNS(null, "Notary");
+	notary1.setAttributeNS(null, "name", "Great, A. T.");
+	Element notary2 = doc.createElementNS(null, "Notary");
+	notary2.setAttributeNS(null, "name", "Hun, A. T.");
+	notaries.appendChild(notary1);
+	notaries.appendChild(notary2);
+	envelope.appendChild(notaries);
+	envelope.appendChild(doc.createComment(" Commentary "));
+
+	DOMSignContext dsc = new DOMSignContext(signingKey, ys);
+	dsc.setIdAttributeNS(notaries, null, "Id");
+
+	sig.sign(dsc);
+
+	// DOM L2 does not support the creation of DOCTYPEs, so instead
+        // we insert it before the document using a StringWriter
+//	String docType = 
+//	    "<!DOCTYPE Envelope [\n"
+//  	  + "<!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>\n"
+//          + "<!ENTITY c14n 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'>\n"
+//          + "<!ENTITY xpath 'http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
+//          + "<!ENTITY xslt 'http://www.w3.org/TR/1999/REC-xslt-19991116'>\n"
+//          + "<!ATTLIST Notaries Id ID #IMPLIED>\n"
+//          + "]>\n";
+	StringWriter sw = new StringWriter();
+//	sw.write(docType);
+
+        dumpDocument(doc, sw);
+
+	// read document back into DOM tree
+	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+	dbf.setNamespaceAware(true);
+	dbf.setValidating(false);
+	try {
+	    doc = dbf.newDocumentBuilder().parse
+	        (new InputSource(new StringReader(sw.toString())));
+	} catch (SAXParseException spe) {
+	    System.err.println("line:" + spe.getLineNumber());
+	    System.err.println("xml:" + sw.toString());
+	}
+	System.out.println("doc is:" + sw.toString());
+	Element sigElement = SignatureValidator.getSignatureElement(doc);
+	if (sigElement == null) {
+            throw new Exception("Couldn't find signature Element");
+	}
+
+	DOMValidateContext dvc = new DOMValidateContext
+	    (new X509KeySelector(ks), sigElement);
+	File f = new File(
+	    System.getProperty("dir.test.vector.baltimore") + 
+            System.getProperty("file.separator") +
+	    "merlin-xmldsig-twenty-three" +
+            System.getProperty("file.separator"));
+	dvc.setBaseURI(f.toURI().toString());
+
+	// register Notaries ID
+//	Element notariesElem = 
+//	    (Element) doc.getElementsByTagName("Notaries").item(0);
+//	dvc.setIdAttributeNS(notariesElem, "", "Id");
+//	notariesElem.setIdAttributeNS("", "Id", true);
+	    
+	XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+	assertTrue(sig.equals(sig2));
+	assertTrue(sig2.validate(dvc));
+    }
+
+    private void dumpDocument(Document doc, Writer w) throws Exception {
+	TransformerFactory tf = TransformerFactory.newInstance();
+	Transformer trans = tf.newTransformer();
+//	trans.setOutputProperty(OutputKeys.INDENT, "yes");
+	trans.transform(new DOMSource(doc), new StreamResult(w));
+    }
+
+    private void test_create_signature_external
+	(SignatureMethod sm, KeyInfo ki, Key signingKey, KeySelector ks,
+	boolean b64) throws Exception {
+
+	// create reference
+	Reference ref;
+	if (b64) {
+	    ref = fac.newReference
+		("http://www.w3.org/Signature/2002/04/xml-stylesheet.b64", 
+		sha1, Collections.singletonList
+        	(fac.newTransform(Transform.BASE64, 
+		 (TransformParameterSpec) null)), null, null);
+	} else {
+	    ref = fac.newReference
+		("http://www.w3.org/Signature/2002/04/xml-stylesheet.b64",sha1);
+	}
+
+	// create SignedInfo
+	SignedInfo si = fac.newSignedInfo(withoutComments, sm, 
+	    Collections.singletonList(ref));
+
+	Document doc = db.newDocument();
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature(si, ki);
+
+	DOMSignContext dsc = new DOMSignContext(signingKey, doc);
+
+	sig.sign(dsc);
+
+	DOMValidateContext dvc = new DOMValidateContext
+	    (ks, doc.getDocumentElement());
+	String fs = System.getProperty("file.separator");
+	File f = new File(
+	    System.getProperty("basedir") + fs + "data" + fs + "ie" + fs +
+	    "baltimore" + fs + "merlin-examples" + fs +
+	    "merlin-xmldsig-twenty-three" + fs);
+	dvc.setBaseURI(f.toURI().toString()); 
+	    
+	XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+	assertTrue(sig.equals(sig2));
+	assertTrue(sig2.validate(dvc));
+    }
+
+    private void test_create_signature_enveloping
+	(SignatureMethod sm, KeyInfo ki, Key signingKey, KeySelector ks, 
+	boolean b64) throws Exception {
+
+	// create reference
+	Reference ref;
+	if (b64) {
+	    ref = fac.newReference("#object", sha1, Collections.singletonList
+        	(fac.newTransform(Transform.BASE64, 
+		 (TransformParameterSpec) null)), null, null);
+	} else {
+	    ref = fac.newReference("#object", sha1);
+	}
+
+	// create SignedInfo
+	SignedInfo si = fac.newSignedInfo(withoutComments, sm, 
+	    Collections.singletonList(ref));
+
+	Document doc = db.newDocument();
+	// create Objects
+	XMLObject obj = fac.newXMLObject(Collections.singletonList
+	    (new DOMStructure(doc.createTextNode("some text"))), 
+	    "object", null, null);
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature
+	    (si, ki, Collections.singletonList(obj), null, null);
+
+	DOMSignContext dsc = new DOMSignContext(signingKey, doc);
+
+	sig.sign(dsc);
+
+	DOMValidateContext dvc = new DOMValidateContext
+	    (ks, doc.getDocumentElement());
+	XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+	assertTrue(sig.equals(sig2));
+	assertTrue(sig2.validate(dvc));
+    }
+
+    public static void main(String[] args) throws Exception {
+	CreateBaltimore23Test test = new CreateBaltimore23Test("main");
+	test.setUp();
+//	test.test_create_signature();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropExcC14NTest.java b/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropExcC14NTest.java
new file mode 100644
index 0000000..4bfdf2c
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropExcC14NTest.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.security.*;
+import java.security.cert.Certificate;
+import java.util.*;
+import javax.xml.crypto.dom.DOMStructure;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+import javax.xml.parsers.*;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.*;
+import javax.xml.transform.stream.*;
+import org.w3c.dom.*;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * Test that recreates interop exc C14N test vectors
+ * but with different keys.
+ *
+ * @author Sean Mullan
+ */
+public class CreateInteropExcC14NTest extends TestCase {
+
+    private XMLSignatureFactory fac;
+    private KeyInfoFactory kifac;
+    private DocumentBuilder db;
+    private KeyStore ks;
+    private Key signingKey;
+    private PublicKey validatingKey;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public CreateInteropExcC14NTest(String name) {
+        super(name);
+    }
+
+    public void setUp() throws Exception {
+        fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+        kifac = fac.getKeyInfoFactory();
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        db = dbf.newDocumentBuilder();
+
+        // get key & self-signed certificate from keystore
+	String fs = System.getProperty("file.separator");
+        FileInputStream fis = new FileInputStream
+            (System.getProperty("basedir") + fs + "data" + fs + "test.jks");
+        ks = KeyStore.getInstance("JKS");
+        ks.load(fis, "changeit".toCharArray());
+        Certificate signingCert = ks.getCertificate("mullan");
+        signingKey = ks.getKey("mullan", "changeit".toCharArray());
+        validatingKey = signingCert.getPublicKey();
+    }
+
+    public void test_create_Y1() throws Exception {
+	List refs = new ArrayList(4);
+
+	// create reference 1
+	refs.add(fac.newReference
+	    ("#xpointer(id('to-be-signed'))", 
+	     fac.newDigestMethod(DigestMethod.SHA1, null),
+	     Collections.singletonList
+		(fac.newTransform(CanonicalizationMethod.EXCLUSIVE, 
+		 (TransformParameterSpec) null)),
+	     null, null));
+
+	// create reference 2
+	List prefixList = new ArrayList(2);
+	prefixList.add("bar");
+	prefixList.add("#default");
+	ExcC14NParameterSpec params = new ExcC14NParameterSpec(prefixList);
+	refs.add(fac.newReference
+	    ("#xpointer(id('to-be-signed'))", 
+	     fac.newDigestMethod(DigestMethod.SHA1, null),
+	     Collections.singletonList
+		(fac.newTransform(CanonicalizationMethod.EXCLUSIVE, params)),
+	     null, null));
+
+	// create reference 3
+	refs.add(fac.newReference
+	    ("#xpointer(id('to-be-signed'))", 
+	     fac.newDigestMethod(DigestMethod.SHA1, null),
+	     Collections.singletonList(fac.newTransform
+		(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, 
+		 (TransformParameterSpec) null)),
+	     null, null));
+
+	// create reference 4
+	prefixList = new ArrayList(2);
+	prefixList.add("bar");
+	prefixList.add("#default");
+	params = new ExcC14NParameterSpec(prefixList);
+	refs.add(fac.newReference
+	    ("#xpointer(id('to-be-signed'))", 
+	     fac.newDigestMethod(DigestMethod.SHA1, null),
+	     Collections.singletonList(fac.newTransform
+		(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, 
+		 (TransformParameterSpec) params)),
+	     null, null));
+
+        // create SignedInfo
+        SignedInfo si = fac.newSignedInfo(
+	    fac.newCanonicalizationMethod
+	        (CanonicalizationMethod.EXCLUSIVE, 
+		 (C14NMethodParameterSpec) null),
+	    fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs);
+
+	// create KeyInfo
+	List kits = new ArrayList(2);
+	kits.add(kifac.newKeyValue(validatingKey));
+	KeyInfo ki = kifac.newKeyInfo(kits);
+
+        // create Objects
+        Document doc = db.newDocument();
+	Element baz = doc.createElementNS("urn:bar", "bar:Baz");
+	Comment com = doc.createComment(" comment ");
+	baz.appendChild(com);
+	XMLObject obj = fac.newXMLObject(Collections.singletonList
+	    (new DOMStructure(baz)), "to-be-signed", null, null);
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature
+	    (si, ki, Collections.singletonList(obj), null, null);
+
+        Element foo = doc.createElementNS("urn:foo", "Foo");
+        foo.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "urn:foo");
+        foo.setAttributeNS
+	    ("http://www.w3.org/2000/xmlns/", "xmlns:bar", "urn:bar");
+	doc.appendChild(foo);
+
+        DOMSignContext dsc = new DOMSignContext(signingKey, foo);
+	dsc.putNamespacePrefix(XMLSignature.XMLNS, "dsig");
+
+        sig.sign(dsc);
+
+//	dumpDocument(doc, new FileWriter("/tmp/foo.xml"));
+
+        DOMValidateContext dvc = new DOMValidateContext
+            (new KeySelectors.KeyValueKeySelector(), foo.getLastChild());
+        XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+        assertTrue(sig.equals(sig2));
+
+        assertTrue(sig2.validate(dvc));
+    }
+
+    private void dumpDocument(Document doc, Writer w) throws Exception {
+        TransformerFactory tf = TransformerFactory.newInstance();
+        Transformer trans = tf.newTransformer();
+//        trans.setOutputProperty(OutputKeys.INDENT, "yes");
+        trans.transform(new DOMSource(doc), new StreamResult(w));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropXFilter2Test.java b/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropXFilter2Test.java
new file mode 100644
index 0000000..a5f2988
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropXFilter2Test.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.security.*;
+import java.security.cert.Certificate;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+import javax.xml.parsers.*;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.*;
+import javax.xml.transform.stream.*;
+import org.w3c.dom.*;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * Test that recreates merlin-xpath-filter2-three test vectors
+ * but with different keys and X.509 data.
+ *
+ * @author Sean Mullan
+ */
+public class CreateInteropXFilter2Test extends TestCase {
+
+    private XMLSignatureFactory fac;
+    private KeyInfoFactory kifac;
+    private DocumentBuilder db;
+    private KeyStore ks;
+    private Key signingKey;
+    private PublicKey validatingKey;
+    private Certificate signingCert;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public CreateInteropXFilter2Test(String name) {
+        super(name);
+    }
+
+    public void setUp() throws Exception {
+        fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+        kifac = fac.getKeyInfoFactory();
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        db = dbf.newDocumentBuilder();
+
+        // get key & self-signed certificate from keystore
+	String fs = System.getProperty("file.separator");
+        FileInputStream fis = new FileInputStream
+            (System.getProperty("basedir") + fs + "data" + fs + "test.jks");
+        ks = KeyStore.getInstance("JKS");
+        ks.load(fis, "changeit".toCharArray());
+        signingKey = ks.getKey("mullan", "changeit".toCharArray());
+        signingCert = ks.getCertificate("mullan");
+        validatingKey = signingCert.getPublicKey();
+    }
+
+    public void test_create_sign_spec() throws Exception {
+	List refs = new ArrayList(2);
+
+	// create reference 1
+	List types = new ArrayList(3);
+	types.add(new XPathType(" //ToBeSigned ", XPathType.Filter.INTERSECT));
+	types.add(new XPathType(" //NotToBeSigned ", XPathType.Filter.SUBTRACT));
+	types.add(new XPathType(" //ReallyToBeSigned ", XPathType.Filter.UNION));
+	XPathFilter2ParameterSpec xp1 = new XPathFilter2ParameterSpec(types);
+	refs.add(fac.newReference
+	    ("", fac.newDigestMethod(DigestMethod.SHA1, null),
+	     Collections.singletonList(fac.newTransform(Transform.XPATH2, xp1)),
+	     null, null));
+
+	// create reference 2
+	List trans2 = new ArrayList(2);
+	trans2.add(fac.newTransform(Transform.ENVELOPED, 
+	    (TransformParameterSpec) null));
+	XPathFilter2ParameterSpec xp2 = new XPathFilter2ParameterSpec
+	    (Collections.singletonList
+		(new XPathType(" / ", XPathType.Filter.UNION)));
+	trans2.add(fac.newTransform(Transform.XPATH2, xp2));
+	refs.add(fac.newReference("#signature-value", 
+	    fac.newDigestMethod(DigestMethod.SHA1, null), trans2, null, null));
+		
+        // create SignedInfo
+        SignedInfo si = fac.newSignedInfo(
+	    fac.newCanonicalizationMethod
+	        (CanonicalizationMethod.INCLUSIVE, 
+		 (C14NMethodParameterSpec) null),
+	    fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs);
+
+	// create KeyInfo
+	List kits = new ArrayList(2);
+	kits.add(kifac.newKeyValue(validatingKey));
+	List xds = new ArrayList(2);
+	xds.add("CN=Sean Mullan, DC=sun, DC=com");
+	xds.add(signingCert);
+	kits.add(kifac.newX509Data(xds));
+	KeyInfo ki = kifac.newKeyInfo(kits);
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature
+	    (si, ki, null, null, "signature-value");
+
+        Document doc = db.newDocument();
+        Element tbs1 = doc.createElementNS(null, "ToBeSigned");
+	Comment tbs1Com = doc.createComment(" comment ");
+	Element tbs1Data = doc.createElementNS(null, "Data");
+	Element tbs1ntbs = doc.createElementNS(null, "NotToBeSigned");
+	Element tbs1rtbs = doc.createElementNS(null, "ReallyToBeSigned");
+	Comment tbs1rtbsCom = doc.createComment(" comment ");
+	Element tbs1rtbsData = doc.createElementNS(null, "Data");
+	tbs1rtbs.appendChild(tbs1rtbsCom);
+	tbs1rtbs.appendChild(tbs1rtbsData);
+	tbs1ntbs.appendChild(tbs1rtbs);
+	tbs1.appendChild(tbs1Com);
+	tbs1.appendChild(tbs1Data);
+	tbs1.appendChild(tbs1ntbs);
+
+        Element tbs2 = doc.createElementNS(null, "ToBeSigned");
+	Element tbs2Data = doc.createElementNS(null, "Data");
+	Element tbs2ntbs = doc.createElementNS(null, "NotToBeSigned");
+	Element tbs2ntbsData = doc.createElementNS(null, "Data");
+	tbs2ntbs.appendChild(tbs2ntbsData);
+	tbs2.appendChild(tbs2Data);
+	tbs2.appendChild(tbs2ntbs);
+
+	Element document = doc.createElementNS(null, "Document");
+        document.appendChild(tbs1);
+        document.appendChild(tbs2);
+	doc.appendChild(document);
+
+        DOMSignContext dsc = new DOMSignContext(signingKey, document);
+
+        sig.sign(dsc);
+
+//	dumpDocument(doc, new FileWriter("/tmp/foo.xml"));
+
+        DOMValidateContext dvc = new DOMValidateContext
+            (new KeySelectors.KeyValueKeySelector(), document.getLastChild());
+        XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+        assertTrue(sig.equals(sig2));
+
+        assertTrue(sig2.validate(dvc));
+    }
+
+    private void dumpDocument(Document doc, Writer w) throws Exception {
+        TransformerFactory tf = TransformerFactory.newInstance();
+        Transformer trans = tf.newTransformer();
+//      trans.setOutputProperty(OutputKeys.INDENT, "yes");
+        trans.transform(new DOMSource(doc), new StreamResult(w));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/CreatePhaosXMLDSig3Test.java b/src_unitTests/javax/xml/crypto/test/dsig/CreatePhaosXMLDSig3Test.java
new file mode 100644
index 0000000..60bd584
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/CreatePhaosXMLDSig3Test.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.security.*;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+import javax.xml.parsers.*;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.*;
+import javax.xml.transform.stream.*;
+import org.w3c.dom.*;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * Test that recreates Phaos XMLDSig-3 test vectors
+ * but with different keys. For now we are just focusing on
+ * the exc-c14n vectors.
+ *
+ * @author Sean Mullan
+ */
+public class CreatePhaosXMLDSig3Test extends TestCase {
+
+    private XMLSignatureFactory fac;
+    private DocumentBuilder db;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public CreatePhaosXMLDSig3Test(String name) {
+        super(name);
+    }
+
+    public void setUp() throws Exception {
+        fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        db = dbf.newDocumentBuilder();
+    }
+
+    public void test_create_hmac_sha1_exclusive_c14n_comments_detached() throws Exception {
+        test_create_hmac_sha1_exclusive_c14n_comments_detached(false);
+    } 
+
+    public void test_create_hmac_sha1_40_exclusive_c14n_comments_detached() 
+	throws Exception {
+        test_create_hmac_sha1_exclusive_c14n_comments_detached(true);
+    } 
+
+    private void test_create_hmac_sha1_exclusive_c14n_comments_detached(boolean fortyBit) 
+	throws Exception {
+
+	// create reference
+	Reference ref = fac.newReference
+	    ("http://www.ietf.org/rfc/rfc3161.txt",
+	     fac.newDigestMethod(DigestMethod.SHA1, null));
+
+        // create SignedInfo
+	HMACParameterSpec spec = null;
+	if (fortyBit) {
+	    spec = new HMACParameterSpec(40);
+        }
+	    
+        SignedInfo si = fac.newSignedInfo(
+	    fac.newCanonicalizationMethod
+	        (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, 
+		 (C14NMethodParameterSpec) null),
+	    fac.newSignatureMethod(SignatureMethod.HMAC_SHA1, spec), 
+	    Collections.singletonList(ref));
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature(si, null);
+
+	Document doc = db.newDocument();
+        DOMSignContext dsc = new DOMSignContext
+            (new KeySelectors.SecretKeySelector
+	     ("test".getBytes("ASCII")), doc);
+	dsc.putNamespacePrefix(XMLSignature.XMLNS, "dsig");
+
+        sig.sign(dsc);
+
+//	dumpDocument(doc, new FileWriter("/tmp/foo.xml"));
+
+        DOMValidateContext dvc = new DOMValidateContext
+            (new KeySelectors.SecretKeySelector
+	     ("test".getBytes("ASCII")), doc);
+
+        XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+        assertTrue(sig.equals(sig2));
+
+        assertTrue(sig2.validate(dvc));
+    }
+
+    public void test_create_hmac_sha1_exclusive_c14n_enveloped() throws Exception {
+
+	// create reference
+	Reference ref = fac.newReference("",
+	    fac.newDigestMethod(DigestMethod.SHA1, null),
+	    Collections.singletonList(fac.newTransform(Transform.ENVELOPED, 
+	    (TransformParameterSpec) null)),
+	    null, null);
+
+        // create SignedInfo
+        SignedInfo si = fac.newSignedInfo(
+	    fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, 
+		(C14NMethodParameterSpec) null),
+	    fac.newSignatureMethod(SignatureMethod.HMAC_SHA1, null), 
+	    Collections.singletonList(ref));
+
+	// create XMLSignature
+	XMLSignature sig = fac.newXMLSignature(si, null);
+
+	Document doc = db.newDocument();
+	Element player = doc.createElementNS(null, "player");
+	player.setAttributeNS(null, "bats", "left");
+	player.setAttributeNS(null, "id", "10012");
+	player.setAttributeNS(null, "throws", "right");
+	Element name = doc.createElementNS(null, "name");
+	name.appendChild(doc.createTextNode("Alfonso Soriano"));
+	Element position = doc.createElementNS(null, "position");
+	position.appendChild(doc.createTextNode("2B"));
+	Element team = doc.createElementNS(null, "team");
+	team.appendChild(doc.createTextNode("New York Yankees"));
+	player.appendChild(doc.createComment(" Here's a comment "));
+	player.appendChild(name);
+	player.appendChild(position);
+	player.appendChild(team);
+	doc.appendChild(player);
+
+        DOMSignContext dsc = new DOMSignContext
+            (new KeySelectors.SecretKeySelector
+	     ("test".getBytes("ASCII")), player);
+	dsc.putNamespacePrefix(XMLSignature.XMLNS, "dsig");
+
+        sig.sign(dsc);
+
+//	dumpDocument(doc, new FileWriter("/tmp/foo.xml"));
+
+        DOMValidateContext dvc = new DOMValidateContext
+            (new KeySelectors.SecretKeySelector
+	     ("test".getBytes("ASCII")), player.getLastChild());
+
+        XMLSignature sig2 = fac.unmarshalXMLSignature(dvc);
+
+        assertTrue(sig.equals(sig2));
+
+        assertTrue(sig2.validate(dvc));
+    }
+
+    private void dumpDocument(Document doc, Writer w) throws Exception {
+        TransformerFactory tf = TransformerFactory.newInstance();
+        Transformer trans = tf.newTransformer();
+//        trans.setOutputProperty(OutputKeys.INDENT, "yes");
+        trans.transform(new DOMSource(doc), new StreamResult(w));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/DetachedTest.java b/src_unitTests/javax/xml/crypto/test/dsig/DetachedTest.java
new file mode 100644
index 0000000..92550b1
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/DetachedTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import java.security.*;
+import java.util.*;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import org.w3c.dom.Document;
+
+import junit.framework.*;
+
+/**
+ * This is a simple example of generating and validating a Detached XML 
+ * Signature using the JSR 105 API. The resulting signature will look 
+ * like (key and signature values will be different):
+ *
+ * <pre><code>
+ * <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ *   <SignedInfo>
+ *     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ *     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
+ *     <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ *       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ *       <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ *     </Reference>
+ *   </SignedInfo>
+ *   <SignatureValue>
+ *     DpEylhQoiUKBoKWmYfajXO7LZxiDYgVtUtCNyTgwZgoChzorA2nhkQ==
+ *   </SignatureValue>
+ *   <KeyInfo>
+ *     <KeyValue>
+ *       <DSAKeyValue>
+ *	   <P>
+ *           rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBL
+ *           FET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8q
+ *           UobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8=
+ *         </P>
+ *         <Q>
+ *           kEjAFpCe4lcUOdwphpzf+tBaUds=
+ *         </Q>
+ *         <G>
+ *           oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2
+ *           SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4
+ *           BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw=
+ *         </G>
+ *         <Y>
+ *           pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOv
+ *           AIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOg
+ *           jFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
+ *         </Y>
+ * 	 </KeyValue>
+ *     </DSAKeyValue>
+ *   </KeyInfo>
+ * </Signature>
+ *
+ * @author Sean Mullan
+ */
+public class DetachedTest extends TestCase {
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public DetachedTest(String name) {
+        super(name);
+    }
+    
+    public void test() {
+        try {
+            //
+    	    // PART 1 : Creating the detached signature
+    	    //
+    
+    	    // Create a factory that will be used to generate the signature 
+            // structures
+    	    XMLSignatureFactory fac = XMLSignatureFactory.getInstance
+                ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    
+    	    // Create a Reference to an external URI that will be digested
+    	    Reference ref = fac.newReference
+                ("http://www.w3.org/TR/xml-stylesheet", 
+		fac.newDigestMethod(DigestMethod.SHA1, null));
+    
+    	    // Create a DSA KeyPair
+    	    KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
+    	    kpg.initialize(1024, 
+		new SecureRandom("not so random bytes".getBytes()));
+    	    KeyPair kp = kpg.generateKeyPair();
+    
+    	    // Create a KeyValue containing the generated DSA PublicKey
+    	    KeyInfoFactory kif = fac.getKeyInfoFactory();
+    	    KeyValue kv = kif.newKeyValue(kp.getPublic());
+    
+    	    // Create a KeyInfo and add the KeyValue to it
+    	    KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv));
+
+	    // Create SignedInfo
+	    SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(
+		CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+		(C14NMethodParameterSpec) null), 
+		fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), 
+		Collections.singletonList(ref));
+
+	    // Create XMLSignature
+	    XMLSignature signature = fac.newXMLSignature(si,ki,null,null,null);
+    
+    	    // Create an XMLSignContext and set the 
+            // DSA PrivateKey for signing
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setNamespaceAware(true);
+            dbf.setValidating(false);
+            Document doc = dbf.newDocumentBuilder().newDocument();
+    	    DOMSignContext signContext = new DOMSignContext(kp.getPrivate(), doc);
+    	    signContext.putNamespacePrefix(XMLSignature.XMLNS, "ds");
+
+    	    // Generate (and sign) the XMLSignature
+    	    signature.sign(signContext);
+    
+    	    //
+    	    // PART 2 : Validating the detached signature
+    	    //
+    
+    	    // Create a XMLValidateContext & set the DSAPublicKey for validating
+	    XMLValidateContext vc = new DOMValidateContext(kp.getPublic(),
+		doc.getDocumentElement());
+    
+    	    // Validate the Signature (generated above)
+    	    boolean coreValidity = signature.validate(vc); 
+    
+    	    // Check core validation status
+    	    if (coreValidity == false) {
+    	        // check the validation status of each Reference
+    	        Iterator i = signature.getSignedInfo().getReferences().iterator();
+    	        for (int j=0; i.hasNext(); j++) {
+		    Reference reference = (Reference) i.next();
+    		    boolean refValid = reference.validate(vc);
+    	        }
+    	        fail("Signature failed core validation");
+    	    }
+    
+    	    // You can also validate an XML Signature which is in XML format.
+    	    // Unmarshal and validate an XMLSignature from a DOMValidateContext
+    	    signature = fac.unmarshalXMLSignature(vc);
+    	    coreValidity = signature.validate(vc);
+    	    assertTrue("Core validity of unmarshalled XMLSignature is false", 
+	        coreValidity);
+        } catch(Exception ex) {
+            fail("Exception: " + ex);
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        DetachedTest dt = new DetachedTest("");
+        dt.test();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/DigestMethodTest.java b/src_unitTests/javax/xml/crypto/test/dsig/DigestMethodTest.java
new file mode 100644
index 0000000..6d26356
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/DigestMethodTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import javax.xml.crypto.dsig.*;
+import java.security.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.DigestMethod
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class DigestMethodTest extends TestCase {
+
+    private XMLSignatureFactory factory;
+
+    private static final String MD_ALGOS[] = {
+	DigestMethod.SHA1
+    };
+
+    public DigestMethodTest() {
+	super("DigestMethodTest");
+    }
+
+    public DigestMethodTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testisFeatureSupported() throws Exception {
+	DigestMethod dm;
+	for (int i = 0; i < MD_ALGOS.length; i++) {
+	    String algo = MD_ALGOS[i];
+	    dm = factory.newDigestMethod(algo, null);	
+	    try {
+		dm.isFeatureSupported(null); 
+		fail("Should raise a NPE for null feature"); 
+	    } catch (NullPointerException npe) {}
+	    assertTrue(!dm.isFeatureSupported("not supported"));
+	}
+    }
+
+    public void testConstructor() throws Exception {
+	// test DSigStructureFactory.newDigestMethod
+	// (String algorithm, AlgorithmParameterSpec params)
+	// for generating DigestMethod objects
+	DigestMethod dm;
+	for (int i = 0; i < MD_ALGOS.length; i++) {
+	    String algo = MD_ALGOS[i];
+	    dm = factory.newDigestMethod(algo, null);
+	    assertEquals(dm.getAlgorithm(), algo);
+
+	    assertNull(dm.getParameterSpec());
+	    try {
+		dm = factory.newDigestMethod(algo, 
+				  new TestUtils.MyOwnDigestMethodParameterSpec());
+		fail("Should raise an IAPE for invalid parameters"); 
+	    } catch (InvalidAlgorithmParameterException iape) {
+	    } catch (Exception ex) {
+		fail("Should raise an IAPE instead of " + ex);
+	    }
+	}
+
+	try {
+	    dm = factory.newDigestMethod("non-existent", 
+					 null); 
+	    fail("Should raise an NSAE for non-existent algos"); 
+	} catch (NoSuchAlgorithmException nsae) {}
+
+	try {
+	    dm = factory.newDigestMethod(null, null); 
+	    fail("Should raise a NPE for null algo"); 
+	} catch (NullPointerException npe) {}
+    }    
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/IaikCoreFeaturesTest.java b/src_unitTests/javax/xml/crypto/test/dsig/IaikCoreFeaturesTest.java
new file mode 100644
index 0000000..0070ff8
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/IaikCoreFeaturesTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.security.Security;
+import javax.xml.crypto.*;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "coreFeatures" 
+ * testcases from IAIK
+ *
+ * @author Sean Mullan
+ */
+public class IaikCoreFeaturesTest extends TestCase {
+
+    private SignatureValidator validator;
+    private String base;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public IaikCoreFeaturesTest(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	base = System.getProperty("basedir") + fs + "data" + fs +
+	    "at" + fs + "iaik" + fs + "ixsil";
+	validator = new SignatureValidator(new File
+	    (base, "coreFeatures/signatures"));
+    }
+    public void test_anonymousReferenceSignature() throws Exception {
+        String file = "anonymousReferenceSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector(), 
+	     new NullURIDereferencer(base));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_manifestSignature() throws Exception {
+        String file = "manifestSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signatureTypesSignature() throws Exception {
+        String file = "signatureTypesSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public static void main(String[] args) throws Exception {
+        IaikCoreFeaturesTest it = new IaikCoreFeaturesTest("");
+	it.test_anonymousReferenceSignature();
+	it.test_manifestSignature();
+	it.test_signatureTypesSignature();
+    }
+
+    private static class NullURIDereferencer implements URIDereferencer {
+
+	private OctetStreamData osd;
+
+	NullURIDereferencer(String base) throws Exception {
+	    File content = new File
+		(base, "coreFeatures/samples/anonymousReferenceContent.xml");
+	    osd = new OctetStreamData(new FileInputStream(content));
+	}
+
+        public Data dereference(URIReference uriReference, 
+	    XMLCryptoContext context) throws URIReferenceException {
+
+	    if (uriReference.getURI() != null) {
+		throw new URIReferenceException("must be a null URI");
+	    }
+
+	    return osd;
+	}
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/IaikSignatureAlgosTest.java b/src_unitTests/javax/xml/crypto/test/dsig/IaikSignatureAlgosTest.java
new file mode 100644
index 0000000..c616c49
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/IaikSignatureAlgosTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "signatureAlgorithms" 
+ * testcases from IAIK
+ *
+ * @author Sean Mullan
+ */
+public class IaikSignatureAlgosTest extends TestCase {
+
+    private SignatureValidator validator;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public IaikSignatureAlgosTest(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	String base = System.getProperty("basedir") + fs + "data" + fs
+	    + "at" + fs + "iaik" + fs + "ixsil";
+	validator = new SignatureValidator(new File
+	    (base, "signatureAlgorithms/signatures"));
+    }
+    public void test_dsaSignature() throws Exception {
+        String file = "dSASignature.xml";
+
+	boolean coreValidity = validator.validate(file, new 
+	    KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_rsaSignature() throws Exception {
+        String file = "rSASignature.xml";
+
+	boolean coreValidity = validator.validate(file, new 
+	    KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_hmacShortSignature() throws Exception {
+        String file = "hMACShortSignature.xml";
+
+	boolean coreValidity = validator.validate(file, new 
+	    KeySelectors.SecretKeySelector("secret".getBytes("ASCII")));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_hmacSignature() throws Exception {
+        String file = "hMACSignature.xml";
+
+	boolean coreValidity = validator.validate(file, new
+	    KeySelectors.SecretKeySelector("secret".getBytes("ASCII")));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public static void main(String[] args) throws Exception {
+        IaikSignatureAlgosTest it = new IaikSignatureAlgosTest("");
+	it.test_dsaSignature();
+	it.test_rsaSignature();
+	it.test_hmacShortSignature();
+	it.test_hmacSignature();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/IaikTransformsTest.java b/src_unitTests/javax/xml/crypto/test/dsig/IaikTransformsTest.java
new file mode 100644
index 0000000..215e099
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/IaikTransformsTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "transforms" 
+ * testcases from IAIK
+ *
+ * @author Sean Mullan
+ */
+public class IaikTransformsTest extends TestCase {
+
+    private SignatureValidator validator;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public IaikTransformsTest(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	String base = System.getProperty("basedir") + fs + "data" + fs +
+	    "at" + fs + "iaik" + fs + "ixsil";
+	validator = new SignatureValidator(new File
+	    (base, "transforms/signatures"));
+    }
+    public void test_base64DecodeSignature() throws Exception {
+        String file = "base64DecodeSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+
+    }
+    public void test_envelopedSignatureSignature() throws Exception {
+        String file = "envelopedSignatureSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_c14nSignature() throws Exception {
+        String file = "c14nSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_xPathSignature() throws Exception {
+        String file = "xPathSignature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public static void main(String[] args) throws Exception {
+        IaikTransformsTest it = new IaikTransformsTest("");
+	it.test_xPathSignature();
+	it.test_c14nSignature();
+	it.test_base64DecodeSignature();
+	it.test_envelopedSignatureSignature();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/InteropC14nTest.java b/src_unitTests/javax/xml/crypto/test/dsig/InteropC14nTest.java
new file mode 100644
index 0000000..e5c1148
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/InteropC14nTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "c14n" testcases
+ * under data/vectors/interop directory
+ *
+ * @author Sean Mullan
+ */
+public class InteropC14nTest extends TestCase {
+
+    private SignatureValidator validator = null;
+    private String base;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public InteropC14nTest(String name) {
+        super(name);
+	String fs = System.getProperty("file.separator");
+	base = System.getProperty("basedir") + fs + "data" + fs + "interop";
+    }
+    public void test_y1_exc_signature() throws Exception {
+	validator = new SignatureValidator(new File(base, "c14n/Y1"));
+        String file = "exc-signature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+
+    }
+    /* COMMENTED OUT since this test requires MD5 support
+    public void test_y2_signature_joseph_exc() throws Exception {
+	validator = new SignatureValidator(new File(base, "c14n/Y2"));
+        String file = "signature-joseph-exc.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    */
+    public void test_y3_signature() throws Exception {
+	validator = new SignatureValidator(new File(base, "c14n/Y3"));
+        String file = "signature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation#1", coreValidity);
+
+	coreValidity = validator.validate
+	    (file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation#2", coreValidity);
+    }
+    public void test_y4_signature() throws Exception {
+	validator = new SignatureValidator(new File(base, "c14n/Y4"));
+        String file = "signature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation#1", coreValidity);
+
+	coreValidity = validator.validate
+	    (file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation#2", coreValidity);
+    }
+    public void test_y5_signature() throws Exception {
+	validator = new SignatureValidator(new File(base, "c14n/Y5"));
+        String file = "signature.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation#1", coreValidity);
+
+	coreValidity = validator.validate
+	    (file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation#2", coreValidity);
+    }
+    public void test_y5_signatureCommented() throws Exception {
+	validator = new SignatureValidator(new File(base, "c14n/Y5"));
+        String file = "signatureCommented.xml";
+
+	boolean coreValidity = validator.validate
+	    (file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation#1", coreValidity);
+
+	coreValidity = validator.validate
+	    (file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation#2", coreValidity);
+    }
+    public static void main(String[] args) throws Exception {
+        InteropC14nTest it = new InteropC14nTest("");
+	it.test_y1_exc_signature();
+	//it.test_y2_signature_joseph_exc();
+	it.test_y3_signature();
+	it.test_y4_signature();
+	it.test_y5_signature();
+	it.test_y5_signatureCommented();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/ManifestTest.java b/src_unitTests/javax/xml/crypto/test/dsig/ManifestTest.java
new file mode 100644
index 0000000..0e068d8
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/ManifestTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.Manifest
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class ManifestTest extends TestCase {
+    private XMLSignatureFactory fac;
+
+    private static Reference VALID_REF = new 
+	TestUtils.MyOwnDOMReference("ref#1", true);
+    private static Reference INVALID_REF = new 
+	TestUtils.MyOwnDOMReference("ref#2", false);
+
+    public ManifestTest() {
+	super("ManifestTest");
+    }
+
+    public ManifestTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+        fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() {}
+
+    public void testConstructor() throws Exception {
+	Manifest man = null;
+	String id = "manifest_id";
+	List refs = new Vector();
+	// test XMLSignatureFactory.newManifest(List references)
+	// and  XMLSignatureFactory.newManifest(List references, 
+	//                                       String id)
+	// for generating Manifest objects
+	refs.add(VALID_REF);
+	refs.add(INVALID_REF);
+	for (int i = 0; i < 3; i++) {
+	    String expectedId = null;
+	    switch (i) {
+	    case 0:
+		man = fac.newManifest(refs);
+		break;
+	    case 1:
+		man = fac.newManifest(refs, null);
+		break;
+	    case 2:
+		man = fac.newManifest(refs, id);
+		expectedId = id;
+		break;
+	    }		
+	    assertNotNull(man);
+	    assertTrue(Arrays.equals(man.getReferences().toArray(),
+				     refs.toArray()));
+	    assertEquals(man.getId(), expectedId);
+	}
+	try {
+	    man = fac.newManifest(null);
+	    fail("Should throw a NPE for null references");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + 
+		 " for null references");
+	}
+	try {
+	    man = fac.newManifest(null, id);
+	    fail("Should throw a NPE for null references");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + 
+		 " for null references");
+	}
+	// Clear the references list content
+	refs.clear();
+	try {
+	    man = fac.newManifest(refs);
+	    fail("Should throw a IAE for empty references");
+	} catch (IllegalArgumentException iae) {
+	} catch (Exception ex) {
+	    fail("Should throw a IAE instead of " + ex + 
+		 " for empty references");
+	}
+	try {
+	    man = fac.newManifest(refs, id);
+	    fail("Should throw a IAE for empty references");
+	} catch (IllegalArgumentException iae) {
+	} catch (Exception ex) {
+	    fail("Should throw a IAE instead of " + ex + 
+		 " for empty references");
+	}
+	refs.add("references");
+	try {
+	    man = fac.newManifest(refs);
+	    fail("Should throw a CCE for references containing " + 
+		 "non-Reference objects");
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should throw a CCE instead of " + ex + 
+		 " for references containing non-Reference objects");
+	}
+	try {
+	    man = fac.newManifest(refs, id);
+	    fail("Should throw a CCE for references containing " + 
+		 "non-Reference objects");
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should throw a CCE instead of " + ex + 
+		 " for references containing non-Reference objects");
+	}	
+    }
+    
+    public void testisFeatureSupported() throws Exception {
+	List refs = new Vector();
+	refs.add(VALID_REF);
+
+	Manifest man = fac.newManifest(refs);
+	
+	try {
+	    man.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+	    
+	assertTrue(!man.isFeatureSupported("not supported"));
+    }
+
+    public void testgetReferences() throws Exception {
+	List refs = new Vector();
+	refs.add(VALID_REF);	
+	Manifest man = fac.newManifest(refs);
+	List stored = man.getReferences();
+	try {
+	    stored.add(INVALID_REF);
+	    fail("Should not be able to modify the references directly");
+	} catch (UnsupportedOperationException ex) {
+	}
+	try {
+	    ListIterator li = stored.listIterator();
+	    li.add(INVALID_REF);
+	    fail("Should not be able to modify the references indirectly");
+	} catch (UnsupportedOperationException ex) {
+	}
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/PhaosXMLDSig3Test.java b/src_unitTests/javax/xml/crypto/test/dsig/PhaosXMLDSig3Test.java
new file mode 100644
index 0000000..4483851
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/PhaosXMLDSig3Test.java
@@ -0,0 +1,279 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.security.Security;
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.dsig.XMLSignatureException;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.KeySelectors;
+
+/**
+ * This is a testcase to validate all "phaos-xmldsig-three" 
+ * testcases from Phaos
+ *
+ * @author Sean Mullan
+ */
+public class PhaosXMLDSig3Test extends TestCase {
+
+    private SignatureValidator validator;
+    private File base;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public PhaosXMLDSig3Test(String name) {
+        super(name);
+
+	String fs = System.getProperty("file.separator");
+	base = new File(System.getProperty("basedir") + fs + "data" + fs +
+	    "com" + fs + "phaos", "phaos-xmldsig-three");
+	validator = new SignatureValidator(base);
+    }
+//    public void test_signature_big() throws Exception {
+//        String file = "signature-big.xml";
+//
+//        boolean coreValidity = validator.validate(file, 
+//		new KeySelectors.CollectionKeySelector(base));
+//        assertTrue("Signature failed core validation", coreValidity);
+//    }
+    public void test_signature_dsa_detached() throws Exception {
+	String file = "signature-dsa-detached.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_dsa_enveloped() throws Exception {
+	String file = "signature-dsa-enveloped.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }    
+    public void test_signature_dsa_enveloping() throws Exception {
+	String file = "signature-dsa-enveloping.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_dsa_manifest() throws Exception {
+	String file = "signature-dsa-manifest.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_hmac_sha1_40_c14n_comments_detached() 
+	throws Exception {
+        String file = "signature-hmac-sha1-40-c14n-comments-detached.xml";
+        
+	KeySelector ks = new KeySelectors.SecretKeySelector
+	    ("test".getBytes("ASCII") );
+	boolean coreValidity = validator.validate(file, ks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_hmac_sha1_40_exclusive_c14n_comments_detached() 
+	throws Exception {
+        String file = "signature-hmac-sha1-40-exclusive-c14n-comments-detached.xml";
+        
+	KeySelector ks = new KeySelectors.SecretKeySelector
+	    ("test".getBytes("ASCII") );
+	boolean coreValidity = validator.validate(file, ks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_hmac_sha1_exclusive_c14n_comments_detached() 
+	throws Exception {
+        String file = "signature-hmac-sha1-exclusive-c14n-comments-detached.xml";
+        
+	KeySelector ks = new KeySelectors.SecretKeySelector
+	    ("test".getBytes("ASCII") );
+	boolean coreValidity = validator.validate(file, ks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_hmac_sha1_exclusive_c14n_enveloped() 
+	throws Exception {
+        String file = "signature-hmac-sha1-exclusive-c14n-enveloped.xml";
+        
+	KeySelector ks = new KeySelectors.SecretKeySelector
+	    ("test".getBytes("ASCII") );
+	boolean coreValidity = validator.validate(file, ks);
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_rsa_detached_b64_transform() throws Exception {
+	String file = "signature-rsa-detached-b64-transform.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_rsa_detached_xpath_transform() throws Exception {
+	String file = "signature-rsa-detached-xpath-transform.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }    
+    public void test_signature_rsa_detached_xslt_transform_bad_rm() throws Exception {
+	String file = "signature-rsa-detached-xslt-transform-bad-retrieval-method.xml";
+
+	try {
+	    boolean coreValidity = 
+	        validator.validate(file, 
+			       new KeySelectors.CollectionKeySelector(base));
+	    fail("Should throw XMLSignatureException for using DSA key with " +
+		 "RSA algorithm");
+	} catch (XMLSignatureException xse) {}
+    }
+    public void test_signature_rsa_detached_xslt_transform_rm() throws Exception {
+	String file = "signature-rsa-detached-xslt-transform-retrieval-method.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, 
+			       new KeySelectors.CollectionKeySelector(base));
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_rsa_detached_xslt_transform() throws Exception {
+	String file = "signature-rsa-detached-xslt-transform.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.KeyValueKeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_rsa_detached() throws Exception {
+	String file = "signature-rsa-detached.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_rsa_enveloped_bad_digest_val() throws Exception {
+	String file = "signature-rsa-enveloped-bad-digest-val.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertFalse("Signature should fail core validation", coreValidity);
+    }
+    public void test_signature_rsa_enveloped() throws Exception {
+	String file = "signature-rsa-enveloped.xml";
+
+	boolean coreValidity =
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+    }
+    public void test_signature_rsa_enveloping() throws Exception {
+	String file = "signature-rsa-enveloping.xml";
+
+	boolean coreValidity = 
+	    validator.validate(file, new KeySelectors.RawX509KeySelector());
+	assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest_x509_data_cert_chain() throws Exception {
+        String file = "signature-rsa-manifest-x509-data-cert-chain.xml";
+
+        boolean coreValidity =
+            validator.validate(file, new KeySelectors.RawX509KeySelector());
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest_x509_data_cert() throws Exception {
+        String file = "signature-rsa-manifest-x509-data-cert.xml";
+
+        boolean coreValidity =
+            validator.validate(file, new KeySelectors.RawX509KeySelector());
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest_x509_data_issuer_serial() throws Exception {
+        String file = "signature-rsa-manifest-x509-data-issuer-serial.xml";
+
+        boolean coreValidity = validator.validate(file, 
+		new KeySelectors.CollectionKeySelector(base));
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest_x509_data_ski() throws Exception {
+        String file = "signature-rsa-manifest-x509-data-ski.xml";
+
+        boolean coreValidity = validator.validate(file, 
+		new KeySelectors.CollectionKeySelector(base));
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest_x509_data_subject_name() throws Exception {
+        String file = "signature-rsa-manifest-x509-data-subject-name.xml";
+
+        boolean coreValidity = validator.validate(file, 
+		new KeySelectors.CollectionKeySelector(base));
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest_x509_data() throws Exception {
+        String file = "signature-rsa-manifest-x509-data.xml";
+
+        boolean coreValidity =
+            validator.validate(file, new KeySelectors.RawX509KeySelector());
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_manifest() throws Exception {
+        String file = "signature-rsa-manifest.xml";
+
+        boolean coreValidity =
+            validator.validate(file, new KeySelectors.KeyValueKeySelector());
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public void test_signature_rsa_xpath_transform_enveloped() throws Exception {
+        String file = "signature-rsa-xpath-transform-enveloped.xml";
+
+        boolean coreValidity =
+            validator.validate(file, new KeySelectors.RawX509KeySelector());
+        assertTrue("Signature failed core validation", coreValidity);
+   }
+   public static void main(String[] args) throws Exception {
+        PhaosXMLDSig3Test pt = new PhaosXMLDSig3Test("");
+//	pt.test_signature_big();
+        pt.test_signature_dsa_detached();
+        pt.test_signature_dsa_enveloped();
+	pt.test_signature_dsa_enveloping();
+	pt.test_signature_dsa_manifest();
+	pt.test_signature_hmac_sha1_40_c14n_comments_detached();
+	pt.test_signature_hmac_sha1_40_exclusive_c14n_comments_detached();
+	pt.test_signature_hmac_sha1_exclusive_c14n_comments_detached(); 
+	pt.test_signature_hmac_sha1_exclusive_c14n_enveloped();
+	pt.test_signature_rsa_detached_b64_transform();
+	pt.test_signature_rsa_detached_xpath_transform();
+	pt.test_signature_rsa_detached_xslt_transform_bad_rm();
+	pt.test_signature_rsa_detached_xslt_transform_rm();
+	pt.test_signature_rsa_detached_xslt_transform();
+	pt.test_signature_rsa_detached();
+	pt.test_signature_rsa_enveloped_bad_digest_val();
+	pt.test_signature_rsa_enveloped();
+	pt.test_signature_rsa_enveloping();
+	pt.test_signature_rsa_manifest_x509_data_cert_chain();
+	pt.test_signature_rsa_manifest_x509_data_cert();
+	pt.test_signature_rsa_manifest_x509_data_issuer_serial();
+	pt.test_signature_rsa_manifest_x509_data_ski();
+	pt.test_signature_rsa_manifest_x509_data_subject_name();
+	pt.test_signature_rsa_manifest_x509_data();
+	pt.test_signature_rsa_manifest();
+	pt.test_signature_rsa_xpath_transform_enveloped();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/ReferenceTest.java b/src_unitTests/javax/xml/crypto/test/dsig/ReferenceTest.java
new file mode 100644
index 0000000..66cc491
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/ReferenceTest.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.security.Security;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import org.w3c.dom.Document;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.Reference
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class ReferenceTest extends TestCase {
+    private XMLSignatureFactory fac;
+    private KeyInfoFactory kifac;
+    private DigestMethod dmSHA1;
+    private String uri = "http://www.ietf.org/rfc/rfc3275.txt";
+
+    private static final String[] CRYPTO_ALGS = { "RSA", "DSA" };
+    private static final String[] SIG_ALGS = { 
+	SignatureMethod.RSA_SHA1, 
+	SignatureMethod.DSA_SHA1 
+    };
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public ReferenceTest() {
+	super("ReferenceTest");
+    }
+
+    public ReferenceTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+        fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	kifac = KeyInfoFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	dmSHA1 = fac.newDigestMethod(DigestMethod.SHA1, null); 
+    }
+
+    public void tearDown() {}
+
+    public void testConstructor() throws Exception {
+	Reference ref;
+	// test XMLSignatureFactory.newReference(String uri, 
+	//     DigestMethod dm) for generating Reference objects
+	ref = fac.newReference(null, dmSHA1);
+	assertNotNull(ref);
+	ref = fac.newReference(uri, dmSHA1);
+	assertNotNull(ref);
+	try {
+	    ref = fac.newReference("illegal!@#$%" + uri, dmSHA1);
+	    fail("Should throw a IAE for non-RFC2396-compliant uri");
+	} catch (IllegalArgumentException iae) {
+	} catch (Exception ex) {
+	    fail("Should throw a IAE instead of " + ex + 
+		 " for non-RFC2396-compliant uri");
+	}
+	try {
+	    ref = fac.newReference(uri, null);
+	    fail("Should throw a NPE for null dm");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + " for null dm");
+	}
+
+	// test XMLSignatureFactory.newReference(String uri, 
+	//    DigestMethod dm, List transforms, String type, String id)
+	// for generating Reference objects
+	try {   
+	    ref = fac.newReference(null, dmSHA1, null, null, null);
+	    assertEquals(ref.getDigestMethod(), dmSHA1);
+	} catch(Exception ex) {
+	    fail("Unexpected Exception: " + ex);
+	}
+
+	try {
+	    ref = fac.newReference(null, null, null, null, null);
+	    fail("Should throw a NPE for null dm");
+	} catch (NullPointerException npe) {
+	} catch(Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + " for null dm");
+	}
+	String id  = "id";
+	String type = "type";
+	try {
+	    ref = fac.newReference(uri, dmSHA1, null, type, id);
+	    assertNotNull(ref.getDigestMethod());
+	    assertEquals(uri, ref.getURI());
+	    assertEquals(id, ref.getId());
+	    assertEquals(type, ref.getType());        
+        assertEquals(ref.getTransforms(), Collections.EMPTY_LIST);
+	    
+	} catch(Exception ex) {
+	    fail("Unexpected Exception: " + ex);
+	}
+	List transforms = new Vector();
+	try {
+	    // try empty transforms list
+	    ref = fac.newReference(uri, dmSHA1, transforms, 
+				   type, id);
+	    assertTrue(Arrays.equals(transforms.toArray(), 
+				     ref.getTransforms().toArray()));
+	} catch(Exception ex) {
+	    fail("Unexpected Exception: " + ex);
+	}
+	transforms.add(new Object());
+	try {
+	    // try a transforms list with an invalid object
+	    ref = fac.newReference(uri, dmSHA1, transforms, 
+				   type, id);
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should throw a ClassCastException instead of " + ex);
+	}
+	// Test with various composition of Transform list 
+	// 1. String only 
+	transforms.clear();
+	transforms.add(Transform.BASE64);
+	try {
+	    // try a transforms list with a String object
+	    ref = fac.newReference(uri, dmSHA1, transforms, 
+	    			   type, id);
+	    fail("Should throw a CCE for illegal transforms");
+	} catch (ClassCastException cce) {
+	} catch(Exception ex) {
+	    fail("Should throw a CCE instead of " + ex + 
+		 " for illegal transforms");
+	}
+	// 2. Transform only
+	transforms.clear();
+	Transform c14nWithComments = fac.newTransform
+	    (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+	     (TransformParameterSpec) null);
+	transforms.add(c14nWithComments);
+	try {
+	    // try a transforms list with a Transform object
+	    ref = fac.newReference(uri, dmSHA1, transforms, type, id);
+	    assertTrue(Arrays.equals(transforms.toArray(), 
+				     ref.getTransforms().toArray()));
+	} catch (Exception ex) {
+	    fail("Unexpected Exception: " + ex);
+	}
+    }
+    public void testisFeatureSupported() throws Exception {
+	Reference ref = fac.newReference(null, dmSHA1, null, null, null);
+	try {
+	    ref.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+	    
+	assertTrue(!ref.isFeatureSupported("not supported"));
+    }
+
+    private void donottestvalidate() throws Exception {
+	Reference ref = null;
+	String type = "http://www.w3.org/2000/09/xmldsig#Object";
+	byte[] in = new byte[200];
+	Random rand = new Random();
+	
+	// Test XMLSignContext
+	XMLSignContext signContext;
+	XMLValidateContext validateContext;
+	for (int i = 0; i < CRYPTO_ALGS.length; i++) {
+	    rand.nextBytes(in);
+	    TestUtils.SimpleURIDereferencer dereferrer = 
+	        new TestUtils.SimpleURIDereferencer(in);
+	    Document doc = TestUtils.newDocument();
+	    signContext = new 
+		DOMSignContext(TestUtils.getPrivateKey(CRYPTO_ALGS[i]), doc);
+	    signContext.setURIDereferencer(dereferrer);
+	    signContext.setProperty("javax.xml.dsig.cacheReference", 
+				    Boolean.TRUE);
+	    ref = fac.newReference(null, dmSHA1, null, type, null);
+	    XMLSignature sig = fac.newXMLSignature(fac.newSignedInfo
+		(fac.newCanonicalizationMethod
+		 (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+		  (C14NMethodParameterSpec) null),
+	    	fac.newSignatureMethod(SIG_ALGS[i], null),
+		Collections.singletonList(ref)),
+		kifac.newKeyInfo(Collections.singletonList
+		(kifac.newKeyValue(TestUtils.getPublicKey(CRYPTO_ALGS[i])))));
+	    try {
+		sig.sign(signContext);
+	        validateContext = new DOMValidateContext
+		    (TestUtils.getPublicKey(CRYPTO_ALGS[i]), 
+		    doc.getDocumentElement());
+	        validateContext.setURIDereferencer(dereferrer);
+
+	        validateContext.setProperty("javax.xml.dsig.cacheReference", 
+					    Boolean.TRUE);
+		boolean result = sig.validate(validateContext);
+		assertTrue(result);
+     
+		Iterator iter = sig.getSignedInfo().getReferences().iterator();
+		for (int j=0; iter.hasNext(); j++) {
+		    Reference validated_ref = (Reference) iter.next();
+		    byte[] dv =  validated_ref.getDigestValue();
+		    byte[] digestInput = readBytesFromStream
+			(validated_ref.getDigestInputStream());
+		    boolean match = Arrays.equals(digestInput, in);
+		    assertTrue(match);
+		    boolean valid = validated_ref.validate(validateContext);
+		    assertTrue(valid);
+		}
+	    } catch (XMLSignatureException xse) {
+		fail("Unexpected Exception: " + xse); 
+	    }
+	}
+    }
+
+    private static byte[] readBytesFromStream(InputStream is)
+	throws IOException {
+	ByteArrayOutputStream baos = new ByteArrayOutputStream();
+	byte[] buf = new byte[1024];
+	while(true) {
+            int read = is.read(buf);
+            if (read == -1) { // EOF
+		break;
+            }
+            baos.write(buf, 0, read);
+            if(read < 1024) {
+		break;
+            }
+	}
+        return baos.toByteArray();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/SignatureMethodTest.java b/src_unitTests/javax/xml/crypto/test/dsig/SignatureMethodTest.java
new file mode 100644
index 0000000..c53950d
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/SignatureMethodTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import javax.xml.crypto.dsig.*;
+import java.security.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.SignatureMethod
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class SignatureMethodTest extends TestCase {
+
+    XMLSignatureFactory factory;
+
+    private static final String SIG_ALGOS[] = {
+	SignatureMethod.DSA_SHA1,
+	SignatureMethod.RSA_SHA1,
+	SignatureMethod.HMAC_SHA1
+    };
+
+    public SignatureMethodTest() {
+	super("SignatureMethodTest");
+    }
+
+    public SignatureMethodTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testisFeatureSupported() throws Exception {
+	SignatureMethod sm;
+	for (int i = 0; i < SIG_ALGOS.length; i++) {
+	    String algo = SIG_ALGOS[i];
+	    sm = factory.newSignatureMethod(algo, null);
+	    try {
+		sm.isFeatureSupported(null); 
+		fail("Should raise a NPE for null feature"); 
+	    } catch (NullPointerException npe) {}
+	    
+	    assertTrue(!sm.isFeatureSupported("not supported"));
+	}
+    }
+
+    public void testConstructor() throws Exception {
+	// test XMLSignatureFactory.newAlgorithmMethod
+	// (String algorithm, AlgorithmParameterSpec params)
+	// for generating SignatureMethod objects
+	SignatureMethod sm;
+	for (int i = 0; i < SIG_ALGOS.length; i++) {
+	    String algo = SIG_ALGOS[i];
+	    sm = factory.newSignatureMethod(algo, null);
+	    assertEquals(sm.getAlgorithm(), algo);
+
+	    assertNull(sm.getParameterSpec());
+	    try {
+		sm = factory.newSignatureMethod
+		    (algo, new TestUtils.MyOwnSignatureMethodParameterSpec());
+		fail("Should raise an IAPE for invalid parameters"); 
+	    } catch (InvalidAlgorithmParameterException iape) {
+	    } catch (Exception ex) {
+		fail("Should raise an IAPE instead of " + ex);
+	    }
+	}
+
+	try {
+	    sm = factory.newSignatureMethod("non-existent", null); 
+	    fail("Should raise an NSAE for non-existent algos"); 
+	} catch (NoSuchAlgorithmException nsae) {}
+
+	try {
+	    sm = factory.newSignatureMethod(null, null); 
+	    fail("Should raise a NPE for null algo"); 
+	} catch (NullPointerException npe) {}
+    } 
+}
+
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/SignaturePropertiesTest.java b/src_unitTests/javax/xml/crypto/test/dsig/SignaturePropertiesTest.java
new file mode 100644
index 0000000..f829a8c
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/SignaturePropertiesTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.SignatureProperties
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class SignaturePropertiesTest extends TestCase {
+
+    private XMLSignatureFactory factory;
+    private String id = "id";
+    private SignatureProperty prop;
+
+    public SignaturePropertiesTest() {
+	super("SignaturePropertiesTest");
+    }
+
+    public SignaturePropertiesTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	prop = factory.newSignatureProperty
+	    (Collections.singletonList(new TestUtils.MyOwnXMLStructure()),
+	     "propTarget", "propId");
+    }
+    
+    public void tearDown() {}
+    
+    public void testConstructor() {
+	// test XMLSignatureFactory.newSignatureProperties(List, String) 
+	SignatureProperties props;
+
+	try {
+	    props = factory.newSignatureProperties(null, id); 
+	    fail("Should raise a NPE for null content"); 
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE for null content instead of " + ex);
+	}
+	List list = new Vector();
+	try {
+	    props = factory.newSignatureProperties(list, id); 
+	    fail("Should raise an IAE for empty content"); 
+	} catch (IllegalArgumentException iae) {
+	} catch (Exception ex) {
+	    fail("Should raise an IAE for empty content instead of " + ex);
+	}
+	String strEntry = "wrong type";
+	list.add(strEntry);
+	try {
+	    props = factory.newSignatureProperties(list, id); 
+	    fail("Should raise a CCE for content containing " +
+		 "invalid, i.e. non-SignatureProperty, entries"); 
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should raise a CCE for content with invalid entries " +
+		 "instead of " + ex);
+	}
+	list.remove(strEntry);
+	list.add(prop);
+	props = factory.newSignatureProperties(list, id);
+	assertNotNull(props);
+	List unmodifiable = props.getProperties();
+	assertNotNull(unmodifiable);
+	try {
+	    unmodifiable.add(prop);
+	    fail("Should return an unmodifiable List object");
+	} catch (UnsupportedOperationException uoe) {}
+	assertTrue(Arrays.equals(unmodifiable.toArray(), list.toArray()));
+	assertNotNull(props);
+	assertEquals(props.getId(), id);
+    }
+
+    public void testisFeatureSupported() {
+	List list = new Vector();
+	list.add(prop);
+	SignatureProperties props = factory.newSignatureProperties(list, id);
+	try {
+	    props.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!props.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/SignaturePropertyTest.java b/src_unitTests/javax/xml/crypto/test/dsig/SignaturePropertyTest.java
new file mode 100644
index 0000000..89b4a31
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/SignaturePropertyTest.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.SignatureProperty
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class SignaturePropertyTest extends TestCase {
+
+    private XMLSignatureFactory factory;
+    private String target = "target";
+    private String id = "id";
+
+    public SignaturePropertyTest() {
+	super("SignaturePropertyTest");
+    }
+
+    public SignaturePropertyTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+    
+    public void tearDown() {}
+    
+    public void testConstructor() {
+	// test XMLSignatureFactory.newSignatureProperty(List, String, String) 
+	SignatureProperty prop;
+
+	try {
+	    prop = factory.newSignatureProperty(null, target, id); 
+	    fail("Should raise a NPE for null content"); 
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE for null content instead of " + ex);
+	}
+	List list = new Vector();
+	try {
+	    prop = factory.newSignatureProperty(list, target, id); 
+	    fail("Should raise an IAE for empty content"); 
+	} catch (IllegalArgumentException iae) {
+	} catch (Exception ex) {
+	    fail("Should raise an IAE for empty content instead of " + ex);
+	}
+	String strEntry = "wrong type";
+	list.add(strEntry);
+	try {
+	    prop = factory.newSignatureProperty(list, target, id); 
+	    fail("Should raise a CCE for content containing " +
+		 "invalid, i.e. non-XMLStructure, entries"); 
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should raise a CCE for content with invalid entries " +
+		 "instead of " + ex);
+	}
+	list.remove(strEntry);
+	list.add(new TestUtils.MyOwnXMLStructure());
+	try {
+	    prop = factory.newSignatureProperty(list, null, id);
+	    fail("Should raise a NPE for null target"); 
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE for null target instead of " + ex);
+	}
+
+	prop = factory.newSignatureProperty(list, target, id);
+	assertNotNull(prop);
+	List unmodifiable = prop.getContent();
+	assertNotNull(unmodifiable);
+	try {
+	    unmodifiable.add(new TestUtils.MyOwnXMLStructure());
+	    fail("Should return an unmodifiable List object");
+	} catch (UnsupportedOperationException uoe) {}
+	assertTrue(Arrays.equals(unmodifiable.toArray(), list.toArray()));
+	assertEquals(prop.getTarget(), target);
+	assertEquals(prop.getId(), id);
+	assertNotNull(prop);
+    }
+
+    public void testisFeatureSupported() {
+	List list = new Vector();
+	list.add(new TestUtils.MyOwnXMLStructure());
+	SignatureProperty prop = factory.newSignatureProperty
+	    (list, target, id);
+	try {
+	    prop.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!prop.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/SignatureValidator.java b/src_unitTests/javax/xml/crypto/test/dsig/SignatureValidator.java
new file mode 100644
index 0000000..e8dd258
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/SignatureValidator.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.security.*;
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.DocumentBuilder;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.Element;
+import org.w3c.dom.traversal.*;
+
+import junit.framework.*;
+
+/**
+ * This is a class which performs xml signature validation upon request
+ *
+ * @author Sean Mullan
+ * @author Valerie Peng
+ */
+public class SignatureValidator {
+
+    private File dir;
+
+    public SignatureValidator(File base) {
+	dir = base;
+    }
+
+    public boolean validate(String fn, KeySelector ks) throws Exception {
+	return validate(fn, ks, null);
+    }
+
+    public boolean validate(String fn, KeySelector ks, URIDereferencer ud)
+	throws Exception {
+
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        dbf.setValidating(false);
+        Document doc = dbf.newDocumentBuilder().parse(new File(dir, fn));
+        Element sigElement = getSignatureElement(doc);
+	if (sigElement == null) {
+	    throw new Exception("Couldn't find signature Element");
+	}
+	DOMValidateContext vc = new DOMValidateContext(ks, sigElement);
+	vc.setBaseURI(dir.toURI().toString());
+        XMLSignatureFactory factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    	XMLSignature signature = factory.unmarshalXMLSignature(vc);
+	if (ud != null) {
+	    vc.setURIDereferencer(ud);
+	}
+    	boolean coreValidity = signature.validate(vc);
+    
+    	// Check core validation status
+    	if (coreValidity == false) {
+    	    // check the validation status of each Reference
+    	    Iterator i = signature.getSignedInfo().getReferences().iterator();
+    	    for (int j=0; i.hasNext(); j++) {
+		Reference reference = (Reference) i.next();
+		boolean refValid = reference.validate(vc);
+    	    }
+    	}
+        return coreValidity;
+    }
+    
+    public static Element getSignatureElement(Document doc) {
+        NodeIterator ni = ((DocumentTraversal)doc).createNodeIterator(
+            doc.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, false);
+        
+        for(Node n = ni.nextNode(); n != null; n = ni.nextNode() ) {
+            if("Signature".equals(n.getLocalName())) {
+                return (Element) n;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/SignedInfoTest.java b/src_unitTests/javax/xml/crypto/test/dsig/SignedInfoTest.java
new file mode 100644
index 0000000..7c6963a
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/SignedInfoTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.security.Security;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.SignedInfo
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class SignedInfoTest extends TestCase {
+    private XMLSignatureFactory fac;
+    private CanonicalizationMethod cm;
+    private SignatureMethod sm;
+    private List references;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public SignedInfoTest() {
+	super("SignedInfoTest");
+    }
+
+    public SignedInfoTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+        fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	cm = fac.newCanonicalizationMethod
+	    (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+	     (C14NMethodParameterSpec) null);
+	sm = fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null);
+	references = new Vector();
+	references.add(fac.newReference
+		       ("http://www.sun.com/index.html", 
+			fac.newDigestMethod(DigestMethod.SHA1, null)));
+    }
+
+    public void tearDown() {}
+    
+    public void testConstructor() {
+	// test XMLSignatureFactory.newSignedInfo(
+	//	CanonicalizationMethod cm, 
+	//      SignatureMethod sm, List references)
+	SignedInfo si;
+	
+	for (int i = 0; i < 3; i++) {
+	    try {
+		switch (i) {
+		case 0:
+		    si = fac.newSignedInfo(null, sm, references);
+		    break;
+		case 1:
+		    si = fac.newSignedInfo(cm, null, references);
+		    break;
+		case 2:
+		    si = fac.newSignedInfo(cm, sm, null);
+		    break;
+		}
+		fail("Should throw a NPE for null parameter");
+	    } catch(NullPointerException npe) {
+	    } catch(Exception ex) {
+		fail("Should throw a NPE instead of " + ex +
+		     " for null parameter");
+	    }
+	}
+
+	List empty = new Vector();
+	try {
+	    si = fac.newSignedInfo(cm, sm, empty);
+	    fail("Should throw an IAE for empty references");
+	} catch(IllegalArgumentException iae) {
+	} catch(Exception ex) {
+	    fail("Should throw an IAE instead of " + ex + 
+		 " for empty references");
+	}
+	
+	empty.add("String");
+	try {
+	    si = fac.newSignedInfo(cm, sm, empty);
+	    fail("Should throw an CCE for illegal references");
+	} catch(ClassCastException cce) {
+	} catch(Exception ex) {
+	    fail("Should throw an IAE instead of " + ex + 
+		 " for empty references");
+	}
+
+	si = fac.newSignedInfo(cm, sm, references);
+	assertNotNull(si);
+	assertEquals(si.getCanonicalizationMethod().getAlgorithm(), 
+		     cm.getAlgorithm());
+	assertEquals(si.getCanonicalizationMethod().getParameterSpec(), 
+		     cm.getParameterSpec());
+	assertEquals(si.getSignatureMethod().getAlgorithm(), 
+		     sm.getAlgorithm());
+	assertEquals(si.getSignatureMethod().getParameterSpec(), 
+		     sm.getParameterSpec());
+	assertTrue(Arrays.equals(si.getReferences().toArray(), 
+				 references.toArray()));
+	assertNull(si.getId());
+
+        // test XMLSignatureFactory.newSignedInfo(
+        //      CanonicalizationMethod cm,
+        //      SignatureMethod sm, List references, String id)
+	si = fac.newSignedInfo(cm, sm, references, null);
+	assertNotNull(si);
+
+	si = fac.newSignedInfo(cm, sm, references, "id");
+	assertNotNull(si);
+	assertEquals(si.getId(), "id");
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/TestUtils.java b/src_unitTests/javax/xml/crypto/test/dsig/TestUtils.java
new file mode 100644
index 0000000..1835143
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/TestUtils.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.security.*;
+import java.security.spec.*;
+import java.util.*;
+import javax.crypto.SecretKey;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.*;
+import java.math.BigInteger;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.*;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.*;
+
+/*
+ * @author Sean Mullan
+ * @author Valerie Peng
+ */
+public class TestUtils {
+    
+    private static final String DSA_Y = "07066284216756577193658833512863439617178933165631848358445549382240081120085333137303066923542492834619027404463194956043802393462371310375123430985057160";
+    private static final String DSA_P = "013232376895198612407547930718267435757728527029623408872245156039757713029036368719146452186041204237350521785240337048752071462798273003935646236777459223";
+    private static final String DSA_Q = "0857393771208094202104259627990318636601332086981";
+    private static final String DSA_G = "05421644057436475141609648488325705128047428394380474376834667300766108262613900542681289080713724597310673074119355136085795982097390670890367185141189796";
+    private static final String DSA_X = "0527140396812450214498055937934275626078768840117";
+    private static final String RSA_MOD = "010800185049102889923150759252557522305032794699952150943573164381936603255999071981574575044810461362008102247767482738822150129277490998033971789476107463";
+    private static final String RSA_PUB = "065537";
+    private static final String RSA_PRIV = "0161169735844219697954459962296126719476357984292128166117072108359155865913405986839960884870654387514883422519600695753920562880636800379454345804879553";
+    private static final String RSA_P = "0115424415723722114324966978423259908612124678699162475636761464258454949949323";
+    private static final String RSA_Q = "0102758196571776648976474223306363419966067908877619912985851335233169851905977";
+    private static final String RSA_PE = "046029221736415726351267405909515200750383424291661371450734102390935198695783";
+    private static final String RSA_QE = "044015259993025528938883140770194453900658533927591226289558855038612449192129";
+    private static final String RSA_COEFF = "039865059011857370650977286999500339769808774456169959084951368761860263797695";
+
+    private TestUtils() {}
+    
+    public static PublicKey getPublicKey(String algo) 
+	throws InvalidKeySpecException, NoSuchAlgorithmException {
+	KeyFactory kf = KeyFactory.getInstance(algo);
+	KeySpec kspec;
+	if (algo.equalsIgnoreCase("DSA")) {
+	    kspec = new DSAPublicKeySpec(new BigInteger(DSA_Y), 
+					 new BigInteger(DSA_P), 
+					 new BigInteger(DSA_Q), 
+					 new BigInteger(DSA_G));
+	} else if (algo.equalsIgnoreCase("RSA")) {
+	    kspec = new RSAPublicKeySpec(new BigInteger(RSA_MOD), 
+					 new BigInteger(RSA_PUB));
+	} else throw new RuntimeException("Unsupported key algorithm " + algo);
+	return kf.generatePublic(kspec);
+    }
+
+    public static PrivateKey getPrivateKey(String algo) 
+	throws InvalidKeySpecException, NoSuchAlgorithmException {
+	KeyFactory kf = KeyFactory.getInstance(algo);
+	KeySpec kspec;
+	if (algo.equalsIgnoreCase("DSA")) {
+	    kspec = new DSAPrivateKeySpec
+		(new BigInteger(DSA_X), new BigInteger(DSA_P), 
+		 new BigInteger(DSA_Q), new BigInteger(DSA_G));
+	} else if (algo.equalsIgnoreCase("RSA")) {
+	    kspec = new RSAPrivateKeySpec
+		(new BigInteger(RSA_MOD), new BigInteger(RSA_PRIV));
+	} else throw new RuntimeException("Unsupported key algorithm " + algo);
+	return kf.generatePrivate(kspec);
+    }
+
+    public static SecretKey getSecretKey(final byte[] secret) {
+	return new SecretKey() {
+	    public String getFormat()	{ return "RAW"; }
+	    public byte[] getEncoded()	{ return secret; }
+	    public String getAlgorithm(){ return "SECRET"; }
+	};
+    }
+    
+    public static Document newDocument() {
+	try {
+	    DocumentBuilderFactory docFac =
+                DocumentBuilderFactory.newInstance();
+	    docFac.setNamespaceAware(true);
+            DocumentBuilder docBuilder = docFac.newDocumentBuilder();
+	    return docBuilder.newDocument();
+	} catch (Exception ex) {
+	    return null;
+	}
+    }
+
+    public static class MyOwnC14nParameterSpec implements C14NMethodParameterSpec {}
+    
+    public static class MyOwnDigestMethodParameterSpec 
+	implements DigestMethodParameterSpec {}
+    
+    public static class MyOwnSignatureMethodParameterSpec 
+	implements SignatureMethodParameterSpec {}
+
+    public static XMLValidateContext getXMLValidateContext(String type, 
+						       File input, 
+						       String tag) 
+	throws Exception {
+	if (type.equalsIgnoreCase("dom")) {
+	    DocumentBuilderFactory docFactory =
+		DocumentBuilderFactory.newInstance();
+	    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
+	    Document doc = docBuilder.parse(input);
+	    if (tag == null) {
+		return new DOMValidateContext
+		    (TestUtils.getPublicKey("RSA"), doc.getDocumentElement());
+	    } else {
+		NodeList list = doc.getElementsByTagName(tag);
+		return new DOMValidateContext
+		    (TestUtils.getPublicKey("RSA"), list.item(0));
+	    }
+	} else {
+	    throw new Exception("Unsupported XMLValidateContext type: " + 
+				type);
+	}
+    }
+
+    public static class MyOwnDOMReference extends DOMStructure 
+	implements Reference {
+	private String id;
+	private boolean status;
+	private byte[] digest;
+	private static MessageDigest MD;
+	private static DigestMethod DIG_METHOD;
+	private Data derefData;
+	private InputStream dis;
+	static {
+	    try {
+		MD = MessageDigest.getInstance("SHA");
+		XMLSignatureFactory factory = XMLSignatureFactory.getInstance
+       		    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+		DIG_METHOD = 
+		    factory.newDigestMethod(DigestMethod.SHA1, null);
+	    } catch (Exception ex) {
+		// should never be thrown
+	    }
+	};
+	
+	public MyOwnDOMReference(String id, boolean status) {
+	    super(newDocument());
+	    this.id = id;
+	    this.status = status;
+	    digest = null;
+	}
+
+	public byte[] getDigestValue() {
+	    if (digest == null) {
+		byte[] inBytes = id.getBytes();
+		digest = new byte[20];
+		if (status) {
+		    digest = MD.digest(inBytes);
+		}
+	    }
+	    return digest;
+	}
+	public byte[] getCalculatedDigestValue() {
+	    return null;
+	}
+	public DigestMethod getDigestMethod() { return DIG_METHOD; }
+	public String getId() {
+	    return id;
+	}
+	public String getType() {
+	    return null;
+	}
+	public String getURI() {
+	    return null;
+	}
+	public List getTransforms() {
+	    return Collections.EMPTY_LIST;
+	}
+	public boolean validate(XMLValidateContext vCtx) 
+	    throws XMLSignatureException {
+	    this.dis = new ByteArrayInputStream(id.getBytes());
+	    this.derefData = new OctetStreamData(this.dis);
+	    return status;
+	}
+	public Data getDereferencedData() {
+	    return derefData;
+	}
+	public InputStream getDigestInputStream() {
+	    return dis;
+        }
+    }
+
+    public static class MyOwnXMLStructure implements XMLStructure {
+	public boolean isFeatureSupported(String feature) 
+	    throws NullPointerException {
+	    if (feature == null) throw new NullPointerException();
+	    return false;
+	}
+    }
+
+    public static class SimpleURIDereferencer implements URIDereferencer {
+	private byte[] data = null;
+	public SimpleURIDereferencer(byte[] in) {
+	    data = (byte[]) in.clone();
+	}
+	public Data dereference(URIReference ref, XMLCryptoContext ctxt) {
+	    return new OctetStreamData(new ByteArrayInputStream(data));
+	}
+	public byte[] getData() {
+	    return data;
+	}
+	public boolean equals(Object obj) {
+	    if (obj instanceof SimpleURIDereferencer) {
+		return Arrays.equals(((SimpleURIDereferencer) obj).getData(),
+				     data);
+	    } else {
+		return false;
+	    }
+	}
+	public int hashCode() {
+	    return 5678;
+	}
+    }
+   
+    public static void dumpDocument(Document doc, String outName)
+	throws Exception {
+        DOMSource source = new DOMSource(doc);
+	File path = new File(System.getProperty("test.dir"), outName);
+        Result result = new StreamResult(new FileOutputStream(path));
+        Transformer trans = TransformerFactory.newInstance().newTransformer();
+        trans.setOutputProperty(OutputKeys.INDENT, "yes");
+        trans.transform(source, result);
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/TransformTest.java b/src_unitTests/javax/xml/crypto/test/dsig/TransformTest.java
new file mode 100644
index 0000000..f090a5e
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/TransformTest.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.util.Collections;
+import javax.xml.crypto.XMLStructure;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathType;
+import javax.xml.crypto.dsig.spec.XPathFilterParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathFilter2ParameterSpec;
+import javax.xml.crypto.dsig.spec.XSLTTransformParameterSpec;
+import java.security.*;
+import java.security.spec.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.Transform
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class TransformTest extends TestCase {
+
+    XMLSignatureFactory factory;
+
+    private static final String TRANSFORM_ALGOS[] = {
+	Transform.BASE64,
+	Transform.ENVELOPED,
+	Transform.XPATH,
+	Transform.XPATH2,
+	Transform.XSLT
+    };
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public TransformTest() {
+	super("TransformTest");
+    }
+
+    public TransformTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testisFeatureSupported() throws Exception {
+	Transform tm; 
+	for (int i = 0; i < TRANSFORM_ALGOS.length; i++) {
+	    String algo = TRANSFORM_ALGOS[i];
+	    TransformParameterSpec params = null;
+	    if (algo.equals(Transform.XPATH)) {
+		params = new XPathFilterParameterSpec("xPath");
+	    } else if (algo.equals(Transform.XPATH2)) {
+		params = new XPathFilter2ParameterSpec
+		    (Collections.singletonList(new XPathType
+			("xPath2", XPathType.Filter.INTERSECT)));
+	    } else if (algo.equals(Transform.XSLT)) {
+		params = new XSLTTransformParameterSpec(new XSLTStructure());
+	    }
+	    tm = factory.newTransform(algo, params);
+	    try {
+		tm.isFeatureSupported(null); 
+		fail(TRANSFORM_ALGOS[i] + 
+		     ": Should raise a NPE for null feature"); 
+	    } catch (NullPointerException npe) {}
+	    
+	    assertTrue(!tm.isFeatureSupported("not supported"));
+	}
+    }
+
+    public void testConstructor() throws Exception {
+	// test newTransform(String algorithm, 
+	//                   AlgorithmParameterSpec params)
+	// for generating Transform objects
+	Transform tm; 
+	for (int i = 0; i < TRANSFORM_ALGOS.length; i++) {
+	    String algo = TRANSFORM_ALGOS[i];
+	    TransformParameterSpec params = null;
+	    if (algo.equals(Transform.XPATH)) {
+		params = new XPathFilterParameterSpec("xPath");
+	    } else if (algo.equals(Transform.XPATH2)) {
+		params = new XPathFilter2ParameterSpec
+		    (Collections.singletonList(new XPathType
+			("xPath2", XPathType.Filter.INTERSECT)));
+	    } else if (algo.equals(Transform.XSLT)) {
+		params = new XSLTTransformParameterSpec(new XSLTStructure());
+	    }
+	    try {
+		tm = factory.newTransform(algo, params);
+		assertNotNull(tm);
+		assertEquals(tm.getAlgorithm(), algo);
+		assertEquals(tm.getParameterSpec(), params);
+	    } catch (Exception ex) {
+		fail(TRANSFORM_ALGOS[i] + ": Unexpected exception " + ex); 
+	    }
+	    try {
+		tm = factory.newTransform
+		    (algo, new TestUtils.MyOwnC14nParameterSpec());
+		fail(TRANSFORM_ALGOS[i] + 
+		     ": Should raise an IAPE for invalid parameters"); 
+	    } catch (InvalidAlgorithmParameterException iape) {
+	    } catch (Exception ex) {
+		fail(TRANSFORM_ALGOS[i] + 
+		     ": Should raise a IAPE instead of " + ex); 
+	    }
+	}
+
+	try {
+	    tm = factory.newTransform(null, (TransformParameterSpec) null); 
+	    fail("Should raise a NPE for null algo"); 
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE instead of " + ex); 
+	}
+
+	try {
+	    tm = factory.newTransform
+		("non-existent", (TransformParameterSpec) null); 
+	    fail("Should raise an NSAE for non-existent algos"); 
+	} catch (NoSuchAlgorithmException nsae) {
+	} catch (Exception ex) {
+	    fail("Should raise an NSAE instead of " + ex); 
+	}
+    }
+
+    private static class XSLTStructure implements XMLStructure {
+	public boolean isFeatureSupported(String feature) { return false; }
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/X509KeySelector.java b/src_unitTests/javax/xml/crypto/test/dsig/X509KeySelector.java
new file mode 100644
index 0000000..7f4b23f
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/X509KeySelector.java
@@ -0,0 +1,374 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.security.Key;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.PublicKey;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.cert.CertSelector;
+import java.security.cert.X509Certificate;
+import java.security.cert.X509CertSelector;
+import java.util.*;
+import javax.security.auth.x500.X500Principal;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+
+import org.jcp.xml.dsig.internal.dom.DOMRetrievalMethod;
+
+/**
+ * A <code>KeySelector</code> that returns {@link PublicKey}s. If the
+ * selector is created as trusted, it only returns public keys of trusted
+ * {@link X509Certificate}s stored in a {@link KeyStore}. Otherwise, it
+ * returns trusted or untrusted public keys (it doesn't care as long
+ * as it finds one).
+ *
+ * <p>This <code>KeySelector</code> uses the specified <code>KeyStore</code>
+ * to find a trusted <code>X509Certificate</code> that matches information
+ * specified in the {@link KeyInfo} passed to the {@link #select} method. 
+ * The public key from the first match is returned. If no match, 
+ * <code>null</code> is returned. See the <code>select</code> method for more
+ * information.
+ *
+ * <p>NOTE!: This X509KeySelector requires J2SE 1.4 because it uses the
+ * java.security.cert.X509CertSelector & javax.security.auth.x500.X500Principal
+ * classes to parse X.500 DNs and match on certificate attributes.
+ *
+ * @author Sean Mullan
+ */
+public class X509KeySelector extends KeySelector {
+
+    private KeyStore ks;
+    private boolean trusted = true;
+
+    /**
+     * Creates a trusted <code>X509KeySelector</code>.
+     *
+     * @param keyStore the keystore
+     * @throws KeyStoreException if the keystore has not been initialized
+     * @throws NullPointerException if <code>keyStore</code> is 
+     *    <code>null</code>
+     */
+    public X509KeySelector(KeyStore keyStore) throws KeyStoreException {
+	this(keyStore, true);
+    }
+
+    public X509KeySelector(KeyStore keyStore, boolean trusted) 
+	throws KeyStoreException {
+        if (keyStore == null) {
+            throw new NullPointerException("keyStore is null");
+        }
+	this.trusted = trusted;
+        this.ks = keyStore;
+        // test to see if KeyStore has been initialized
+        this.ks.size();
+    }
+
+    /**
+     * Finds a key from the keystore satisfying the specified constraints.
+     *
+     * <p>This method compares data contained in {@link KeyInfo} entries
+     * with information stored in the <code>KeyStore</code>. The implementation
+     * iterates over the KeyInfo types and returns the first {@link PublicKey} 
+     * of an X509Certificate in the keystore that is compatible with the 
+     * specified AlgorithmMethod according to the following rules for each 
+     * keyinfo type:
+     *
+     * X509Data X509Certificate: if it contains a <code>KeyUsage</code>
+     *   extension that asserts the <code>digitalSignature</code> bit and 
+     *   matches an <code>X509Certificate</code> in the <code>KeyStore</code>.
+     * X509Data X509IssuerSerial: if the serial number and issuer DN match an 
+     *    <code>X509Certificate</code> in the <code>KeyStore</code>.
+     * X509Data X509SubjectName: if the subject DN matches an 
+     *    <code>X509Certificate</code> in the <code>KeyStore</code>.
+     * X509Data X509SKI: if the subject key identifier matches an 
+     *    <code>X509Certificate</code> in the <code>KeyStore</code>.
+     * KeyName: if the keyname matches an alias in the <code>KeyStore</code>.
+     * RetrievalMethod: supports rawX509Certificate and X509Data types. If 
+     *    rawX509Certificate type, it must match an <code>X509Certificate</code>
+     *    in the <code>KeyStore</code>.
+     *
+     * @param keyInfo a <code>KeyInfo</code> (may be <code>null</code>)
+     * @param purpose the key's purpose
+     * @param method the algorithm method that this key is to be used for.
+     *    Only keys that are compatible with the algorithm and meet the
+     *    constraints of the specified algorithm should be returned.
+     * @param an <code>XMLCryptoContext</code> that may contain additional
+     *    useful information for finding an appropriate key
+     * @return a key selector result
+     * @throws KeySelectorException if an exceptional condition occurs while
+     *    attempting to find a key. Note that an inability to find a key is not
+     *    considered an exception (<code>null</code> should be
+     *    returned in that case). However, an error condition (ex: network
+     *    communications failure) that prevented the <code>KeySelector</code>
+     *    from finding a potential key should be considered an exception.
+     * @throws ClassCastException if the data type of <code>method</code>
+     *    is not supported by this key selector
+     */
+    public KeySelectorResult select(KeyInfo keyInfo, 
+	KeySelector.Purpose purpose, AlgorithmMethod method,
+	XMLCryptoContext context) throws KeySelectorException {
+
+        SignatureMethod sm = (SignatureMethod) method;
+
+        try {
+            // return null if keyinfo is null or keystore is empty
+            if (keyInfo == null || ks.size() == 0) {
+                return new SimpleKeySelectorResult(null);
+            }
+
+            // Iterate through KeyInfo types
+            Iterator i = keyInfo.getContent().iterator();
+            while (i.hasNext()) {
+                XMLStructure kiType = (XMLStructure) i.next();
+		// check X509Data
+                if (kiType instanceof X509Data) {
+                    X509Data xd = (X509Data) kiType;
+		    KeySelectorResult ksr = x509DataSelect(xd, sm);
+	            if (ksr != null) {
+		        return ksr;
+	            }
+		// check KeyName
+                } else if (kiType instanceof KeyName) {
+		    KeyName kn = (KeyName) kiType;
+		    Certificate cert = ks.getCertificate(kn.getName());
+		    if (cert != null && algEquals(sm.getAlgorithm(),
+			cert.getPublicKey().getAlgorithm())) {
+			return new SimpleKeySelectorResult(cert.getPublicKey());
+		    }
+		// check RetrievalMethod
+                } else if (kiType instanceof RetrievalMethod) {
+		    RetrievalMethod rm = (RetrievalMethod) kiType;
+                    try {
+			KeySelectorResult ksr = null;
+		        if (rm.getType().equals
+			    (X509Data.RAW_X509_CERTIFICATE_TYPE)) {
+			    OctetStreamData data = (OctetStreamData) 
+				rm.dereference(context);
+			    CertificateFactory cf = 
+			        CertificateFactory.getInstance("X.509");
+			    X509Certificate cert = (X509Certificate) 
+			        cf.generateCertificate(data.getOctetStream());
+		            ksr = certSelect(cert, sm);
+		        } else if (rm.getType().equals(X509Data.TYPE)) {
+			    X509Data xd = (X509Data) ((DOMRetrievalMethod) rm).
+				dereferenceAsXMLStructure(context);
+		            ksr = x509DataSelect(xd, sm);
+		        } else {
+			    // skip; keyinfo type is not supported
+			    continue;
+			}
+		        if (ksr != null) {
+		            return ksr;
+	                }
+                    } catch (Exception e) {
+		        throw new KeySelectorException(e);
+		    }
+		}
+            }
+        } catch (KeyStoreException kse) {
+            // throw exception if keystore is uninitialized
+            throw new KeySelectorException(kse);
+        }
+
+        // return null since no match could be found
+        return new SimpleKeySelectorResult(null);
+    }
+
+    /**
+     * Searches the specified keystore for a certificate that matches the
+     * criteria specified in the CertSelector.
+     *
+     * @return a KeySelectorResult containing the cert's public key if there
+     *   is a match; otherwise null
+     */
+    private KeySelectorResult keyStoreSelect(CertSelector cs) 
+	throws KeyStoreException {
+        Enumeration aliases = ks.aliases();
+        while (aliases.hasMoreElements()) {
+	    String alias = (String) aliases.nextElement();
+	    Certificate cert = ks.getCertificate(alias);
+	    if (cert != null && cs.match(cert)) {
+	        return new SimpleKeySelectorResult(cert.getPublicKey());
+	    }
+	}
+	return null;
+    }
+
+    /**
+     * Searches the specified keystore for a certificate that matches the
+     * specified X509Certificate and contains a public key that is compatible
+     * with the specified SignatureMethod.
+     *
+     * @return a KeySelectorResult containing the cert's public key if there
+     *   is a match; otherwise null
+     */
+    private KeySelectorResult certSelect(X509Certificate xcert, 
+	SignatureMethod sm) throws KeyStoreException {
+        // skip non-signer certs
+        boolean[] keyUsage = xcert.getKeyUsage();
+        if (keyUsage != null && keyUsage[0] == false) {
+            return null;
+        }
+        String alias = ks.getCertificateAlias(xcert);
+        if (alias != null) {
+            PublicKey pk = ks.getCertificate(alias).getPublicKey();
+            // make sure algorithm is compatible with method
+            if (algEquals(sm.getAlgorithm(), pk.getAlgorithm())) {
+                return new SimpleKeySelectorResult(pk);
+            }
+        }
+	return null;
+    }
+
+    /**
+     * Returns an OID of a public-key algorithm compatible with the specified
+     * signature algorithm URI.
+     */
+    private String getPKAlgorithmOID(String algURI) {
+	if (algURI.equalsIgnoreCase(SignatureMethod.DSA_SHA1)) {
+	    return "1.2.840.10040.4.1";
+	} else if (algURI.equalsIgnoreCase(SignatureMethod.RSA_SHA1)) {
+	    return "1.2.840.113549.1.1";
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * A simple KeySelectorResult containing a public key.
+     */
+    private static class SimpleKeySelectorResult implements KeySelectorResult {
+	private final Key key;
+	SimpleKeySelectorResult(Key key) { this.key = key; }
+	public Key getKey() { return key; }
+    }
+
+    /**
+     * Checks if a JCA/JCE public key algorithm name is compatible with
+     * the specified signature algorithm URI.
+     */
+    //@@@FIXME: this should also work for key types other than DSA/RSA
+    private boolean algEquals(String algURI, String algName) {
+        if (algName.equalsIgnoreCase("DSA") &&
+            algURI.equalsIgnoreCase(SignatureMethod.DSA_SHA1)) {
+            return true;
+        } else if (algName.equalsIgnoreCase("RSA") &&
+            algURI.equalsIgnoreCase(SignatureMethod.RSA_SHA1)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Searches the specified keystore for a certificate that matches an
+     * entry of the specified X509Data and contains a public key that is 
+     * compatible with the specified SignatureMethod.
+     *
+     * @return a KeySelectorResult containing the cert's public key if there
+     *   is a match; otherwise null
+     */
+    private KeySelectorResult x509DataSelect(X509Data xd, SignatureMethod sm) 
+	throws KeyStoreException, KeySelectorException {
+
+	// convert signature algorithm to compatible public-key alg OID
+	String algOID = getPKAlgorithmOID(sm.getAlgorithm());
+        X509CertSelector subjectcs = new X509CertSelector();
+	try {
+            subjectcs.setSubjectPublicKeyAlgID(algOID);
+        } catch (IOException ioe) {
+	    throw new KeySelectorException(ioe);
+	}
+        Collection certs = new ArrayList();
+
+        Iterator xi = xd.getContent().iterator();
+        while (xi.hasNext()) {
+            Object o = xi.next();
+	    // check X509IssuerSerial
+	    if (o instanceof X509IssuerSerial) {
+	        X509IssuerSerial xis = (X509IssuerSerial) o;
+	        try {
+	            subjectcs.setSerialNumber(xis.getSerialNumber());
+		    String issuer = new X500Principal(xis.getIssuerName()).getName();
+		    // strip off newline
+		    if (issuer.endsWith("\n")) {
+			issuer = new String
+			    (issuer.toCharArray(), 0, issuer.length()-1);
+		    }
+		    subjectcs.setIssuer(issuer);
+	        } catch (IOException ioe) {
+		    throw new KeySelectorException(ioe);
+		}
+	    // check X509SubjectName
+	    } else if (o instanceof String) {
+	        String sn = (String) o;
+	        try {
+		    String subject = new X500Principal(sn).getName();
+		    // strip off newline
+		    if (subject.endsWith("\n")) {
+			subject = new String
+			    (subject.toCharArray(), 0, subject.length()-1);
+		    }
+		    subjectcs.setSubject(subject);
+		} catch (IOException ioe) {
+		    throw new KeySelectorException(ioe);
+		}
+	    // check X509SKI
+	    } else if (o instanceof byte[]) {
+	        byte[] ski = (byte[]) o;
+		// DER-encode ski - required by X509CertSelector
+		byte[] encodedSki = new byte[ski.length+2];
+		encodedSki[0] = 0x04; // OCTET STRING tag value
+		encodedSki[1] = (byte) ski.length; // length
+		System.arraycopy(ski, 0, encodedSki, 2, ski.length);
+		subjectcs.setSubjectKeyIdentifier(encodedSki);
+	    } else if (o instanceof X509Certificate) {
+		certs.add((X509Certificate) o);
+	    // check X509CRL
+	    // not supported: should use CertPath API
+	    } else {
+	        // skip all other entries
+	        continue;
+	    }
+	}
+	KeySelectorResult ksr = keyStoreSelect(subjectcs);
+	if (ksr != null) {
+	    return ksr;
+	}
+	if (!certs.isEmpty() && !trusted) {
+	    // try to find public key in certs in X509Data
+	    Iterator i = certs.iterator();
+	    while (i.hasNext()) {
+		X509Certificate cert = (X509Certificate) i.next();
+		if (subjectcs.match(cert)) {
+		    return new SimpleKeySelectorResult(cert.getPublicKey());
+		}
+	    }
+	}
+	return null;
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/XMLObjectTest.java b/src_unitTests/javax/xml/crypto/test/dsig/XMLObjectTest.java
new file mode 100644
index 0000000..098f99a
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/XMLObjectTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.util.*;
+import javax.xml.crypto.dsig.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.XMLObject
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class XMLObjectTest extends TestCase {
+
+    private XMLSignatureFactory factory;
+    private String id = "id";
+    private String mimeType = "mime";
+    private String encoding = "encoding";
+
+    public XMLObjectTest() {
+	super("XMLObjectTest");
+    }
+
+    public XMLObjectTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+    
+    public void tearDown() {}
+    
+    public void testConstructor() {
+	// test XMLSignatureFactory.newXMLObject(List, String, String, String) 
+	XMLObject obj;
+	
+	obj = factory.newXMLObject(null, null, null, null); 
+	assertNotNull(obj);
+
+	Vector list = new Vector();
+	obj = factory.newXMLObject(list, null, null, null); 
+	assertNotNull(obj);
+	
+	String strEntry = "wrong type";
+	list.add(strEntry);
+	try {
+	    obj = factory.newXMLObject(list, null, null, null); 
+	    fail("Should raise a CCE for content containing " +
+		 "invalid, i.e. non-XMLStructure, entries"); 
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should raise a CCE for content with invalid entries " +
+		 "instead of " + ex);
+	}
+	list.remove(strEntry);
+	list.add(new TestUtils.MyOwnXMLStructure());
+	obj = factory.newXMLObject(list, id, mimeType, encoding);
+	assertNotNull(obj);
+	assertNotNull(obj.getContent());
+	assertTrue(Arrays.equals(obj.getContent().toArray(), list.toArray()));
+	assertEquals(obj.getId(), id);
+	assertEquals(obj.getMimeType(), mimeType);
+	assertEquals(obj.getEncoding(), encoding);
+
+	List unmodifiable = obj.getContent();
+	try {
+	    unmodifiable.add(new TestUtils.MyOwnXMLStructure());
+	    fail("Should return an unmodifiable List object");
+	} catch (UnsupportedOperationException uoe) {}
+	assertTrue(Arrays.equals(unmodifiable.toArray(), list.toArray()));
+    }
+
+    public void testisFeatureSupported() {
+	List list = new Vector();
+	list.add(new TestUtils.MyOwnXMLStructure());
+	XMLObject obj = factory.newXMLObject(list, id, mimeType, encoding);
+	try {
+	    obj.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!obj.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/XMLSignContextTest.java b/src_unitTests/javax/xml/crypto/test/dsig/XMLSignContextTest.java
new file mode 100644
index 0000000..71a3f65
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/XMLSignContextTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.io.ByteArrayInputStream;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.KeySelector;
+import java.security.*;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.util.Arrays;
+import org.w3c.dom.Document;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.XMLSignContext
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class XMLSignContextTest extends TestCase {
+
+    private XMLSignContext defContext;
+    private Key[] KEYS;
+    private Document doc;
+
+    public XMLSignContextTest() {
+	super("XMLSignContextTest");
+    }
+
+    public XMLSignContextTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	// set up the signingKeys
+	KEYS = new Key[3];
+	KEYS[0] = TestUtils.getPrivateKey("DSA");
+	KEYS[1] = TestUtils.getPrivateKey("RSA");
+	KEYS[2] = new SecretKeySpec(new byte[16], "HmacSHA1");
+	// set up the default XMLSignContext
+	SecretKey sk = new SecretKeySpec(new byte[8], "DES");
+	doc = TestUtils.newDocument();
+	defContext = new DOMSignContext(sk, doc);
+    }
+
+    public void tearDown() { }
+
+    public void testsetngetBaseURI() throws Exception {
+	assertNull(defContext.getBaseURI());
+
+	String uri = "http://www.w3.org/2000/09/xmldsig#";
+	defContext.setBaseURI(uri);
+	assertEquals(defContext.getBaseURI(), uri);
+	defContext.setBaseURI(null);
+	assertNull(defContext.getBaseURI());
+    }
+
+
+    public void testsetngetProperty() throws Exception {
+	String name = "key";
+	assertNull(defContext.getProperty(name));
+	try {
+	    defContext.setProperty(null, null);
+	    fail("Should raise a NPE with a null name");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE instead of " + ex);
+	}
+	String value1 = "value#1";
+	String value2 = "value#2";
+	assertNull(defContext.setProperty(name, value1));
+	assertEquals(defContext.getProperty(name), value1);
+	assertEquals(defContext.setProperty(name, value2), value1);
+	assertEquals(defContext.getProperty(name), value2);
+	assertEquals(defContext.setProperty(name, null), value2);
+	assertNull(defContext.getProperty(name));
+    }
+
+    public void testsetngetURIDereferencer() throws Exception {
+	assertNull(defContext.getURIDereferencer());
+	byte[] data = "simpleDereferencer".getBytes();
+	URIDereferencer deref = new TestUtils.SimpleURIDereferencer(data);
+
+	defContext.setURIDereferencer(deref);
+	assertEquals(defContext.getURIDereferencer(), deref);
+	defContext.setURIDereferencer(null);
+	assertNull(defContext.getURIDereferencer());
+    }
+
+    public void testsetngetKeySelector() throws Exception {
+	defContext.setKeySelector(null);
+	assertNull(defContext.getKeySelector());
+	KeySelector ks = KeySelector.singletonKeySelector(KEYS[0]);
+	defContext.setKeySelector(ks);
+       	assertEquals(defContext.getKeySelector(), ks);
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/XMLSignatureFactoryTest.java b/src_unitTests/javax/xml/crypto/test/dsig/XMLSignatureFactoryTest.java
new file mode 100644
index 0000000..d563a37
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/XMLSignatureFactoryTest.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.math.BigInteger;
+import java.util.*;
+import java.security.NoSuchProviderException;
+import java.security.Provider;
+import java.security.KeyException;
+import java.security.PublicKey;
+import java.security.Security;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dom.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.XMLSignatureFactory
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class XMLSignatureFactoryTest extends TestCase {
+
+    XMLSignatureFactory factory;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public XMLSignatureFactoryTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	factory = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetInstance() {
+	try {
+	    XMLSignatureFactory fac = 
+		XMLSignatureFactory.getInstance("non-existent");
+	    fail("Should throw NoSuchMechanismException if no impl found");
+	} catch (NoSuchMechanismException ex) {}
+
+	try {
+	    XMLSignatureFactory fac = XMLSignatureFactory.getInstance(null);
+	    fail("Should raise a NPE for null mechanismType"); 
+	} catch (NullPointerException npe) {}
+
+	try {
+	    XMLSignatureFactory fac = 
+		XMLSignatureFactory.getInstance("DOM", "non-existent");
+	    fail("Should throw NoSuchProviderException if specified " +
+		 "provider is not found");
+	} catch (NoSuchProviderException nspe) {
+	} catch (NoSuchMechanismException nse) {
+	    fail("Should raise a NoSuchProviderException instead of " + nse +
+		 " if specified provider is not found"); 
+	}
+
+	try {
+	    XMLSignatureFactory fac = XMLSignatureFactory.getInstance(null);
+	    fail("Should raise a NPE for null mechanismType"); 
+	} catch (NullPointerException npe) {}
+
+	try {
+	    XMLSignatureFactory fac = 
+		XMLSignatureFactory.getInstance("DOM", (Provider) null);
+	    fail("Should raise a NPE for null provider"); 
+	} catch (NullPointerException npe) {}
+    }
+
+    public void testgetMechanismType() {
+	assertNotNull(factory);
+	assertEquals("DOM", factory.getMechanismType());
+    }
+
+    public void testisFeatureSupported() {
+	try {
+	    factory.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!factory.isFeatureSupported("not supported"));
+    }
+
+    public void testgetKeyInfoFactory() throws Exception {
+	KeyInfoFactory kifac = factory.getKeyInfoFactory();
+	assertEquals(kifac.getMechanismType(), factory.getMechanismType());
+	assertEquals(kifac.getProvider(), factory.getProvider());
+    }
+
+    public void testunmarshalXMLSignature() throws Exception {
+	XMLSignature stuff;
+	try {
+	    stuff = factory.unmarshalXMLSignature((XMLValidateContext) null);
+	    fail("Should raise an NPE for null inputs"); 
+	} catch (NullPointerException ex) {
+	} catch (Exception ex) {
+	    fail("Should throw an NPE instead of " + ex +
+		 " for null inputs");
+	}
+
+	try {
+	    stuff = factory.unmarshalXMLSignature(
+		new XMLValidateContext() {
+		    public Object getProperty(String name) { return null; }
+		    public Object setProperty(String name, Object property) {
+			return null;
+		    }
+		    public String getBaseURI()	{ return null; }
+		    public void setBaseURI(String uri)	{ return; }
+		    public KeySelector getKeySelector() { return null; }
+		    public void setKeySelector(KeySelector ks) { return; }
+		    public URIDereferencer getURIDereferencer() { return null; }
+		    public void setURIDereferencer(URIDereferencer ud) {return;}
+		    public Object get(Object key) {return null;}
+		    public Object put(Object key, Object value) {return null;}
+                    public void setDefaultNamespacePrefix(String defPrefix) {}
+                    public String getDefaultNamespacePrefix() {return null;}
+                    public String putNamespacePrefix
+                        (String nsURI, String prefix) {return null;}
+                    public String getNamespacePrefix
+                        (String nsURI, String defPrefix) {return null;}
+		    });
+	    fail("Should throw a CCE for input of wrong type"); 
+	} catch (ClassCastException ex) {
+	} catch (Exception ex) {
+	    fail("Should raise a CCE instead of " + ex +
+		 " for wrong inputs"); 
+	}
+
+        DocumentBuilderFactory docFactory =
+            DocumentBuilderFactory.newInstance();
+	docFactory.setNamespaceAware(true);
+	DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
+	String fs = System.getProperty("file.separator");
+	File dir = new File(System.getProperty("basedir") + fs +
+	    "data" + fs + "ie" + fs + "baltimore" + fs + "merlin-examples",
+	    "merlin-xmldsig-twenty-three");
+	Document doc = docBuilder.parse(new File(dir, "signature.xml"));
+	NodeList nl = doc.getElementsByTagName("KeyInfo");
+	try {
+	    stuff = factory.unmarshalXMLSignature
+	    (new DOMValidateContext(TestUtils.getPublicKey("RSA"), nl.item(0)));
+	    fail("Should throw a MarshalException for non-XMLSignature inputs"); 
+	} catch (MarshalException ex) {}
+	
+	nl = doc.getElementsByTagName("Signature");
+	try {
+	    stuff = factory.unmarshalXMLSignature
+	    (new DOMValidateContext(TestUtils.getPublicKey("DSA"), nl.item(0)));
+	    assertNotNull(stuff);
+	} catch (MarshalException ex) {
+	    fail("Unmarshal failed: " + ex.getMessage());
+	    ex.printStackTrace();
+	}
+    }
+
+    // for debugging purposes
+    public static void main(String[] args) throws Exception {
+	XMLSignatureFactoryTest test = 
+	    new XMLSignatureFactoryTest("XMLSignatureFactoryTest");
+	test.setUp();
+	test.testunmarshalXMLSignature();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/XMLSignatureTest.java b/src_unitTests/javax/xml/crypto/test/dsig/XMLSignatureTest.java
new file mode 100644
index 0000000..092ebf3
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/XMLSignatureTest.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.*;
+import java.util.*;
+import java.security.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.XMLSignature
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class XMLSignatureTest extends TestCase {
+    private XMLSignatureFactory fac;
+    private KeyInfoFactory kifac;
+    private SignedInfo defSi;
+    private KeyInfo defKi;
+    private List objs;
+    private String id = "id";
+    private String sigValueId = "signatureValueId";
+    private Key[] SIGN_KEYS;
+    private Key[] VALIDATE_KEYS;
+    private SignatureMethod[] SIG_METHODS;
+
+    static {
+        Security.insertProviderAt
+            (new org.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
+    }
+
+    public XMLSignatureTest() {
+	super("XMLSignatureTest");
+    }
+
+    public XMLSignatureTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	fac = XMLSignatureFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	kifac = KeyInfoFactory.getInstance
+            ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+
+	// set up the corresponding SignatureMethod 
+	SIG_METHODS = new SignatureMethod[3];
+	SIG_METHODS[0] = fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null);
+	SIG_METHODS[1] = fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
+	SIG_METHODS[2] = fac.newSignatureMethod(SignatureMethod.HMAC_SHA1, null);
+	// set up the signingKeys
+	SIGN_KEYS = new Key[3];
+	SIGN_KEYS[0] = TestUtils.getPrivateKey("DSA");
+	SIGN_KEYS[1] = TestUtils.getPrivateKey("RSA");
+	SIGN_KEYS[2] = new SecretKeySpec(new byte[16], "HmacSHA1");
+	// set up the validatingKeys
+	VALIDATE_KEYS = new Key[3];
+	VALIDATE_KEYS[0] = TestUtils.getPublicKey("DSA");
+	VALIDATE_KEYS[1] = TestUtils.getPublicKey("RSA");
+	VALIDATE_KEYS[2] = new SecretKeySpec(new byte[16], "HmacSHA1");
+	defSi = createSignedInfo(SIG_METHODS[0]);
+	defKi = kifac.newKeyInfo
+	    (Collections.singletonList(kifac.newKeyName("Alice")));
+	objs = Collections.singletonList
+	    (fac.newXMLObject(null, null, null, null));
+    }
+
+    public void tearDown() {}
+
+    public void testConstructor() throws Exception {
+	XMLSignature sig = null;
+	// test  XMLSignatureFactory.newXMLSignature(SignedInfo, KeyInfo)
+	// and  XMLSignatureFactory.newXMLSignature(SignedInfo,
+	//          KeyInfo, List, String, String)
+	// for generating XMLSignature objects
+	for (int i = 0; i < 2; i++) {
+	    try {
+		switch (i) {
+		case 0:
+		    sig = fac.newXMLSignature(null, defKi);
+		    break;
+		case 1:
+		    sig = fac.newXMLSignature(null, defKi, objs, id, sigValueId);
+		    break;
+		}
+		fail("Should throw a NPE for null references");
+	    } catch (NullPointerException npe) {
+	    } catch (Exception ex) {
+		fail("Should throw a NPE instead of " + ex + 
+		     " for null references");
+	    }
+	}
+	try {
+	    sig = fac.newXMLSignature(defSi, defKi, 
+		     Collections.singletonList("wrongType"), id, sigValueId);
+	    fail("Should throw a CCE for invalid objects");
+	} catch (ClassCastException cce) {
+	} catch (Exception ex) {
+	    fail("Should throw a CCE instead of " + ex + 
+		 " for invalid objects");
+	}
+	sig = fac.newXMLSignature(defSi, defKi, objs, id, sigValueId);
+	assertEquals(sig.getId(), id);
+	assertEquals(sig.getKeyInfo(), defKi);
+	assertTrue(Arrays.equals(sig.getObjects().toArray(), objs.toArray()));
+	assertNull(sig.getSignatureValue().getValue());
+	assertEquals(sig.getSignatureValue().getId(), sigValueId);
+	assertEquals(sig.getSignedInfo(), defSi);
+
+	sig = fac.newXMLSignature(defSi, defKi);
+	assertNull(sig.getId());
+	assertEquals(sig.getKeyInfo(), defKi);
+	assertTrue(sig.getObjects().size()==0);
+	assertNull(sig.getSignatureValue().getValue());
+	assertNull(sig.getSignatureValue().getId());
+	assertEquals(sig.getSignedInfo(), defSi);
+    }
+    
+    public void testisFeatureSupported() throws Exception {
+
+	XMLSignature sig = fac.newXMLSignature(defSi, null);
+	
+	try {
+	    sig.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+	    
+	assertTrue(!sig.isFeatureSupported("not supported"));
+    }
+
+    public void testsignANDvalidate() throws Exception {
+	XMLSignature sig;
+	SignedInfo si;
+	KeyInfo ki = null;
+	XMLSignContext signContext;
+	XMLValidateContext validateContext;
+	boolean status = true;
+	for (int i = SIGN_KEYS.length-1; i>=0 ; i--) {
+	    si = createSignedInfo(SIG_METHODS[i]);
+	    if (VALIDATE_KEYS[i] instanceof PublicKey) {
+		ki = kifac.newKeyInfo(Collections.singletonList
+		    (kifac.newKeyValue((PublicKey) VALIDATE_KEYS[i])));
+	    } else {
+		ki = kifac.newKeyInfo(Collections.singletonList
+		    (kifac.newKeyName("testuser")));
+	    }
+	    sig = fac.newXMLSignature(si, ki, objs, id, sigValueId); 
+	    Document doc = TestUtils.newDocument();
+	    signContext = new DOMSignContext(SIGN_KEYS[i], doc);
+	    sig.sign(signContext);
+	    validateContext = new DOMValidateContext
+		(VALIDATE_KEYS[i], doc.getDocumentElement());
+	    if (sig.validate(validateContext) == false) {
+		status = false;
+		TestUtils.dumpDocument(doc, "signatureTest_out"+i+".xml");
+	    }
+	}
+	assertTrue(status);
+    }
+
+    private SignedInfo createSignedInfo(SignatureMethod sm) throws Exception {
+	// set up the building blocks
+	CanonicalizationMethod cm = fac.newCanonicalizationMethod
+	    (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, 
+	     (C14NMethodParameterSpec) null);
+	DigestMethod dm = fac.newDigestMethod(DigestMethod.SHA1, null);
+	List refs = Collections.singletonList(fac.newReference
+	    ("http://www.w3.org/Signature/2002/04/xml-stylesheet.b64", dm));
+        return fac.newSignedInfo(cm, sm, refs);
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/XMLValidateContextTest.java b/src_unitTests/javax/xml/crypto/test/dsig/XMLValidateContextTest.java
new file mode 100644
index 0000000..89585e4
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/XMLValidateContextTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig;
+
+import java.io.File;
+import java.io.ByteArrayInputStream;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.*;
+import java.security.*;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.XMLValidateContext
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class XMLValidateContextTest extends TestCase {
+
+    private XMLValidateContext defContext;
+    private Key[] KEYS;
+    private KeySelector[] KEY_SELECTORS;
+
+    public XMLValidateContextTest() {
+	super("XMLValidateContextTest");
+    }
+
+    public XMLValidateContextTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+
+	// set up the validatingKeys
+	KEYS = new Key[3];
+	KEYS[0] = TestUtils.getPublicKey("DSA");
+	KEYS[1] = TestUtils.getPublicKey("RSA");
+	KEYS[2] = new SecretKeySpec(new byte[16], "HmacSHA1");
+
+	// set up the default XMLValidateContext
+	SecretKey sk = new SecretKeySpec(new byte[8], "DES");
+	defContext = new DOMValidateContext(sk, TestUtils.newDocument());
+
+	// set up the key selectors
+	KEY_SELECTORS = new KeySelector[1];
+        KEY_SELECTORS[0] = KeySelector.singletonKeySelector(sk);
+    }
+
+    public void tearDown() { }
+
+    public void testsetngetKeySelector() throws Exception {
+	defContext.setKeySelector(null);
+	assertNull(defContext.getKeySelector());
+
+	for (int i = 0; i < KEY_SELECTORS.length; i++) {
+	    defContext.setKeySelector(KEY_SELECTORS[i]);
+	    assertEquals(defContext.getKeySelector(), KEY_SELECTORS[i]);
+	}
+    }
+
+    public void testsetngetBaseURI() throws Exception {
+	assertNull(defContext.getBaseURI());
+
+	String uri = "http://www.w3.org/2000/09/xmldsig#";
+	defContext.setBaseURI(uri);
+	assertEquals(defContext.getBaseURI(), uri);
+	defContext.setBaseURI(null);
+	assertNull(defContext.getBaseURI());
+    }
+
+    public void testsetngetProperty() throws Exception {
+	String name = "key";
+	assertNull(defContext.getProperty(name));
+	try {
+	    defContext.setProperty(null, null);
+	    fail("Should raise a NPE with a null name");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should raise a NPE instead of " + ex);
+	}
+	String value1 = "value#1";
+	String value2 = "value#2";
+	assertNull(defContext.setProperty(name, value1));
+	assertEquals(defContext.getProperty(name), value1);
+	assertEquals(defContext.setProperty(name, value2), value1);
+	assertEquals(defContext.getProperty(name), value2);
+	assertEquals(defContext.setProperty(name, null), value2);
+	assertNull(defContext.getProperty(name));
+    }
+
+    public void testsetngetURIDereferencer() throws Exception {
+	assertNull(defContext.getURIDereferencer());
+	byte[] data = "simpleDereferencer".getBytes();
+	URIDereferencer deref = new TestUtils.SimpleURIDereferencer(data);
+
+	defContext.setURIDereferencer(deref);
+	assertEquals(defContext.getURIDereferencer(), deref);
+	defContext.setURIDereferencer(null);
+	assertNull(defContext.getURIDereferencer());
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/dom/DOMValidateContextTest.java b/src_unitTests/javax/xml/crypto/test/dsig/dom/DOMValidateContextTest.java
new file mode 100644
index 0000000..2cdebc9
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/dom/DOMValidateContextTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.dom;
+
+import java.io.*;
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.XMLValidateContext;
+
+import junit.framework.*;
+
+import javax.xml.crypto.test.dsig.TestUtils;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.dom.DOMValidateContext
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class DOMValidateContextTest extends TestCase {
+    private DOMValidateContext domVC;
+
+    public DOMValidateContextTest() {
+	super("DOMValidateContext");
+    }
+
+    public DOMValidateContextTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception {
+	String fs = System.getProperty("file.separator");
+	File dir = new File(System.getProperty("basedir") + fs +
+	    "data" + fs + "ie" + fs + "baltimore" + fs + "merlin-examples",
+	    "merlin-xmldsig-twenty-three");
+	File input = new File(dir, "signature.xml");
+	domVC = (DOMValidateContext)
+	    TestUtils.getXMLValidateContext("DOM", input, "Reference");
+    }
+
+    public void tearDown() {}
+
+    public void testConstructor() throws Exception {
+	assertNotNull(domVC);
+	DOMValidateContext vc;
+	try {
+	    vc = new DOMValidateContext(TestUtils.getPublicKey("RSA"), null);
+	    fail("Should throw a NPE for null node");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + " for null node");
+	}
+    }
+
+    public void testsetngetProperty() throws Exception {
+	try {
+	    domVC.setProperty(null, "value");
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + " for null name");
+	}
+	try {
+	    domVC.getProperty(null);
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + " for null name");
+	}
+	String pname = "name";
+	String pvalue1 = "value";
+	String pvalue2 = "newvalue";
+	assertNull(domVC.setProperty(pname, pvalue1));
+	assertEquals((String)domVC.getProperty(pname), pvalue1);
+	assertEquals(domVC.setProperty(pname, pvalue2), pvalue1);
+       	assertEquals((String)domVC.getProperty(pname), pvalue2);
+    }
+
+    public void testsetngetNode() throws Exception {
+	try {
+	    domVC.setNode(null);
+	} catch (NullPointerException npe) {
+	} catch (Exception ex) {
+	    fail("Should throw a NPE instead of " + ex + " for null node");
+	}
+	assertNotNull(domVC.getNode());
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyInfoFactoryTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyInfoFactoryTest.java
new file mode 100644
index 0000000..747ecc8
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyInfoFactoryTest.java
@@ -0,0 +1,252 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import java.math.BigInteger;
+import java.util.*;
+import java.security.KeyException;
+import java.security.PublicKey;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.KeyInfoFactory
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class KeyInfoFactoryTest extends TestCase {
+
+    KeyInfoFactory factory;
+
+    public KeyInfoFactoryTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	factory = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetInstance() {
+	try {
+	    KeyInfoFactory fac = KeyInfoFactory.getInstance("non-existent");
+	    fail("Should throw NoSuchMechanismException if no impl found");
+	} catch (NoSuchMechanismException ex) {}
+
+	try {
+	    KeyInfoFactory fac = KeyInfoFactory.getInstance(null);
+	    fail("Should raise a NPE for null xmltype"); 
+	} catch (NullPointerException npe) {}
+    }
+
+    public void testgetMechanismType() {
+	assertNotNull(factory);
+	assertEquals("DOM", factory.getMechanismType());
+    }
+
+    public void testisFeatureSupported() {
+	try {
+	    factory.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!factory.isFeatureSupported("not supported"));
+    }
+
+    public void testnewKeyInfo() {
+	String id = "keyId";
+	// test newKeyInfo(List, String)
+	KeyInfo ki = factory.newKeyInfo
+	    (Collections.singletonList(factory.newKeyName("foo")), id);
+	assertEquals(id, ki.getId());
+	try {
+	    ki = factory.newKeyInfo(null, id); 
+	    fail("Should raise a NPE for null key info types"); 
+	} catch (NullPointerException npe) {}
+    }
+
+    public void testnewKeyName() {
+	final String name = "keyName";
+	KeyName kn = factory.newKeyName(name);
+	assertEquals(name, kn.getName());
+	try {
+	    kn = factory.newKeyName(null); 
+	    fail("Should raise a NPE for null key name"); 
+	} catch (NullPointerException npe) {}
+    }
+
+    public void testnewKeyValue() {
+	// test newKeyValue(PublicKey pk)
+	PublicKey myPubKey = new PublicKey() {
+		public byte[] getEncoded() {
+		    return new byte[20];
+		}
+		public String getFormat() {
+		    return "none";
+		}
+		public String getAlgorithm() {
+		    return "test";
+		}
+	    };
+	try {
+	    KeyValue kv = factory.newKeyValue(myPubKey);
+	    assertEquals(myPubKey, kv.getPublicKey());
+	    fail("Should throw a KeyException");
+	} catch (KeyException ke) { }
+  
+	try {
+	    KeyValue kv = factory.newKeyValue((PublicKey) null); 
+	    fail("Should raise a NPE for null key"); 
+	} catch (KeyException ke) {
+	    fail("Should raise a NPE for null key"); 
+	} catch (NullPointerException npe) {}
+    }
+
+    public void testnewPGPKeyId() {
+	byte[] valid_id = { 
+	    0x01, 0x02, 0x03, 0x04,
+	    0x05, 0x06, 0x07, 0x08 
+	};
+	byte[] invalid_id = {
+	    0x01, 0x02, 0x03, 0x04,
+	    0x05, 0x06, 0x07, 0x08,
+	    0x09
+	};
+	byte[] valid_packet = { (byte)0xc6, (byte)0x01, (byte)0x00 };
+	byte[] invalid_packet = { (byte)0xc8, (byte)0x01, (byte)0x00 };
+
+	// test newPGPData(byte[])
+	PGPData pd = factory.newPGPData(valid_id);
+	assertTrue(Arrays.equals(valid_id, pd.getKeyId()));
+	try {
+	    pd = factory.newPGPData(invalid_id);
+	    fail("Should throw IAE for invalid key id values");
+	} catch (IllegalArgumentException ex) {}
+
+	// test newPGPData(byte[], byte[], List)
+	pd = factory.newPGPData(valid_id, valid_packet, null);
+	assertTrue(Arrays.equals(valid_id, pd.getKeyId()));
+	assertTrue(Arrays.equals(valid_packet, pd.getKeyPacket()));
+	try {
+	    pd = factory.newPGPData(invalid_id, valid_packet, null);
+	    fail("Should throw IAE for invalid key id values");
+	} catch (IllegalArgumentException ex) {}
+	try {
+	    pd = factory.newPGPData(valid_id, invalid_packet, null);
+	    fail("Should throw IAE for invalid key packet values");
+	} catch (IllegalArgumentException ex) {}
+	try {
+	    pd = factory.newPGPData(invalid_id, invalid_packet, null);
+	    fail("Should throw IAE for invalid key id and packet values");
+	} catch (IllegalArgumentException ex) {}
+
+	// test newPGPData(byte[], List)
+	pd = factory.newPGPData(valid_packet, null);
+	assertTrue(Arrays.equals(valid_packet, pd.getKeyPacket()));
+	try {
+	    pd = factory.newPGPData(invalid_packet, null);
+	    fail("Should throw IAE for invalid key packet values");
+	} catch (IllegalArgumentException ex) {}
+    }
+
+    public void testnewRetrievalMethod() throws Exception {
+        final String uri = "#X509CertChain";
+        // test RetrievalMethod(String)
+        RetrievalMethod rm = factory.newRetrievalMethod(uri);
+	assertEquals(uri, rm.getURI());
+
+	try {
+	    rm = factory.newRetrievalMethod(null); 
+	    fail("Should raise a NPE for null URI"); 
+        } catch (NullPointerException npe) {}
+
+	// test RetrievalMethod(String, String, List)	
+	try {
+	    rm = factory.newRetrievalMethod(null, null, null); 
+	    fail("Should raise a NPE for null URI"); 
+        } catch (NullPointerException npe) {}
+	
+	String type = "http://www.w3.org/2000/09/xmldsig#X509Data";
+	try {
+	    rm = factory.newRetrievalMethod(null, type, null); 
+	    fail("Should raise a NPE for null URI"); 
+        } catch (NullPointerException npe) {}
+
+        rm = factory.newRetrievalMethod(uri, type, null);
+        assertEquals(uri, rm.getURI());
+        assertEquals(type, rm.getType());
+    }
+
+    public void testnewX509Data() {
+	// test newX509Data(List)
+	X509Data x509 = 
+	    factory.newX509Data(Collections.singletonList("cn=foo"));
+	assertNotNull(x509);
+    }
+
+    public void testnewX509IssuerSerial() {
+	String name = "CN=valeriep";
+	// test newX509IssuerSerial(String, BigInteger)
+	X509IssuerSerial x509is = factory.newX509IssuerSerial(name, 
+							      BigInteger.ONE);
+	assertEquals(name, x509is.getIssuerName());
+	assertEquals(BigInteger.ONE, x509is.getSerialNumber());
+	try {
+	    x509is = factory.newX509IssuerSerial(null, BigInteger.ZERO);
+	    fail("Should raise an NPE for null issuer names"); 
+	} catch (NullPointerException ex) {
+	} catch (IllegalArgumentException ex2) {
+	    fail("Should throw NPE instead of IAE for null issuer names");
+	}
+	try {
+	    x509is = factory.newX509IssuerSerial(name, null);
+	    fail("Should raise an NPE for null serial numbers"); 
+	} catch (NullPointerException ex) {
+	} catch (IllegalArgumentException ex2) {
+	    fail("Should throw NPE instead of IAE for null serial numbers");
+	}
+	try {
+	    x509is = factory.newX509IssuerSerial(null, null);
+	    fail("Should raise an NPE for null issuer names/serial numbers"); 
+	} catch (NullPointerException ex) {
+	} catch (IllegalArgumentException ex2) {
+	    fail("Should throw NPE instead of IAE for null issuer " + 
+		 "names/serial numbers");
+	}
+	try {
+	    x509is = factory.newX509IssuerSerial("valeriep", BigInteger.ZERO);
+	    fail("Should throw IAE for invalid issuer names"); 
+	} catch (IllegalArgumentException ex) {}
+    }
+
+    // for debugging purposes
+    public static void main(String[] args) throws Exception {
+	KeyInfoFactoryTest kifTest = 
+	    new KeyInfoFactoryTest("KeyInfoFactoryTest");
+	kifTest.setUp();
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyInfoTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyInfoTest.java
new file mode 100644
index 0000000..dca799d
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyInfoTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import java.util.*;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.KeyInfo
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class KeyInfoTest extends TestCase {
+
+    private KeyInfoFactory fac;
+
+    public KeyInfoTest() {
+	super("KeyInfoTest");
+    }
+
+    public KeyInfoTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetId() {
+	KeyInfo ki = fac.newKeyInfo
+	    (Collections.singletonList(fac.newKeyName("foo")), "skeleton");
+	assertNotNull(ki.getId());
+    }
+
+    public void testgetContent() {
+	KeyInfo[] infos = new KeyInfo[2];
+	infos[0] = fac.newKeyInfo
+	    (Collections.singletonList(fac.newKeyName("foo")), "skeleton");
+	infos[1] = fac.newKeyInfo
+	    (Collections.singletonList(fac.newKeyName("foo")));
+	for (int j=0; j < infos.length; j++) {
+	    KeyInfo ki = infos[j];
+	    List li = ki.getContent();
+	    assertNotNull(ki.getContent());
+	    if (!li.isEmpty()) {
+		Object[] content = li.toArray();
+		for (int i=0; i<content.length; i++) {
+		    if (!(content[i] instanceof XMLStructure)) {
+			fail("KeyInfo element has the wrong type");
+		    };
+		}
+	    } else {
+		try {
+		    li.add(new Object());
+		    fail("Added KeyInfo element of wrong type");
+		} catch (ClassCastException ex) {
+		    // expected
+		}
+	    }
+	}
+    }
+
+    public void testConstructor() {
+	final String id = "keyId";
+	// test newKeyInfo(List, String id)
+	KeyInfo ki = fac.newKeyInfo
+	    (Collections.singletonList(fac.newKeyName("foo")), id);
+	assertEquals(id, ki.getId());
+	try {
+	    ki = fac.newKeyInfo(null, id); 
+	    fail("Should raise a NullPointerException"); 
+	} catch (NullPointerException npe) {}
+	// test newKeyInfo(List)
+	ki = fac.newKeyInfo(Collections.singletonList(fac.newKeyName("foo")));
+    }
+
+    public void testisFeatureSupported() {
+	KeyInfo ki = fac.newKeyInfo
+	    (Collections.singletonList(fac.newKeyName("foo")), "keyid");
+	try {
+	    ki.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!ki.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyNameTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyNameTest.java
new file mode 100644
index 0000000..246e90f
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyNameTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.KeyName
+ *
+ * @version $Id$
+ * @author Sean Mullan
+ */
+public class KeyNameTest extends TestCase {
+
+    private KeyInfoFactory fac;
+
+    public KeyNameTest() {
+	super("KeyNameTest");
+    }
+
+    public KeyNameTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetName() {
+	KeyName kn = fac.newKeyName("skeleton");
+	assertNotNull(kn.getName());
+    }
+
+    public void testConstructor() {
+	final String name = "keyName";
+	KeyName kn = fac.newKeyName(name);
+	assertEquals(name, kn.getName());
+	try {
+	    kn = fac.newKeyName(null); 
+	    fail("Should raise a NullPointerException"); 
+	} catch (NullPointerException npe) {}
+    }
+
+    public void testisFeatureSupported() {
+	KeyName kn = fac.newKeyName("keyName");
+	try {
+	    kn.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+
+	assertTrue(!kn.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyValueTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyValueTest.java
new file mode 100644
index 0000000..f93df6d
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/KeyValueTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import java.io.*;
+import java.security.*;
+import java.security.interfaces.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.KeyValue
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class KeyValueTest extends TestCase {
+
+    private static final String[] ALGOS = { "DSA", "RSA" };
+    private KeyInfoFactory fac;
+    private PublicKey keys[] = null;
+
+    public KeyValueTest() {
+	super("KeyValueTest");
+    }
+
+    public KeyValueTest(String name) {
+	super(name);
+    }
+
+    private PublicKey genPublicKey(String algo, int keysize) throws Exception {
+        KeyPairGenerator kpg = KeyPairGenerator.getInstance(algo);
+        kpg.initialize(keysize, new SecureRandom(("Not so random bytes" 
+	    + System.currentTimeMillis() ).getBytes() ));
+        KeyPair kp = kpg.generateKeyPair();
+        return kp.getPublic();
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	// generate PublicKey(s) and XMLStructure(s) for DSA and RSA
+	keys = new PublicKey[ALGOS.length];
+
+	for (int i = 0; i<ALGOS.length; i++) {
+	    keys[i] = genPublicKey(ALGOS[i], 512);
+	}
+    }
+
+    public void tearDown() { }
+
+    public void testgetPublicKey() {
+	try {
+	    KeyValue kv = fac.newKeyValue(keys[0]);
+	    assertNotNull(kv.getPublicKey());
+        } catch (KeyException ke) {
+	    fail("Should pass instead of throwing KeyException");
+        }
+    }
+
+    public void testConstructor() {
+	// test newKeyValue(PublicKey pk)
+	for (int i = 0; i < keys.length; i++) {
+	    try {
+	        KeyValue kv = fac.newKeyValue(keys[i]);
+	        assertEquals(keys[i], kv.getPublicKey());
+	    } catch (KeyException ke) {
+		fail("Should pass instead of throwing KeyException");
+	    }
+	}
+    }
+
+    public void testisFeatureSupported() {
+	KeyValue kv = null;
+        try {
+	    kv = fac.newKeyValue(keys[0]);
+	    kv.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+        } catch (KeyException ke) {
+	    fail("Should raise a NPE for null feature"); 
+        } catch (NullPointerException npe) {}
+	    
+        assertTrue(!kv.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/PGPDataTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/PGPDataTest.java
new file mode 100644
index 0000000..d7314e0
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/PGPDataTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.PGPData
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class PGPDataTest extends TestCase {
+
+    private KeyInfoFactory fac;
+    private byte[][] values = { 
+	{
+            0x01, 0x02, 0x03, 0x04,
+            0x05, 0x06, 0x07, 0x08
+	},
+	{
+	    (byte)0xc6, (byte)0x01, (byte)0x00
+	}
+    };
+
+    public PGPDataTest() {
+	super("PGPDataTest");
+    }
+
+    public PGPDataTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetExternalElements() {
+	PGPData[] pds = {
+	    fac.newPGPData(values[0]),
+	    fac.newPGPData(values[0], values[1], null),
+	    fac.newPGPData(values[1], null)
+	};
+	for (int i=0; i<pds.length; i++) {
+	    List li = pds[i].getExternalElements();
+	    assertNotNull(li);
+	    if (!li.isEmpty()) {
+		Object[] types = li.toArray();
+		for (int j=0; j<types.length; j++) {
+		    if (!(types[j] instanceof XMLStructure)) {
+			fail("PGP element has the wrong type");
+		    };
+		}
+	    } 
+        }
+	try {
+	    PGPData pd = fac.newPGPData
+		(values[0], Collections.singletonList(new Object()));
+	    fail("Added PGP element of wrong type");
+	} catch (ClassCastException ex) {
+	    // expected
+	}
+    }
+
+    public void testgetKeyId() {
+	PGPData pd = fac.newPGPData(values[0]);
+	assertNotNull(pd.getKeyId());
+	pd = fac.newPGPData(values[0], values[1], null);
+	assertNotNull(pd.getKeyId());
+	pd = fac.newPGPData(values[1], null);
+    }
+
+    public void testgetKeyPacket() {
+	PGPData pd = fac.newPGPData(values[0]);
+	pd = fac.newPGPData(values[0], values[1], null);
+	assertNotNull(pd.getKeyPacket());
+        pd = fac.newPGPData(values[1], null);
+	assertNotNull(pd.getKeyPacket());
+    }
+
+    public void testConstructor() {
+	// test newPGPKeyData(byte[])
+	PGPData pd = fac.newPGPData(values[0]);
+	assertTrue(Arrays.equals(values[0], pd.getKeyId()));
+
+	// test newPGPData(byte[], byte[], List)
+	pd = fac.newPGPData(values[0], values[1], null);
+	assertTrue(Arrays.equals(values[0], pd.getKeyId()));
+	assertTrue(Arrays.equals(values[1], pd.getKeyPacket()));
+	    
+	// test newPGPData(byte[], List)
+	pd = fac.newPGPData(values[1], null);
+	assertTrue(Arrays.equals(values[1], pd.getKeyPacket()));
+    }
+
+    public void testisFeatureSupported() {
+	PGPData pd = null;
+	for (int i=0; i<3; i++) {
+	    switch (i) {
+	    case 0:
+		pd = fac.newPGPData(values[0]);
+		break;
+	    case 1:
+		pd = fac.newPGPData(values[0], values[1], null);
+		break;
+	    case 2:
+		pd = fac.newPGPData(values[1], null);
+	    }
+	    try {
+		pd.isFeatureSupported(null); 
+		fail("Should raise a NPE for null feature"); 
+	    } catch (NullPointerException npe) {}
+	    
+	    assertTrue(!pd.isFeatureSupported("not supported"));
+	}
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/RetrievalMethodTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/RetrievalMethodTest.java
new file mode 100644
index 0000000..9159a37
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/RetrievalMethodTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.RetrievalMethod
+ *
+ * @version $Id$
+ * @author Sean Mullan
+ */
+public class RetrievalMethodTest extends TestCase {
+
+    private KeyInfoFactory fac;
+
+    public RetrievalMethodTest() {
+	super("RetrievalMethodTest");
+    }
+
+    public RetrievalMethodTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetURI() {
+        RetrievalMethod rm = fac.newRetrievalMethod("#X509Data");
+        assertNotNull(rm.getURI());
+    }
+
+    public void testgetTransforms() {
+        RetrievalMethod rm = fac.newRetrievalMethod("#X509Data");
+        assertNotNull(rm.getTransforms());
+    }
+
+    public void testgetType() {
+        RetrievalMethod rm = fac.newRetrievalMethod("#X509Data");
+        assertNull(rm.getType());
+    }
+
+    public void testConstructors() {
+        final String uri = "#X509CertChain";
+        // test RetrievalMethod(String)
+        RetrievalMethod rm = fac.newRetrievalMethod(uri);
+        assertEquals(uri, rm.getURI());
+
+	try {
+	    rm = fac.newRetrievalMethod(null); 
+	    fail("Should raise a NullPointerException"); 
+        } catch (NullPointerException npe) {}
+
+	// test RetrievalMethod(String, String, Transform[])
+	try {
+	    rm = fac.newRetrievalMethod(null, null, null); 
+	    fail("Should raise a NullPointerException"); 
+        } catch (NullPointerException npe) {}
+
+        final String type = "http://www.w3.org/2000/09/xmldsig#X509Data";
+        rm = fac.newRetrievalMethod(uri, type, null);
+        assertEquals(uri, rm.getURI());
+        assertEquals(type, rm.getType());
+    }
+
+    public void testisFeatureSupported() throws Exception {
+	String uri = "#X509CertChain";
+        String type = "http://www.w3.org/2000/09/xmldsig#X509Data";
+	RetrievalMethod rm = null;
+	for (int i=0; i<2; i++) {
+	    switch (i) {
+	    case 0:
+		rm = fac.newRetrievalMethod(uri);
+		break;
+	    case 1:
+		rm = fac.newRetrievalMethod(uri, type, null);
+		break;
+	    }		
+	    try {
+		rm.isFeatureSupported(null); 
+		fail("Should raise a NPE for null feature"); 
+	    } catch (NullPointerException npe) {}
+	    
+	    assertTrue(!rm.isFeatureSupported("not supported"));
+	}
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/X509DataTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/X509DataTest.java
new file mode 100644
index 0000000..aa843c4
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/X509DataTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import java.util.*;
+import java.security.cert.X509Certificate;
+import java.security.cert.X509CRL;
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.X509Data
+ *
+ * @version $Id$
+ * @author Valerie Peng
+ */
+public class X509DataTest extends TestCase {
+
+    private KeyInfoFactory fac;
+
+    public X509DataTest() {
+	super("X509DataTest");
+    }
+
+    public X509DataTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+    }
+
+    public void tearDown() { }
+
+    public void testgetTypes() {
+	X509Data x509 = fac.newX509Data(Collections.singletonList("cn=foo"));
+	List li = x509.getContent();
+	assertNotNull(li);
+	if (!li.isEmpty()) {
+	    Object[] content = li.toArray();
+	    for (int j=0; j<content.length; j++) {
+		if (!(content[j] instanceof String) &&
+		    !(content[j] instanceof byte[]) &&
+		    !(content[j] instanceof X509Certificate) &&
+		    !(content[j] instanceof X509CRL) &&
+		    !(content[j] instanceof XMLStructure)) {
+		    fail("X509 element has the wrong type");
+		};
+	    }
+	} else {
+	    li.add("any string");
+	    li.add(new byte[5]);
+	    //@@@@@li.add(X509Certificate);
+	    //@@@@@li.add(X509CRL);
+	    //@@@@@li.add(XMLStructure);
+	    try {
+		li.add(new Object());
+		fail("Added X509 element of wrong type");
+	    } catch (ClassCastException ex) {
+		// expected
+	    }
+	}
+    }
+
+    public void testConstructor() {
+	// test newX509Data()
+	X509Data x509 = fac.newX509Data(Collections.singletonList("cn=foo"));
+	assertNotNull(x509);
+    }
+
+    public void testisFeatureSupported() {
+
+	X509Data x509 = fac.newX509Data(Collections.singletonList("cn=foo"));
+	try {
+	    x509.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+	
+	assertTrue(!x509.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/X509IssuerSerialTest.java b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/X509IssuerSerialTest.java
new file mode 100644
index 0000000..15e649c
--- /dev/null
+++ b/src_unitTests/javax/xml/crypto/test/dsig/keyinfo/X509IssuerSerialTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ */
+package javax.xml.crypto.test.dsig.keyinfo;
+
+import java.util.List;
+import java.util.Arrays;
+import java.math.BigInteger;
+import java.security.cert.X509Certificate;
+import java.security.cert.X509CRL;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dom.*;
+import javax.xml.crypto.dsig.keyinfo.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+import junit.framework.*;
+
+/**
+ * Unit test for javax.xml.crypto.dsig.keyinfo.X509IssuerSerial
+ *
+ * @version $Id: X509IssuerSerialTest.java,v 1.1 2004/04/07 21:11:36 mullan Exp $
+ * @author Valerie Peng
+ */
+public class X509IssuerSerialTest extends TestCase {
+
+    private KeyInfoFactory fac;
+    private String name;
+
+    public X509IssuerSerialTest() {
+	super("X509IssuerSerialTest");
+    }
+
+    public X509IssuerSerialTest(String name) {
+	super(name);
+    }
+
+    public void setUp() throws Exception { 
+	fac = KeyInfoFactory.getInstance
+	    ("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
+	name = "CN = Wolfgang";
+    }
+
+    public void tearDown() { }
+
+    public void testgetIssuerName() {
+	X509IssuerSerial x509is = fac.newX509IssuerSerial(name,BigInteger.ZERO);
+	assertNotNull(x509is.getIssuerName());	
+    }
+
+    public void testgetSerialNumber() {
+	X509IssuerSerial x509is = fac.newX509IssuerSerial(name,BigInteger.ZERO);
+	assertNotNull(x509is.getSerialNumber());	
+    }
+
+    public void testConstructor() {
+	// test newX509IssuerSerial(String, BigInteger)
+	X509IssuerSerial x509is = fac.newX509IssuerSerial(name, BigInteger.ONE);
+	assertEquals(name, x509is.getIssuerName());
+	assertEquals(BigInteger.ONE, x509is.getSerialNumber());
+    }
+
+    /*
+     * Confirm that an IllegalArgumentException is thrown when an issuer
+     * distinguished name does not conform to RFC 2253.
+     */
+    public void testConstructorBadIssuerName() {
+	// test newX509IssuerSerial(String, BigInteger)
+	String badName = "cn=bad,=+bad,";
+	try {
+	    fac.newX509IssuerSerial(badName,BigInteger.ONE);
+	    fail("Should raise an IllegalArgumentException when issuer " +
+		"distinguished name does not conform to RFC 2253"); 
+	} catch (IllegalArgumentException e) {
+	    // success
+	}
+    }
+
+    public void testisFeatureSupported() {
+	
+	X509IssuerSerial x509is = fac.newX509IssuerSerial(name, BigInteger.ONE);
+	try {
+	    x509is.isFeatureSupported(null); 
+	    fail("Should raise a NPE for null feature"); 
+	} catch (NullPointerException npe) {}
+	
+	assertTrue(!x509is.isFeatureSupported("not supported"));
+    }
+}
diff --git a/src_unitTests/org/apache/xml/security/c14n/implementations/NameSpaceSymbTableTest.java b/src_unitTests/org/apache/xml/security/c14n/implementations/NameSpaceSymbTableTest.java
new file mode 100644
index 0000000..bd1494e
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/c14n/implementations/NameSpaceSymbTableTest.java
@@ -0,0 +1,146 @@
+/*
+ * Created on Jan 27, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.xml.security.c14n.implementations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+
+
+import junit.framework.TestCase;
+
+/**
+ * @author raul
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class NameSpaceSymbTableTest extends TestCase {
+    
+	static Attr node1,node2;
+    static {
+    	try {
+            Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			node1=doc.createAttributeNS("a","b");
+            node2=doc.createAttributeNS("b","c");
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} 
+    }
+	public void testNullFirstXmlns() {
+		NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        assertNull(ns.getMapping("xmlns"));
+    }
+    public void testXmlnsPut() {
+        NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);
+        assertEquals(node1,ns.getMapping("xmlns"));
+    }
+    public void testXmlnsMap() {
+        NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);
+        assertEquals(node1,ns.getMapping("xmlns"));
+        ns.pop();
+        assertEquals(null,ns.getMapping("xmlns"));        
+    }
+    public void testXmlnsMap2() {
+        NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);        
+        ns.pop();
+        ns.pop();
+        assertEquals(null,ns.getMapping("xmlns"));        
+    }
+    public void testXmlnsPrefix() {
+        NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);
+        assertEquals(node1,ns.getMapping("xmlns"));
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);
+        assertEquals(null,ns.getMapping("xmlns"));     
+        ns.push();
+        ns.addMapping("xmlns","http://b",node1);
+        assertEquals(node1,ns.getMapping("xmlns"));
+    }
+    public void testXmlnsRemovePrefix() {
+        NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);
+        assertEquals(node1,ns.getMapping("xmlns"));
+        ns.pop();        
+        assertNull(ns.getMapping("xmlns"));             
+    }
+    public void testPrefix() {
+    	NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.addMapping("a","http://a",node1);
+        assertEquals(node1,ns.getMapping("a"));
+        ns.push();
+        assertNull(ns.getMapping("a"));
+        ns.push();
+        ns.addMapping("a","http://c",node1);
+        assertEquals(node1,ns.getMapping("a"));
+        ns.pop();
+        ns.push();
+        assertNull(ns.getMapping("a"));
+        ns.addMapping("a","http://c",node1);
+        assertEquals(node1,ns.getMapping("a"));
+    }
+    public void testSeveralPrefixes() {
+    	NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.addMapping("a","http://a",node1);
+        ns.addMapping("b","http://b",node2);
+        assertEquals(node1,ns.getMapping("a"));
+        assertEquals(node2,ns.getMapping("b"));
+        ns.push();
+        assertNull(ns.getMapping("a"));
+     }
+    public void testSeveralPrefixes2() {
+        NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        ns.addMapping("a","http://a",node1);
+        ns.push();        
+        assertEquals(node1,ns.getMapping("a"));
+        ns.pop();
+        assertEquals(node1,ns.getMapping("a"));
+        
+     }
+    public void testUnrederedNodes() {
+    	NameSpaceSymbTable ns=new NameSpaceSymbTable();
+        ns.push();
+        List l=new ArrayList();
+        ns.getUnrenderedNodes(l);
+        assertTrue(l.isEmpty());
+        l.clear();
+        ns.push();
+        ns.addMapping("xmlns","http://a",node1);
+        ns.push();
+        
+        ns.getUnrenderedNodes(l);
+        assertTrue(l.contains(node1));
+        ns.push();
+        l.clear();
+        ns.getUnrenderedNodes(l);
+        assertFalse(l.contains(node1));
+        ns.pop();
+        ns.pop();
+        l.clear();
+        ns.getUnrenderedNodes(l);
+        assertTrue(l.contains(node1));
+    }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/AllTests.java b/src_unitTests/org/apache/xml/security/test/AllTests.java
new file mode 100644
index 0000000..71a9cef
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/AllTests.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test;
+
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.XMLUtils;
+
+
+/**
+ * All org.apache.xml.security.test JUnit Tests
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class AllTests extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+			    AllTests.class.getName());
+
+   public AllTests(String test) {
+      super(test);
+   }
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+
+      TestSuite suite =
+         new TestSuite("All org.apache.xml.security.test JUnit Tests");
+
+      //J-
+      suite.addTest(org.apache.xml.security.test.ModuleTest.suite());
+      suite.addTest(org.apache.xml.security.test.InteropTest.suite());
+      //J+
+
+      return suite;
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      XMLUtils.spitOutVersions(log);
+      log.debug("java.class.path            : " + System.getProperty("java.class.path"));
+      log.debug("java.library.path          : " + System.getProperty("java.library.path"));
+      log.debug("java.runtime.name          : " + System.getProperty("java.runtime.name"));
+      log.debug("java.runtime.version       : " + System.getProperty("java.runtime.version"));
+      log.debug("java.specification.name    : " + System.getProperty("java.specification.name"));
+      log.debug("java.specification.vendor  : " + System.getProperty("java.specification.vendor"));
+      log.debug("java.specification.version : " + System.getProperty("java.specification.version"));
+      log.debug("java.vendor                : " + System.getProperty("java.vendor"));
+      log.debug("java.version               : " + System.getProperty("java.version"));
+      log.debug("java.vm.info               : " + System.getProperty("java.vm.info"));
+      log.debug("java.vm.name               : " + System.getProperty("java.vm.name"));
+      log.debug("java.vm.version            : " + System.getProperty("java.vm.version"));
+      log.debug("os.arch                    : " + System.getProperty("os.arch"));
+      log.debug("os.name                    : " + System.getProperty("os.name"));
+      log.debug("os.version                 : " + System.getProperty("os.version"));
+
+      boolean useTextUI = true;
+
+      if (useTextUI) {
+         // int counter = 100;
+         // long start = System.currentTimeMillis();
+         // for (int i=0; i<counter; i++) {
+            junit.textui.TestRunner.run(suite());
+         // }
+         // long end = System.currentTimeMillis();
+         // double delta = end - start;
+         // System.out.println(counter + " full tests took " + java.text.DecimalFormat.getInstance().format(delta / 1000.) + " seconds");
+
+      } else {
+         String[] testCaseName = { "-noloading", AllTests.class.getName() };
+
+         try {
+            String lookAndFeelClass =
+               "com.incors.plaf.kunststoff.KunststoffLookAndFeel";
+            javax.swing.LookAndFeel lnf =
+               (javax.swing.LookAndFeel) Class.forName(lookAndFeelClass)
+                  .newInstance();
+
+            javax.swing.UIManager.setLookAndFeel(lnf);
+         } catch (Exception ex) {}
+
+         junit.swingui.TestRunner.main(testCaseName);
+      }
+   }
+
+   static {
+    if (System.getProperty("basedir")==null) {
+        System.setProperty("basedir",System.getProperty("user.dir"));
+    }
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/CreateExclC14nInteropValues.java b/src_unitTests/org/apache/xml/security/test/CreateExclC14nInteropValues.java
new file mode 100644
index 0000000..b1f43b0
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/CreateExclC14nInteropValues.java
@@ -0,0 +1,502 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.xml.security.signature.ObjectContainer;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.InclusiveNamespaces;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Document;
+
+
+/**
+ * Class CreateExclC14nInteropValues
+ *
+ * @author $Author$
+ * @version $Revision$
+ */
+public class CreateExclC14nInteropValues {
+
+   /**
+    * Method main
+    *
+    * @param unused
+    * @throws Exception
+    */
+   public static void main(String unused[]) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.newDocument();
+      String directory = "data/org/apache/xml/security/c14n/outExcl/";
+      File signatureFile = new File(directory + "apacheSignature.xml");
+      XMLSignature xmlSignature = new XMLSignature(doc,
+                                     signatureFile.toURL().toString(),
+                                     XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+
+      doc.appendChild(xmlSignature.getElement());
+
+      {
+
+         // ref 0
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath(
+               "self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("iaikTests.example1.xml", tf);
+      }
+
+      {
+
+         // ref 1
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath(
+               "self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         tf.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
+         xmlSignature.addDocument("iaikTests.example1.xml", tf);
+      }
+
+      {
+
+         // ref 2
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPathNamespaceContext("xmlns:default", "http://example.org");
+            xc.setXPath(
+               "self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("iaikTests.example2.xml", tf);
+      }
+
+      {
+
+         // ref 3
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPathNamespaceContext("xmlns:default", "http://example.org");
+            xc.setXPath(
+               "self::Parent or (parent::Parent and not(self::default:Child)) or self::GrandChild or parent::GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         tf.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
+         xmlSignature.addDocument("iaikTests.example2.xml", tf);
+      }
+
+      {
+
+         // ref 4
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPathNamespaceContext("xmlns:default",
+                                        "http://example.org/default");
+            xc.setXPathNamespaceContext("xmlns:ns1", "http://example.org/ns1");
+            xc.setXPath(
+               "self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("iaikTests.example3.xml", tf);
+      }
+
+      {
+
+         // ref 5
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPathNamespaceContext("xmlns:default",
+                                        "http://example.org/default");
+            xc.setXPathNamespaceContext("xmlns:ns1", "http://example.org/ns1");
+            xc.setXPath(
+               "self::default:Parent or (parent::default:Parent and not(self::default:Child)) or self::ns1:GrandChild or parent::ns1:GrandChild or self::default:GrandChild or parent::default:GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         tf.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
+         xmlSignature.addDocument("iaikTests.example3.xml", tf);
+      }
+
+      {
+
+         // ref 6
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPathNamespaceContext("xmlns:ns1", "http://example.org/ns1");
+            xc.setXPath(
+               "self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("iaikTests.example4.xml", tf);
+      }
+
+      {
+
+         // ref 7
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPathNamespaceContext("xmlns:ns1", "http://example.org/ns1");
+            xc.setXPath(
+               "self::Parent or (parent::Parent and not(self::Child)) or self::ns1:GrandChild or parent::ns1:GrandChild");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         {
+            InclusiveNamespaces incNS = new InclusiveNamespaces(doc, "ns2");
+
+            tf.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS,
+                            incNS.getElement());
+         }
+
+         xmlSignature.addDocument("iaikTests.example4.xml", tf);
+      }
+
+      {
+
+         // ref 8
+         ObjectContainer obj = new ObjectContainer(doc);
+         String id = "object1";
+
+         obj.setId(id);
+
+         String xmlStr = "" + "<included    xml:lang='de'>" + "\n"
+                         + "<notIncluded xml:lang='de'>" + "\n"
+                         + "<notIncluded xml:lang='uk'>" + "\n"
+                         + "<included                 >" + "\n" + "</included>"
+                         + "\n" + "</notIncluded>" + "\n" + "</notIncluded>"
+                         + "\n" + "</included>";
+         Document importDoc =
+            db.parse(new ByteArrayInputStream(xmlStr.getBytes()));
+
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         obj.getElement()
+            .appendChild(doc.importNode(importDoc.getDocumentElement(), true));
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         xmlSignature.appendObject(obj);
+
+         // ref apache_8
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 9
+         ObjectContainer obj = new ObjectContainer(doc);
+         String id = "object2";
+
+         obj.setId(id);
+
+         String xmlStr = "" + "<included    xml:lang='uk'>" + "\n"
+                         + "<notIncluded xml:lang='de'>" + "\n"
+                         + "<notIncluded xml:lang='uk'>" + "\n"
+                         + "<included                 >" + "\n" + "</included>"
+                         + "\n" + "</notIncluded>" + "\n" + "</notIncluded>"
+                         + "\n" + "</included>";
+         Document importDoc =
+            db.parse(new ByteArrayInputStream(xmlStr.getBytes()));
+
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         obj.getElement()
+            .appendChild(doc.importNode(importDoc.getDocumentElement(), true));
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         xmlSignature.appendObject(obj);
+
+         // ref apache_8
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 10
+         ObjectContainer obj = new ObjectContainer(doc);
+         String id = "object3";
+
+         obj.setId(id);
+
+         String xmlStr = "" + "<included    xml:lang='de'>" + "\n"
+                         + "<notIncluded xml:lang='de'>" + "\n"
+                         + "<notIncluded xml:lang='uk'>" + "\n"
+                         + "<included    xml:lang='de'>" + "\n" + "</included>"
+                         + "\n" + "</notIncluded>" + "\n" + "</notIncluded>"
+                         + "\n" + "</included>";
+         Document importDoc =
+            db.parse(new ByteArrayInputStream(xmlStr.getBytes()));
+
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         obj.getElement()
+            .appendChild(doc.importNode(importDoc.getDocumentElement(), true));
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         xmlSignature.appendObject(obj);
+
+         // ref apache_8
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 11
+         ObjectContainer obj = new ObjectContainer(doc);
+         String id = "object4";
+
+         obj.setId(id);
+
+         String xmlStr = "" + "<included    xml:lang='de'>" + "\n"
+                         + "<included    xml:lang='de'>" + "\n"
+                         + "<notIncluded xml:lang='uk'>" + "\n"
+                         + "<included                 >" + "\n" + "</included>"
+                         + "\n" + "</notIncluded>" + "\n" + "</included>"
+                         + "\n" + "</included>";
+         Document importDoc =
+            db.parse(new ByteArrayInputStream(xmlStr.getBytes()));
+
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         obj.getElement()
+            .appendChild(doc.importNode(importDoc.getDocumentElement(), true));
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         xmlSignature.appendObject(obj);
+
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 12
+         ObjectContainer obj = new ObjectContainer(doc);
+         String id = "object5";
+
+         obj.setId(id);
+
+         String xmlStr = "" + "<included                         xml:lang='de'>"
+                         + "\n"
+                         + "<included                         xml:lang='de'>"
+                         + "\n"
+                         + "<notIncluded xml:space='preserve' xml:lang='uk'>"
+                         + "\n" + "<included                 >" + "\n"
+                         + "</included>" + "\n" + "</notIncluded>" + "\n"
+                         + "</included>" + "\n" + "</included>";
+         Document importDoc =
+            db.parse(new ByteArrayInputStream(xmlStr.getBytes()));
+
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         obj.getElement()
+            .appendChild(doc.importNode(importDoc.getDocumentElement(), true));
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         xmlSignature.appendObject(obj);
+
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 13
+         ObjectContainer obj = new ObjectContainer(doc);
+         String id = "object6";
+
+         obj.setId(id);
+
+         String xmlStr = "" + "<included   xml:space='preserve'  xml:lang='de'>"
+                         + "\n"
+                         + "<included                         xml:lang='de'>"
+                         + "\n"
+                         + "<notIncluded                      xml:lang='uk'>"
+                         + "\n" + "<included>" + "\n" + "</included>" + "\n"
+                         + "</notIncluded>" + "\n" + "</included>" + "\n"
+                         + "</included>";
+         Document importDoc =
+            db.parse(new ByteArrayInputStream(xmlStr.getBytes()));
+
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         obj.getElement()
+            .appendChild(doc.importNode(importDoc.getDocumentElement(), true));
+         obj.getElement().appendChild(doc.createTextNode("\n"));
+         xmlSignature.appendObject(obj);
+
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 13b
+         String id = "object6";
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+            tf.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+      }
+
+      {
+
+         // ref 13c
+         String id = "object6";
+         Transforms tf = new Transforms(doc);
+
+         {
+            XPathContainer xc = new XPathContainer(doc);
+
+            xc.setXPath("self::node()[local-name()='included']");
+            tf.addTransform(Transforms.TRANSFORM_XPATH, xc.getElement());
+            tf.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);
+            tf.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);
+         }
+
+         xmlSignature.addDocument("#" + id, tf);
+         // xmlSignature.addDocument("#" + id, tf, org.apache.xml.security.algorithms.MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1, "ref13c", null);
+      }
+
+      String secretKey = "secret";
+
+      xmlSignature.getKeyInfo().addKeyName("The UTF-8 octets of \"" + secretKey
+                                           + "\" are used for signing ("
+                                           + secretKey.length() + " octets)");
+      xmlSignature.sign(xmlSignature.createSecretKey(secretKey.getBytes()));
+
+      FileOutputStream fos = new FileOutputStream(signatureFile);
+
+      XMLUtils.outputDOM(doc, fos);
+      fos.close();
+
+      int length = xmlSignature.getSignedInfo().getLength();
+
+      for (int i = 0; i < length; i++) {
+         String fname = directory + "c14n-" + i + "-apache.xml";
+
+         System.out.println(fname);
+         JavaUtils.writeBytesToFilename(fname, xmlSignature.getSignedInfo().getReferencedContentAfterTransformsItem(i).getBytes());
+      }
+
+      XMLSignature s = new XMLSignature(doc.getDocumentElement(),
+                                        signatureFile.toURL().toString());
+      boolean verify =
+         s.checkSignatureValue(s.createSecretKey("secret".getBytes()));
+
+      System.out.println("verify=" + verify);
+
+      System.out.println("");
+
+      XMLUtils.outputDOMc14nWithComments(doc, System.out);
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/EncryptionTest.java b/src_unitTests/org/apache/xml/security/test/EncryptionTest.java
new file mode 100644
index 0000000..a429ab3
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/EncryptionTest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.test;
+
+import java.security.Security;
+
+import org.apache.xml.security.test.encryption.XMLCipherTester;
+import org.apache.xml.security.test.encryption.BaltimoreEncTest;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+
+public class EncryptionTest extends TestCase {
+    public EncryptionTest(String test) {
+       super(test);
+    }
+
+    public static void main(String[] args) {
+		org.apache.xml.security.Init.init();
+        
+        processCmdLineArgs(args);
+        TestRunner.run(suite());
+    }
+
+    public static Test suite() {
+        TestSuite suite = new TestSuite("DOM XML Encryption Tests");
+        suite.addTest(new TestSuite(XMLCipherTester.class));
+        suite.addTest(new TestSuite(BaltimoreEncTest.class));
+        return (suite);
+    }
+
+    private static void processCmdLineArgs(String[] args) {
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].startsWith("-d")) {
+                String doc = args[i].substring(2).trim();
+                System.setProperty("org.apache.xml.enc.test.doc", doc);
+            } else if (args[i].startsWith("-e")) {
+                String elem = args[i].substring(2).trim();
+                System.setProperty("org.apache.xml.enc.test.elem", elem);
+            } else if (args[i].startsWith("-i")) {
+                String idx = args[i].substring(2).trim();
+                System.setProperty("org.apache.xml.enc.test.idx", idx);
+            }
+        }
+    }
+}
+
diff --git a/src_unitTests/org/apache/xml/security/test/InteropTest.java b/src_unitTests/org/apache/xml/security/test/InteropTest.java
new file mode 100644
index 0000000..a2795c8
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/InteropTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test;
+
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.XMLUtils;
+
+/**
+ *
+ * @author $Author$
+ */
+
+public class InteropTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(InteropTest.class.getName());
+
+   public InteropTest(String test) {
+      super(test);
+   }
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+
+      TestSuite suite =
+         new TestSuite("All interoperability tests");
+
+      //J-
+      // interoperability tests using test vectors from other implementations
+      suite.addTest(org.apache.xml.security.test.interop.BaltimoreTest.suite());
+      suite.addTest(org.apache.xml.security.test.interop.IAIKTest.suite());
+      suite.addTest(org.apache.xml.security.test.interop.RSASecurityTest.suite());
+      suite.addTest(org.apache.xml.security.test.c14n.implementations.ExclusiveC14NInterop.suite());
+
+      {
+         /*
+          * To make interop against the IBM xss4j examples, download the
+          * XSS4j from http://www.alphaworks.ibm.com/tech/xmlsecuritysuite
+          * and extract the test signatures from
+          * xss4j-20030127.zip#/xss4j/data/dsig
+          * in the directory
+          * data/com/ibm/xss4j-20030127/
+          * then the interop test is performed against these values, too.
+          */
+         String filename = "data/com/ibm/xss4j-20011029/enveloped-rsa.sig";
+         File f = new File(filename);
+         if (f.exists()) {
+            suite.addTest(org.apache.xml.security.test.interop.IBMTest.suite());
+         }
+      }
+
+      //J+
+      return suite;
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      XMLUtils.spitOutVersions(log);
+
+      boolean useTextUI = true;
+
+      if (useTextUI) {
+         junit.textui.TestRunner.run(suite());
+      } else {
+         String[] testCaseName = { "-noloading", InteropTest.class.getName() };
+
+         try {
+            String lookAndFeelClass =
+               "com.incors.plaf.kunststoff.KunststoffLookAndFeel";
+            javax.swing.LookAndFeel lnf =
+               (javax.swing.LookAndFeel) Class.forName(lookAndFeelClass)
+                  .newInstance();
+
+            javax.swing.UIManager.setLookAndFeel(lnf);
+         } catch (Exception ex) {}
+
+         junit.swingui.TestRunner.main(testCaseName);
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
\ No newline at end of file
diff --git a/src_unitTests/org/apache/xml/security/test/ModuleTest.java b/src_unitTests/org/apache/xml/security/test/ModuleTest.java
new file mode 100644
index 0000000..c01a57c
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/ModuleTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright  2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.XMLUtils;
+
+public class ModuleTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(ModuleTest.class.getName());
+
+   public ModuleTest(String test) {
+      super(test);
+   }
+
+   /**
+    * Method suite
+    *
+    *
+    */
+
+   public static Test suite() {
+
+      TestSuite suite =
+         new TestSuite("All org.apache.xml.security.test JUnit Tests");
+
+      //J-
+      suite.addTest(org.apache.xml.security.test.c14n.helper.C14nHelperTest.suite());
+      suite.addTest(org.apache.xml.security.test.c14n.implementations.Canonicalizer20010315Test.suite());
+      suite.addTest(org.apache.xml.security.test.c14n.implementations.Canonicalizer20010315ExclusiveTest.suite());
+      suite.addTest(org.apache.xml.security.test.external.org.apache.xalan.XPathAPI.XalanBug1425Test.suite());
+      suite.addTest(org.apache.xml.security.test.external.org.apache.xalan.XPathAPI.AttributeAncestorOrSelfTest.suite());
+      suite.addTest(org.apache.xml.security.test.signature.XMLSignatureInputTest.suite());
+      suite.addTest(org.apache.xml.security.test.transforms.implementations.TransformBase64DecodeTest.suite());
+      suite.addTest(org.apache.xml.security.test.utils.resolver.ResourceResolverSpiTest.suite());
+      suite.addTest(org.apache.xml.security.test.utils.Base64Test.suite());
+      // suite.addTest(org.apache.xml.security.test.algorithms.implementations.KeyWrapTest.suite());
+      // suite.addTest(org.apache.xml.security.test.algorithms.implementations.BlockEncryptionTest.suite());
+      //J+
+
+      return suite;
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      XMLUtils.spitOutVersions(log);
+
+      boolean useTextUI = true;
+
+      if (useTextUI) {
+         junit.textui.TestRunner.run(suite());
+      } else {
+         String[] testCaseName = { "-noloading", ModuleTest.class.getName() };
+
+         try {
+            String lookAndFeelClass =
+               "com.incors.plaf.kunststoff.KunststoffLookAndFeel";
+            javax.swing.LookAndFeel lnf =
+               (javax.swing.LookAndFeel) Class.forName(lookAndFeelClass)
+                  .newInstance();
+
+            javax.swing.UIManager.setLookAndFeel(lnf);
+         } catch (Exception ex) {}
+
+         junit.swingui.TestRunner.main(testCaseName);
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+
+}
diff --git a/src_unitTests/org/apache/xml/security/test/c14n/helper/AttrCompareTest.java b/src_unitTests/org/apache/xml/security/test/c14n/helper/AttrCompareTest.java
new file mode 100644
index 0000000..60f6746
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/c14n/helper/AttrCompareTest.java
@@ -0,0 +1,265 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.c14n.helper;
+
+
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.helper.AttrCompare;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+
+/**
+ * Unit test for {@link org.apache.xml.security.c14n.AttrCompare#compare}
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class AttrCompareTest extends TestCase {
+
+   /**
+    * Method suite
+    *
+    * @return
+    */
+   public static Test suite() {
+      return new TestSuite(AttrCompareTest.class);
+   }
+
+   /**
+    * Constructor AttrCompareTest
+    *
+    * @param Name_
+    */
+   public AttrCompareTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", AttrCompareTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method createAttr
+    *
+    * @param doc
+    * @param QName
+    * @param Value
+    * @param NamespaceURI
+    * @return
+    */
+   private static Attr createAttr(Document doc, String QName, String Value,
+                                  String NamespaceURI) {
+
+      Attr attr = null;
+
+      if ((NamespaceURI != null) && (NamespaceURI.length() > 0)) {
+         attr = doc.createAttributeNS(NamespaceURI, QName);
+      } else {
+         attr = doc.createAttributeNS(null, QName);
+      }
+
+      attr.appendChild(doc.createTextNode(Value));
+
+      return attr;
+   }
+
+   /**
+    * Method createDoc
+    *
+    * @param documentElement
+    * @return
+    * @throws ParserConfigurationException
+    */
+   private static Document createDoc(String documentElement)
+           throws ParserConfigurationException {
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+      DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
+
+      dfactory.setNamespaceAware(true);
+
+      Document doc = documentBuilder.newDocument();
+      Element root = doc.createElementNS(null, documentElement);
+
+      doc.appendChild(root);
+
+      return doc;
+   }
+
+   /**
+    * Method testA1
+    *
+    * @throws ParserConfigurationException
+    */
+   public static void testA1() throws ParserConfigurationException {
+
+      Document doc = createDoc("documentElement");
+      Element root = doc.getDocumentElement();
+      Attr attr0 = createAttr(doc, "xmlns", "http://default/", Constants.NamespaceSpecNS);
+      Attr attr1 = createAttr(doc, "xmlns:b", "http://val1/", Constants.NamespaceSpecNS);
+
+      root.setAttributeNode(attr0);
+      root.setAttributeNode(attr1);
+
+      NamedNodeMap nnm = root.getAttributes();
+
+      assertEquals("nnm.getLength()", nnm.getLength(), 2);
+
+      Attr attr00 = (Attr) nnm.item(0);
+      Attr attr10 = (Attr) nnm.item(1);
+
+      assertNotNull("Attribute attr00", attr00);
+      assertNotNull("Attribute attr10", attr10);
+
+      AttrCompare attrCompare = new AttrCompare();
+
+      assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
+      assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
+   }
+
+   public static void testA2() throws ParserConfigurationException {
+
+      Document doc = createDoc("documentElement");
+      Attr attr0 = doc.createAttributeNS(null, "foo");
+      Attr attr1 = doc.createAttributeNS("http://goo", "goo:foo");
+
+      System.out.println("Attr1: " + attr1 + " (" + attr1.getLocalName()  +")");
+
+
+      AttrCompare attrCompare = new AttrCompare();
+
+      assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
+      assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
+
+   }
+
+
+   /**
+    * Method testA2
+    *
+    * @throws ParserConfigurationException
+    */
+   public static void _testA2() throws ParserConfigurationException {
+
+      Document doc = createDoc("documentElement");
+      Element root = doc.getDocumentElement();
+      Attr attr0 = createAttr(doc, "aAttr", "val0", null);
+      Attr attr1 = createAttr(doc, "bAttr", "val1", null);
+
+      root.setAttributeNode(attr0);
+      root.setAttributeNode(attr1);
+
+      NamedNodeMap nnm = root.getAttributes();
+
+      assertEquals("nnm.getLength()", nnm.getLength(), 2);
+
+      Attr attr00 = (Attr) nnm.item(0);
+      Attr attr10 = (Attr) nnm.item(1);
+
+      assertNotNull("Attribute attr00", attr00);
+      assertNotNull("Attribute attr10", attr10);
+
+      AttrCompare attrCompare = new AttrCompare();
+
+      assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
+      assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
+   }
+
+   /**
+    * This test uses the attrs[] array to compare every attribute against
+    * the others (and vice versa).
+    *
+    * The attribute values are taken from example 3.3 Start and End Tags
+    * http://www.w3.org/TR/2001/REC-xml-c14n-20010315#Example-SETags
+    *
+    * @throws ParserConfigurationException
+    */
+   public static void testComplete() throws ParserConfigurationException {
+
+      /* <e5 xmlns="http://example.org"
+       *     xmlns:a="http://www.w3.org"
+       *     xmlns:b="http://www.ietf.org"
+       *     attr="I'm"
+       *     attr2="all"
+       *     b:attr="sorted"
+       *     a:attr="out"></e5>
+       */
+      Document doc = createDoc("documentElement");
+      Element root = doc.getDocumentElement();
+
+      // This List has to be ordered to verify correctness of the comparison
+      //J-
+      Attr attrs[] = {
+         createAttr(doc, "xmlns", "http://example.org", Constants.NamespaceSpecNS),
+         createAttr(doc, "xmlns:a", "http://www.w3.org", Constants.NamespaceSpecNS),
+         createAttr(doc, "xmlns:b", "http://www.ietf.org", Constants.NamespaceSpecNS),
+         createAttr(doc, "attr", "I'm", null),
+         createAttr(doc, "attr2", "all", null),
+         createAttr(doc, "b:attr", "sorted", "http://www.ietf.org"),
+         createAttr(doc, "a:attr", "out", "http://www.w3.org") };
+
+      //J+
+      for (int i = 0; i < attrs.length; i++) {
+         root.setAttributeNode(attrs[i]);
+      }
+
+      NamedNodeMap nnm = root.getAttributes();
+
+      assertEquals("nnm.getLength()", nnm.getLength(), attrs.length);
+
+      for (int i = 0; i < attrs.length; i++) {
+         Attr attr = attrs[i];
+
+         assertNotNull("Attribute attr", attr);
+      }
+
+      AttrCompare attrCompare = new AttrCompare();
+
+      for (int i = 0; i < attrs.length; i++) {
+         for (int j = i + 1; j < attrs.length; j++) {
+            Attr attr0 = attrs[i];
+            Attr attr1 = attrs[j];
+            assertTrue(attr0 + " < " + attr1, attrCompare.compare(attr0, attr1) < 0);
+            assertTrue(attr1 + " < " + attr0, attrCompare.compare(attr1, attr0) > 0);
+         }
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}    //public class AttrCompareTest extends TestCase
+
diff --git a/src_unitTests/org/apache/xml/security/test/c14n/helper/C14nHelperTest.java b/src_unitTests/org/apache/xml/security/test/c14n/helper/C14nHelperTest.java
new file mode 100644
index 0000000..a4d4daf
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/c14n/helper/C14nHelperTest.java
@@ -0,0 +1,150 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.c14n.helper;
+
+
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.helper.C14nHelper;
+
+
+/**
+ *
+ *
+ *
+ *
+ * @author Christian Geuer-Pollmann
+ *
+ */
+public class C14nHelperTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(C14nHelperTest.class.getName());
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(C14nHelperTest.class);
+   }
+
+   /**
+    * Constructor AttrCompareTest
+    *
+    * @param Name_
+    */
+   public C14nHelperTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", C14nHelperTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method testNamespaceIsAbsolute01
+    *
+    */
+   public void testNamespaceIsAbsolute01() {
+
+      String namespaceURI = "http://www.w3.org/Signature/";
+
+      assertTrue("URI fails: \"" + namespaceURI + "\"",
+                 C14nHelper.namespaceIsAbsolute(namespaceURI));
+   }
+
+   /**
+    *
+    *
+    * @see <A HREF="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JulSep/0068.html">The list</A>
+    */
+   public void testNamespaceIsAbsolute02() {
+
+      String namespaceURI = "http://www.w3.org/../blah";
+
+      assertTrue("URI fails: \"" + namespaceURI + "\"",
+                 C14nHelper.namespaceIsAbsolute(namespaceURI));
+   }
+
+   /**
+    * Method testNamespaceIsAbsolute03
+    *
+    */
+   public void testNamespaceIsAbsolute03() {
+
+      // unknown protocol?
+      String namespaceURI = "hxxp://www.w3.org/";
+
+      assertTrue("URI fails: \"" + namespaceURI + "\"",
+                 C14nHelper.namespaceIsAbsolute(namespaceURI));
+   }
+
+   /**
+    * Method testNamespaceIsRelative01
+    *
+    */
+   public void testNamespaceIsRelative01() {
+
+      String namespaceURI = "../blah";
+
+      assertTrue("URI fails: \"" + namespaceURI + "\"",
+                 C14nHelper.namespaceIsRelative(namespaceURI));
+   }
+
+   /**
+    * Method testNamespaceIsRelative02
+    *
+    */
+   public void testNamespaceIsRelative02() {
+
+      String namespaceURI = "blah";
+
+      assertTrue("URI fails: \"" + namespaceURI + "\"",
+                 C14nHelper.namespaceIsRelative(namespaceURI));
+   }
+
+   /**
+    * Method testNamespaceIsRelative03
+    *
+    */
+   public void __testNamespaceIsRelative03() {
+
+      String namespaceURI = "http://...";
+
+      assertTrue("URI fails: \"" + namespaceURI + "\"",
+                 C14nHelper.namespaceIsRelative(namespaceURI));
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/c14n/implementations/C14NInteropTest.java b/src_unitTests/org/apache/xml/security/test/c14n/implementations/C14NInteropTest.java
new file mode 100644
index 0000000..3daa81e
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/c14n/implementations/C14NInteropTest.java
@@ -0,0 +1,301 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.c14n.implementations;
+
+
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315OmitComments;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.test.interop.InteropTest;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.params.XPath2FilterContainer;
+import org.apache.xml.security.utils.Constants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * Unit test for {@link org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithXPath}
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class C14NInteropTest extends InteropTest {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(C14NInteropTest.class.getName());
+
+    static {
+        org.apache.xml.security.Init.init();
+    }
+    
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(C14NInteropTest.class);
+   }
+
+   /**
+    *  Constructor Canonicalizer20010315WithXPathTest
+    *
+    *  @param Name_
+    */
+   public C14NInteropTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main_(String[] args) {
+
+      String[] testCaseName = { "-noloading", C14NInteropTest.class.getName() };
+
+      org.apache.xml.security.Init.init();
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method test_Y1
+    *
+    * @throws Exception
+    */
+   public void test_Y1() throws Exception {
+
+      boolean success = t("data/interop/c14n/Y1", "exc-signature.xml");
+
+      assertTrue(success);
+   }
+
+   /**
+    * Method test_Y2
+    *
+    * @throws Exception
+    */
+   public void test_Y2() throws Exception {
+
+      boolean success = t("data/interop/c14n/Y2", "signature-joseph-exc.xml");
+
+      assertTrue(success);
+   }
+
+   /**
+    * Method test_Y3
+    *
+    * @throws Exception
+    */
+   public void test_Y3() throws Exception {
+
+      boolean success = t("data/interop/c14n/Y3", "signature.xml");
+
+      assertTrue(success);
+   }
+
+   /**
+    * Method test_Y4
+    *
+    * @throws Exception
+    */
+   public void test_Y4() throws Exception {
+
+      boolean success = t("data/interop/c14n/Y4", "signature.xml");
+
+      assertTrue(success);
+   }
+
+   /**
+    * Method _test_Y4_stripped
+    *
+    * @throws Exception
+    */
+   public void test_Y4_stripped() throws Exception {
+
+      // boolean success = t("data/interop/c14n/Y4", "signatureStripped.xml");
+      boolean success = t("data/interop/c14n/Y4", "signature.xml");
+
+      assertTrue(success);
+   }
+
+   /**
+    * Method t
+    *
+    * @param directory
+    * @param file
+    *
+    * @throws Exception
+    */
+   public boolean t(String directory, String file) throws Exception
+   {
+
+   	  String basedir = System.getProperty("basedir");
+   	  if(basedir != null && !"".equals(basedir)) {
+   		directory = basedir + "/" + directory;
+   	  }
+   	
+      File f = new File(directory + "/" + file);
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.parse(f);
+      long start = System.currentTimeMillis();
+
+      //XMLUtils.circumventBug2650(doc);
+
+      long end = System.currentTimeMillis();
+
+      log.debug("fixSubtree took " + (int) (end - start));
+
+      Element sigElement =
+         (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+                                              Constants._TAG_SIGNATURE).item(0);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+      boolean verify =
+         signature.checkSignatureValue(signature.getKeyInfo().getPublicKey());
+      int failures = 0;
+
+      if (!verify) {
+         for (int i = 0; i < signature.getSignedInfo().getLength(); i++) {
+            boolean refVerify =
+               signature.getSignedInfo().getVerificationResult(i);
+
+            if (refVerify) {
+               log.debug("Reference " + i + " was OK");
+            } else {
+               log.debug("Reference " + i + " failed");
+
+               failures++;
+
+               /*
+               XMLSignatureInput result =
+                  signature.getSignedInfo()
+                     .getReferencedContentAfterTransformsItem(i);
+
+               JavaUtils.writeBytesToFilename("data/temp" + "/c14n-" + i
+                                              + "-apache.txt", result
+                                                 .getBytes());
+               */
+            }
+         }
+      }
+
+      return verify;
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    * @throws Exception
+    */
+   public static void main(String[] args) throws Exception {
+
+      org.apache.xml.security.Init.init();
+
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.newDocument();
+      String nsA = "http://www.a.com/";
+      String nsB = "http://www.b.com/";
+
+      // String nsC = "http://www.c.com/";
+      Element A_A = doc.createElementNS(nsA, "A:A");
+      Element A_B = doc.createElementNS(nsA, "A:B");
+      Element A_C = doc.createElementNS(null, "C");
+
+      // Element A_C = doc.createElementNS(nsC, "A:C");
+      // Element A_D = doc.createElementNS(nsC, "A:D");
+      // Element A_E = doc.createElementNS(nsC, "A:E");
+      A_A.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "google://jsdfl/");
+      A_A.setAttributeNS(Constants.XML_LANG_SPACE_SpecNS, "xml:lang", "de");
+      A_A.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:A", nsA);
+      A_A.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:B", nsB);
+      A_A.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:C", "http://c.com/");
+      A_B.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:D", "http://c.com/");
+      A_B.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:E", "http://c.com/");
+      A_C.setAttributeNS(Constants.NamespaceSpecNS, "xmlns", "");
+      doc.appendChild(A_A);
+      A_A.appendChild(A_B);
+      A_B.appendChild(A_C);
+
+      log.debug("Created document");
+
+
+      Canonicalizer20010315OmitComments c = new Canonicalizer20010315OmitComments();
+      System.out.println(new String(c.engineCanonicalizeSubTree(doc)));
+
+      XMLSignature sig = new XMLSignature(doc, "", XMLSignature.ALGO_ID_MAC_HMAC_SHA1);
+      A_A.appendChild(sig.getElement());
+
+      Transforms transforms = new Transforms(doc);
+
+      XPath2FilterContainer xf2_1 = XPath2FilterContainer.newInstanceIntersect(doc, "//self::node()[local-name() = 'B']");
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, xf2_1.getElement());
+
+      XPath2FilterContainer xf2_2 = XPath2FilterContainer.newInstanceSubtract(doc, "//namespace::*[local-name()='B']");
+      transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER, xf2_2.getElement());
+
+      log.info("Created signature object");
+
+      sig.addDocument("", transforms);
+
+      log.info("Reference added");
+
+      sig.sign(sig.createSecretKey("secret".getBytes()));
+
+      log.info("Signing finished");
+
+      XMLSignatureInput s = sig.getSignedInfo().getReferencedContentAfterTransformsItem(0);
+      Set nodes = s.getNodeSet();
+      Iterator it = nodes.iterator();
+      while (it.hasNext()) {
+         Node n = (Node) it.next();
+         if (n.getNodeType() == Node.ATTRIBUTE_NODE) {
+            Element e = ((Attr)n).getOwnerElement();
+            System.out.println("<" + e.getTagName() + " " + n + " />");
+         } else if (n.getNodeType() == Node.ELEMENT_NODE) {
+            System.out.println("<" + ((Element)n).getTagName() + " />");
+         }
+      }
+      log.info("finished");
+
+      System.out.println("###########################");
+      System.out.println(new String(s.getBytes()));
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315ExclusiveTest.java b/src_unitTests/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315ExclusiveTest.java
new file mode 100644
index 0000000..2d3958b
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315ExclusiveTest.java
@@ -0,0 +1,359 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.c14n.implementations;
+
+
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315Excl;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclWithComments;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithComments;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+
+/**
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Canonicalizer20010315ExclusiveTest extends TestCase {
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                Canonicalizer20010315ExclusiveTest.class.getName());
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(Canonicalizer20010315ExclusiveTest.class);
+   }
+
+   /**
+    *  Constructor Canonicalizer20010315ExclusiveTest
+    *
+    *  @param Name_
+    */
+   public Canonicalizer20010315ExclusiveTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                Canonicalizer20010315ExclusiveTest.class
+                                   .getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /** Field dbf */
+   DocumentBuilderFactory dbf;
+
+   /** Field db */
+   DocumentBuilder db;
+
+   /**
+    * Method setUp
+    *
+    * @throws ParserConfigurationException
+    */
+   public void setUp() throws ParserConfigurationException {
+
+      this.dbf = DocumentBuilderFactory.newInstance();
+
+      this.dbf.setNamespaceAware(true);
+
+      this.db = this.dbf.newDocumentBuilder();
+   }
+
+   /**
+    * Method testA
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    * @throws org.apache.xml.security.keys.keyresolver.KeyResolverException
+    */
+   public void testA()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException,
+                  XMLSignatureException, XMLSecurityException,
+                  org.apache.xml.security.keys.keyresolver
+                     .KeyResolverException {
+
+      File fileIn = new File(getAbsolutePath(
+         "data/ie/baltimore/merlin-examples/ec-merlin-iaikTests-two/signature.xml") );
+
+      // File fileIn = new File("signature.xml");
+      assertTrue("file exists", fileIn.exists());
+
+      Document doc = this.db.parse(fileIn);
+      Element signatureElement =
+         (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+                                              Constants._TAG_SIGNATURE).item(0);
+      XMLSignature xmlSignature = new XMLSignature(signatureElement,
+                                     fileIn.toURL().toString());
+      boolean verify =
+         xmlSignature
+            .checkSignatureValue(xmlSignature.getKeyInfo().getPublicKey());
+      int length = xmlSignature.getSignedInfo().getLength();
+      int numberOfPositiveReferences = 0;
+
+      for (int i = 0; i < length; i++) {
+         boolean singleResult =
+            xmlSignature.getSignedInfo().getVerificationResult(i);
+
+         if (singleResult) {
+            numberOfPositiveReferences++;
+         }
+      }
+
+      assertTrue("Verification failed; only " + numberOfPositiveReferences
+                 + "/" + length + " matched", verify);
+   }
+
+   /**
+    * Method test221
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public void test221()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException,
+                  XMLSignatureException, XMLSecurityException {
+
+      Document doc =
+         this.db
+            .parse(getAbsolutePath("data/org/apache/xml/security/c14n/inExcl/example2_2_1.xml") );
+      Node root = doc.getElementsByTagNameNS("http://example.net",
+                                             "elem2").item(0);
+      Canonicalizer20010315 c = new Canonicalizer20010315WithComments();
+      byte[] reference = JavaUtils.getBytesFromFile(getAbsolutePath(
+         "data/org/apache/xml/security/c14n/inExcl/example2_2_1_c14nized.xml") );
+      byte[] result = c.engineCanonicalizeSubTree(root);
+      boolean equals = JavaUtils.binaryCompare(reference, result);
+
+      /*
+      if (!equals) {
+         JavaUtils.writeBytesToFilename("data/org/apache/xml/security/c14n/inExcl/example2_2_1_c14nized.apache.xml", result);
+      }
+      */
+
+      assertTrue(equals);
+   }
+
+   /**
+    * Method test222
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public void test222()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException,
+                  XMLSignatureException, XMLSecurityException {
+
+      Document doc =
+         this.db
+            .parse(getAbsolutePath("data/org/apache/xml/security/c14n/inExcl/example2_2_2.xml"));
+      Node root = doc.getElementsByTagNameNS("http://example.net",
+                                             "elem2").item(0);
+      Canonicalizer20010315 c = new Canonicalizer20010315WithComments();
+      byte[] reference = JavaUtils.getBytesFromFile(getAbsolutePath(
+         "data/org/apache/xml/security/c14n/inExcl/example2_2_2_c14nized.xml"));
+      byte[] result = c.engineCanonicalizeSubTree(root);
+      boolean equals = JavaUtils.binaryCompare(reference, result);
+
+      assertTrue(equals);
+   }
+
+   /**
+    * Method test221excl
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public void test221excl()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException,
+                  XMLSignatureException, XMLSecurityException {
+
+      Document doc =
+         this.db
+            .parse(getAbsolutePath("data/org/apache/xml/security/c14n/inExcl/example2_2_1.xml"));
+      Node root = doc.getElementsByTagNameNS("http://example.net",
+                                             "elem2").item(0);
+      Canonicalizer20010315Excl c = new Canonicalizer20010315ExclWithComments();
+      byte[] reference = JavaUtils.getBytesFromFile(getAbsolutePath(
+         "data/org/apache/xml/security/c14n/inExcl/example2_2_c14nized_exclusive.xml") );
+      byte[] result = c.engineCanonicalizeSubTree(root);
+      boolean equals = JavaUtils.binaryCompare(reference, result);
+
+      assertTrue(equals);
+   }
+
+   /**
+    * Method test222excl
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public void test222excl()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException,
+                  XMLSignatureException, XMLSecurityException {
+
+      Document doc =
+         this.db
+            .parse(getAbsolutePath("data/org/apache/xml/security/c14n/inExcl/example2_2_2.xml"));
+      Node root = doc.getElementsByTagNameNS("http://example.net",
+                                             "elem2").item(0);
+      Canonicalizer20010315Excl c = new Canonicalizer20010315ExclWithComments();
+      byte[] reference = JavaUtils.getBytesFromFile(getAbsolutePath(
+         "data/org/apache/xml/security/c14n/inExcl/example2_2_c14nized_exclusive.xml") );
+      byte[] result = c.engineCanonicalizeSubTree(root);
+      boolean equals = JavaUtils.binaryCompare(reference, result);
+
+      assertTrue(equals);
+   }
+   
+   /**
+    * Method test223excl
+    *
+    * Provided by Gabriel McGoldrick - see e-mail of 21/11/03
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public void test223excl()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException,
+                  XMLSignatureException, XMLSecurityException {
+
+      Document doc =
+         this.db
+            .parse(getAbsolutePath("data/org/apache/xml/security/c14n/inExcl/example2_2_3.xml"));
+      XMLUtils.circumventBug2650(doc);
+      NodeList nodes = XPathAPI.selectNodeList(doc.getDocumentElement(),
+                                 "(//. | //@* | //namespace::*)[ancestor-or-self::p]");
+      Canonicalizer20010315Excl c = new Canonicalizer20010315ExclWithComments();
+      byte[] reference = JavaUtils.getBytesFromFile(
+      		getAbsolutePath("data/org/apache/xml/security/c14n/inExcl/example2_2_3_c14nized_exclusive.xml") );
+      byte[] result = c.engineCanonicalizeXPathNodeSet(nodes);
+      boolean equals = JavaUtils.binaryCompare(reference, result);
+      if (!equals) {
+          log.warn("Error output = " + new String(result));
+      }
+      assertTrue(equals);
+   }
+   
+   private String getAbsolutePath(String path)
+   {
+   	  String basedir = System.getProperty("basedir");
+   	  if(basedir != null && !"".equals(basedir)) {
+   		path = basedir + "/" + path;
+   	  }
+   	  return path;
+   }
+   
+}
diff --git a/src_unitTests/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java b/src_unitTests/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java
new file mode 100644
index 0000000..e1109af
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/c14n/implementations/Canonicalizer20010315Test.java
@@ -0,0 +1,1238 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.c14n.implementations;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.test.resource.TestVectorResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.IgnoreAllErrorHandler;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.CachedXPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Unit test for {@link org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithXPath}
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Canonicalizer20010315Test extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Canonicalizer20010315Test.class.getName());
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(Canonicalizer20010315Test.class);
+   }
+
+   /**
+    *  Constructor Canonicalizer20010315WithXPathTest
+    *
+    *  @param Name_
+    */
+   public Canonicalizer20010315Test(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                Canonicalizer20010315Test.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /** Field prefix */
+   private static String prefix;
+
+   /**
+    * 3.1 PIs, Comments, and Outside of Document Element
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void test31withCommentsSubtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri =
+         "3.1: PIs, Comments, and Outside of Document Element. (commented)";
+
+
+      String fileIn = prefix + "in/31_input.xml";
+      String fileRef = prefix + "in/31_c14n-comments.xml";
+      String fileOut = prefix + "out/xpath_31_output-comments.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+      boolean validating = true;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+   /**
+    * 3.1 PIs, Comments, and Outside of Document Element
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void test31withCommentsSubset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri =
+         "3.1: PIs, Comments, and Outside of Document Element. (commented)";
+
+
+      String fileIn = prefix + "in/31_input.xml";
+      String fileRef = prefix + "in/31_c14n-comments.xml";
+      String fileOut = prefix + "out/xpath_31_output-comments.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.1 PIs, Comments, and Outside of Document Element
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-OutsideDoc">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test31subtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri =
+         "3.1: PIs, Comments, and Outside of Document Element. (uncommented)";
+      String fileIn = prefix + "in/31_input.xml";
+      String fileRef = prefix + "in/31_c14n.xml";
+      String fileOut = prefix + "out/xpath_31_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+   /**
+    * 3.1 PIs, Comments, and Outside of Document Element
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-OutsideDoc">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test31subset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri =
+         "3.1: PIs, Comments, and Outside of Document Element. (uncommented)";
+      String fileIn = prefix + "in/31_input.xml";
+      String fileRef = prefix + "in/31_c14n.xml";
+      String fileOut = prefix + "out/xpath_31_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.2 Whitespace in Document Content
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-WhitespaceInContent">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test32subtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.2 Whitespace in Document Content. (uncommented)";
+      String fileIn = prefix + "in/32_input.xml";
+      String fileRef = prefix + "in/32_c14n.xml";
+      String fileOut = prefix + "out/xpath_32_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.2 Whitespace in Document Content
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-WhitespaceInContent">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test32subset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.2 Whitespace in Document Content. (uncommented)";
+      String fileIn = prefix + "in/32_input.xml";
+      String fileRef = prefix + "in/32_c14n.xml";
+      String fileOut = prefix + "out/xpath_32_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.3 Start and End Tags
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-SETags">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test33subtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.3 Start and End Tags. (uncommented)";
+      String fileIn = prefix + "in/33_input.xml";
+      String fileRef = prefix + "in/33_c14n.xml";
+      String fileOut = prefix + "out/xpath_33_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = null;    // Canonicalizer.XPATH_C14N_OMIT_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   public static void test33subset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.3 Start and End Tags. (uncommented)";
+      String fileIn = prefix + "in/33_input.xml";
+      String fileRef = prefix + "in/33_c14n.xml";
+      String fileOut = prefix + "out/xpath_33_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.4 Character Modifications and Character References
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see #test34validatingParser
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test34()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException
+   {
+   	
+   	  //TODO Check what we have to do to get this f*cking test working!!!
+
+      String descri =
+         "3.4 Character Modifications and Character References. (uncommented)";
+      String fileIn = prefix + "in/34_input.xml";
+      String fileRef = prefix + "in/34_c14n.xml";
+      String fileOut = prefix + "out/xpath_34_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = false;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.4 Character Modifications and Character References (patched to run on validating Parsers)
+    * <P>
+    * <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119"> The spec</A> states that:
+    * <P>
+    * Note: The last element, normId, is well-formed but violates a validity
+    * constraint for attributes of type ID. For testing canonical XML
+    * implementations based on validating processors, remove the line
+    * containing this element from the input and canonical form. In general,
+    * XML consumers should be discouraged from using this feature of XML.
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test34subtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri =
+         "3.4 Character Modifications and Character References. (uncommented, patched to run on validating Parsers)";
+      String fileIn = prefix + "in/34_input_validatingParser.xml";
+      String fileRef = prefix + "in/34_c14n_validatingParser.xml";
+      String fileOut = prefix + "out/xpath_34_output_validatingParser.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+   /**
+    * 3.4 Character Modifications and Character References (patched to run on validating Parsers)
+    * <P>
+    * <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119"> The spec</A> states that:
+    * <P>
+    * Note: The last element, normId, is well-formed but violates a validity
+    * constraint for attributes of type ID. For testing canonical XML
+    * implementations based on validating processors, remove the line
+    * containing this element from the input and canonical form. In general,
+    * XML consumers should be discouraged from using this feature of XML.
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Chars">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test34subset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri =
+         "3.4 Character Modifications and Character References. (uncommented, patched to run on validating Parsers)";
+      String fileIn = prefix + "in/34_input_validatingParser.xml";
+      String fileRef = prefix + "in/34_c14n_validatingParser.xml";
+      String fileOut = prefix + "out/xpath_34_output_validatingParser.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.5 Entity References
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Entities">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test35subtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.5 Entity References. (uncommented)";
+      String fileIn = prefix + "in/35_input.xml";
+      String fileRef = prefix + "in/35_c14n.xml";
+      String fileOut = prefix + "out/xpath_35_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+   /**
+    * 3.5 Entity References
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-Entities">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test35subset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.5 Entity References. (uncommented)";
+      String fileIn = prefix + "in/35_input.xml";
+      String fileRef = prefix + "in/35_c14n.xml";
+      String fileOut = prefix + "out/xpath_35_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.6 UTF-8 Encoding
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-UTF8">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test36subtree()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.6 UTF-8 Encoding. (uncommented)";
+      String fileIn = prefix + "in/36_input.xml";
+      String fileRef = prefix + "in/36_c14n.xml";
+      String fileOut = prefix + "out/xpath_36_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = null;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+   /**
+    * 3.6 UTF-8 Encoding
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-UTF8">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test36subset()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.6 UTF-8 Encoding. (uncommented)";
+      String fileIn = prefix + "in/36_input.xml";
+      String fileRef = prefix + "in/36_c14n.xml";
+      String fileOut = prefix + "out/xpath_36_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      String xpath = Canonicalizer.XPATH_C14N_WITH_COMMENTS_SINGLE_NODE;
+
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.7 Document Subsets
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-DocSubsets">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test37()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String descri = "3.7 Document Subsets. (uncommented)";
+      String fileIn = prefix + "in/37_input.xml";
+      String fileRef = prefix + "in/37_c14n.xml";
+      String fileOut = prefix + "out/xpath_37_output.xml";
+      String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      boolean validating = true;
+      Element xpath = null;
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      Document doc = db.newDocument();
+
+      xpath = XMLUtils.createElementInSignatureSpace(doc, Constants._TAG_XPATH);
+
+      xpath.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ietf", "http://www.ietf.org");
+
+      //J-
+         String xpathFromSpec =
+              "(//. | //@* | //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()) "
+            + "]";
+
+         //J+
+      xpath.appendChild(doc.createTextNode(xpathFromSpec));
+      assertTrue(descri,
+                 c14nAndCompare(fileIn, fileRef, fileOut, c14nURI, validating,
+                                xpath));
+   }
+
+   /**
+    * 3.7 Document Subsets
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @see <A HREF="http://www.w3.org/TR/2001/PR-xml-c14n-20010119#Example-DocSubsets">the example from the spec</A>
+    * @throws TransformerException
+    */
+   public static void test37byNodeList()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      //String descri = "3.7 Document Subsets. (uncommented), c14n by NodeList";
+      String fileIn = prefix + "in/37_input.xml";
+      String fileRef = prefix + "in/37_c14n.xml";
+      //String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+      //boolean validating = true;
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+
+      db.setEntityResolver(resolver);
+
+      Document doc = db.parse(resolver.resolveEntity(null, fileIn));
+      //J-
+      Element nscontext = XMLUtils.createDSctx(doc, "ietf", "http://www.ietf.org");
+
+      String xpath = "(//. | //@* | //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()) "
+         + "]";
+      //J+
+      CachedXPathAPI xpathAPI = new CachedXPathAPI();
+
+      XMLUtils.circumventBug2650(doc);
+
+      NodeList nodes = xpathAPI.selectNodeList(doc, xpath, nscontext);
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+      byte c14nBytes[] = c14n.canonicalizeXPathNodeSet(nodes);
+      InputStream refStream = resolver.resolveEntity(null,
+                                 fileRef).getByteStream();
+      byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
+      boolean equal = JavaUtils.binaryCompare(refBytes, c14nBytes);
+
+      assertTrue(equal);
+   }
+
+   /**
+    * Method testDefaultNamespaceOverridden
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * public static void _testDefaultNamespaceOverridden()
+    *       throws IOException, FileNotFoundException, SAXException,
+    *              ParserConfigurationException, CanonicalizationException,
+    *              InvalidCanonicalizerException, TransformerException {
+    *
+    *  String descri = "Default namespace overridden";
+    *  String fileIn =
+    *     "data/org/apache/xml/security/temp/key/retrieval-from-same-doc.xml";
+    *  String fileRef =
+    *     "data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key.xml";
+    *  String fileOut =
+    *     "data/org/apache/xml/security/temp/key/retrieval-from-same-doc-key-error.xml";
+    *  String c14nURI = Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS;
+    *  boolean validating = false;
+    *  DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+    *
+    *  dfactory.setNamespaceAware(true);
+    *
+    *  DocumentBuilder db = dfactory.newDocumentBuilder();
+    *  // org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+    *  // db.setEntityResolver(resolver);
+    *
+    *  // Document doc = db.parse(resolver.resolveEntity(null, fileIn));
+    *  Document doc = db.parse(fileIn);
+    *  Element nscontext = doc.createElement("container");
+    *
+    *  nscontext.setAttribute("xmlns:ds", "http://www.w3.org/2000/09/xmldsig#");
+    *  nscontext.setAttribute("xmlns:my",
+    *                         "http://www.xmlsecurity.org/temp/mytempns");
+    *
+    *  String xpath =
+    *     "//my:KeyMaterials[1]/descendant::node()[not(self::text())]";
+    *  CachedXPathAPI xpathAPI = new CachedXPathAPI();
+    *  NodeList nodes = xpathAPI.selectNodeList(doc, xpath, nscontext);
+    *  Canonicalizer c14n =
+    *     Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+    *  byte c14nBytes[] = c14n.canonicalizeXPathNodeSet(nodes);
+    *  // InputStream refStream = resolver.resolveEntity(null, fileRef).getByteStream();
+    *  // byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
+    *  byte refBytes[] = JavaUtils.getBytesFromFile(fileRef);
+    *  boolean equal = JavaUtils.binaryCompare(refBytes, c14nBytes);
+    *
+    *  if (!equal) {
+    *     JavaUtils.writeBytesToFilename(fileOut, c14nBytes);
+    *     log.debug("Wrote malicious output from Test \"" + descri
+    *               + "\" to file " + fileOut);
+    *  }
+    *
+    *  assertTrue(equal);
+    * }
+    */
+
+   /**
+    * Note: This specification supports the recent XML plenary decision to
+    * deprecate relative namespace URIs as follows: implementations of XML
+    * canonicalization MUST report an operation failure on documents containing
+    * relative namespace URIs. XML canonicalization MUST NOT be implemented
+    * with an XML parser that converts relative URIs to absolute URIs.
+    *
+    * Implementations MUST report an operation failure on documents containing
+    * relative namespace URIs.
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void testRelativeNSbehaviour()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      //J-
+      String inputStr = ""
+         + "<absolute:correct      xmlns:absolute='http://www.absolute.org/#likeVodka'>"
+         + "<relative:incorrect    xmlns:relative='../cheating#away'>"
+         + "</relative:incorrect>"
+         + "</absolute:correct>"
+         + "\n"
+         + "";
+      //J+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      Document doc = db.parse(new ByteArrayInputStream(inputStr.getBytes()));
+      boolean weCatchedTheRelativeNS = false;
+
+      try {
+         Canonicalizer c14n =
+            Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+         c14n.canonicalizeSubtree(doc);
+
+      } catch (CanonicalizationException cex) {
+
+         // if we reach this point - good.
+         log.debug("We catched the C14nEx, that's good: " + cex.getMessage());
+
+         weCatchedTheRelativeNS = true;
+      }
+
+      assertTrue("We did not catch the relative namespace",
+                 weCatchedTheRelativeNS);
+   }
+
+   /**
+    * The XPath data model represents data using UCS characters.
+    * Implementations MUST use XML processors that support UTF-8 and UTF-16
+    * and translate to the UCS character domain. For UTF-16, the leading byte
+    * order mark is treated as an artifact of encoding and stripped from the
+    * UCS character data (subsequent zero width non-breaking spaces appearing
+    * within the UTF-16 data are not removed) [UTF-16, Section 3.2]. Support
+    * for ISO-8859-1 encoding is RECOMMENDED, and all other character encodings
+    * are OPTIONAL.
+    *
+    * $todo$ implement the test
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void testTranslationFromUTF16toUTF8()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+
+      String val =
+         "<UTF16>The german &amp;auml (which is Unicode &amp;#xE4;):  &quot;&#xE4;&quot;</UTF16>";
+      byte utf16[] = convertToUTF16(val.getBytes());
+      Canonicalizer c14n =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+      byte c14nBytes[] = c14n.canonicalize(utf16);
+      org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+      InputStream refStream = resolver.resolveEntity(
+         null,
+            prefix + "/in/testTranslationFromUTF16toUTF8.xml")
+               .getByteStream();
+      byte refBytes[] = JavaUtils.getBytesFromStream(refStream);
+      boolean equal = JavaUtils.binaryCompare(refBytes, c14nBytes);
+
+      assertTrue("Parser does not translate to UCS character domain", equal);
+   }
+
+   /**
+    * Method testXMLAttributes1
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void testXMLAttributes1()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+      //J-
+      String input = ""
+         + "<included    xml:lang='de'>"
+         + "<notIncluded xml:lang='de'>"
+         + "<notIncluded xml:lang='uk'>"
+         + "<included                 >"
+         + "</included>"
+         + "</notIncluded>"
+         + "</notIncluded>"
+         + "</included>";
+
+      String definedOutput = ""
+         + "<included xml:lang=\"de\">"
+         + "<included xml:lang=\"uk\">"
+         + "</included>"
+         + "</included>";
+      //J+
+      assertTrue(doTestXMLAttributes(input, definedOutput));
+   }
+
+   /**
+    * Method testXMLAttributes2
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void testXMLAttributes2()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+      //J-
+      String input = ""
+         + "<included    xml:lang='uk'>"
+         + "<notIncluded xml:lang='de'>"
+         + "<notIncluded xml:lang='uk'>"
+         + "<included                 >"
+         + "</included>"
+         + "</notIncluded>"
+         + "</notIncluded>"
+         + "</included>";
+
+      String definedOutput = ""
+         + "<included xml:lang=\"uk\">"
+         + "<included xml:lang=\"uk\">"
+         + "</included>"
+         + "</included>";
+      //J+
+      assertTrue(doTestXMLAttributes(input, definedOutput));
+   }
+
+   /**
+    * Method testXMLAttributes3
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void testXMLAttributes3()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+      //J-
+      String input = ""
+         + "<included    xml:lang='de'>"
+         + "<notIncluded xml:lang='de'>"
+         + "<notIncluded xml:lang='uk'>"
+         + "<included    xml:lang='de'>"
+         + "</included>"
+         + "</notIncluded>"
+         + "</notIncluded>"
+         + "</included>";
+
+      String definedOutput = ""
+         + "<included xml:lang=\"de\">"
+         + "<included xml:lang=\"de\">"
+         + "</included>"
+         + "</included>";
+      //J+
+      assertTrue(doTestXMLAttributes(input, definedOutput));
+   }
+
+   /**
+    * Method testXMLAttributes4
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void _testXMLAttributes4()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+      //J-
+      String input = ""
+         + "<included    xml:lang='de'>"
+         + "<included    xml:lang='de'>"
+         + "<notIncluded xml:lang='uk'>"
+         + "<included                 >"
+         + "</included>"
+         + "</notIncluded>"
+         + "</included>"
+         + "</included>";
+
+      String definedOutput = ""
+         + "<included xml:lang=\"de\">"
+         + "<included>"
+         + "<included xml:lang=\"uk\">"
+         + "</included>"
+         + "</included>"
+         + "</included>";
+      //J+
+      assertTrue(doTestXMLAttributes(input, definedOutput));
+   }
+
+   /**
+    * Method testXMLAttributes5
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void _testXMLAttributes5()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+      //J-
+      String input = ""
+         + "<included                         xml:lang='de'>"
+         + "<included                         xml:lang='de'>"
+         + "<notIncluded xml:space='preserve' xml:lang='uk'>"
+         + "<included                 >"
+         + "</included>"
+         + "</notIncluded>"
+         + "</included>"
+         + "</included>";
+
+      String definedOutput = ""
+         + "<included xml:lang=\"de\">"
+         + "<included>"
+         + "<included xml:lang=\"uk\" xml:space=\"preserve\">"
+         + "</included>"
+         + "</included>"
+         + "</included>";
+      //J+
+      assertTrue(doTestXMLAttributes(input, definedOutput));
+   }
+
+   /**
+    * Method testXMLAttributes6
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   public static void _testXMLAttributes6()
+           throws IOException, FileNotFoundException, SAXException,
+                  ParserConfigurationException, CanonicalizationException,
+                  InvalidCanonicalizerException, TransformerException {
+      //J-
+      String input = ""
+         + "<included   xml:space='preserve'  xml:lang='de'>"
+         + "<included                         xml:lang='de'>"
+         + "<notIncluded                      xml:lang='uk'>"
+         + "<included>"
+         + "</included>"
+         + "</notIncluded>"
+         + "</included>"
+         + "</included>";
+
+      String definedOutput = ""
+         + "<included xml:lang=\"de\" xml:space=\"preserve\">"
+         + "<included>"
+         + "<included xml:lang=\"uk\" xml:space=\"preserve\">"
+         + "</included>"
+         + "</included>"
+         + "</included>";
+      //J+
+      assertTrue(doTestXMLAttributes(input, definedOutput));
+   }
+
+   /**
+    * Method doTestXMLAttributes
+    *
+    * @param input
+    * @param definedOutput
+    * @param writeResultsToFile
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   private static boolean doTestXMLAttributes(
+           String input, String definedOutput)
+              throws IOException, FileNotFoundException, SAXException,
+                     ParserConfigurationException, CanonicalizationException,
+                     InvalidCanonicalizerException, TransformerException {
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+      dfactory.setValidating(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+
+      db.setErrorHandler(new org.apache.xml.security.utils
+         .IgnoreAllErrorHandler());
+
+      Document doc = db.parse(new ByteArrayInputStream(input.getBytes()));
+      Canonicalizer c14nizer =
+         Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+      CachedXPathAPI xpathAPI = new CachedXPathAPI();
+
+      //XMLUtils.circumventBug2650(doc);
+
+      NodeList nodes =
+         xpathAPI.selectNodeList(doc, "(//*[local-name()='included'] | //@*[parent::node()[local-name()='included']])");
+      byte result[] = c14nizer.canonicalizeXPathNodeSet(nodes);
+      byte defined[] = definedOutput.getBytes();
+
+      return JavaUtils.binaryCompare(defined, result);
+   }
+
+   /**
+    * Method c14nAndCompare
+    *
+    * @param fileIn
+    * @param fileRef
+    * @param fileOut
+    * @param c14nURI
+    * @param validating
+    * @param xpath
+    *
+    * @throws CanonicalizationException
+    * @throws FileNotFoundException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    */
+   private static boolean c14nAndCompare(
+           String fileIn, String fileRef, String fileOut, String c14nURI, boolean validating, Object xpath)
+              throws IOException, FileNotFoundException, SAXException,
+                     ParserConfigurationException, CanonicalizationException,
+                     InvalidCanonicalizerException, TransformerException {
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+      dfactory.setValidating(validating);
+
+      DocumentBuilder documentBuilder = dfactory.newDocumentBuilder();
+
+      // throw away all warnings and errors
+      documentBuilder.setErrorHandler(new IgnoreAllErrorHandler());
+
+      // org.xml.sax.EntityResolver resolver = new TestVectorResolver();
+      // documentBuilder.setEntityResolver(resolver);
+      // Document doc = documentBuilder.parse(resolver.resolveEntity(null, fileIn));
+            
+      Document doc = documentBuilder.parse(fileIn);
+
+      XMLUtils.circumventBug2650(doc);
+
+      Canonicalizer c14n = Canonicalizer.getInstance(c14nURI);
+      byte c14nBytes[] = null;
+
+      if (xpath == null) {
+         c14nBytes = c14n.canonicalizeSubtree(doc);
+      } else {
+         CachedXPathAPI xpathAPI = new CachedXPathAPI();
+         NodeList nl = null;
+
+         if (xpath instanceof String) {
+            nl = xpathAPI.selectNodeList(doc, (String) xpath);
+         } else {
+            Element xpathElement = (Element) xpath;
+            String xpathStr = ((Text) xpathElement.getFirstChild()).getData();
+
+            nl = xpathAPI.selectNodeList(doc, xpathStr, xpathElement);
+         }
+
+         c14nBytes = c14n.canonicalizeXPathNodeSet(nl);
+      }
+
+      // org.xml.sax.InputSource refIs = resolver.resolveEntity(null, fileRef);
+      // byte refBytes[] = JavaUtils.getBytesFromStream(refIs.getByteStream());
+      byte refBytes[] = JavaUtils.getBytesFromFile(fileRef);
+
+      // if everything is OK, result is true; we do a binary compare, byte by byte
+      boolean result = JavaUtils.binaryCompare(refBytes, c14nBytes);
+
+      if (result == false) {
+         File f = new File(fileOut);
+         if (!f.exists()) {
+         	File parent = new File(f.getParent());
+         	parent.mkdirs();
+         	f.createNewFile();
+         }
+         FileOutputStream fos = new FileOutputStream(f);
+
+         fos.write(c14nBytes);
+         log.debug("Wrote errornous result to file " + f.toURL().toString());
+      }
+
+      return result;
+   }
+
+   /**
+    * This method takes the input bytes as XML Document and converts it to an
+    * UTF-16 encoded XML document which is serialized to byte[] and returned.
+    *
+    * @param input
+    *
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerConfigurationException
+    * @throws TransformerException
+    */
+   public static byte[] convertToUTF16(byte input[])
+           throws ParserConfigurationException, IOException, SAXException,
+                  TransformerConfigurationException, TransformerException {
+
+      //String ENCODING_ISO8859_1 = "ISO-8859-1";
+      //String ENCODING_UTF8 = "UTF-8";
+      String ENCODING_UTF16 = "UTF-16";
+      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+      DocumentBuilder db = dbf.newDocumentBuilder();
+      Document doc = db.parse(new ByteArrayInputStream(input));
+      TransformerFactory tFactory = TransformerFactory.newInstance();
+      Transformer transformer = tFactory.newTransformer();
+
+      transformer.setOutputProperty(OutputKeys.ENCODING, ENCODING_UTF16);
+      transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
+
+      DOMSource source = new DOMSource(doc);
+      ByteArrayOutputStream os = new ByteArrayOutputStream();
+      StreamResult result = new StreamResult(os);
+
+      transformer.transform(source, result);
+
+      return os.toByteArray();
+   }
+
+   static {
+      /*
+      try {
+         // String wd = new File(".").toURL().toExternalForm();
+         // prefix = wd.substring(0, wd.length()-2) + "data/org/apache/xml/security/c14n/";
+      } catch (java.net.MalformedURLException urlEx) {
+         throw new RuntimeException(urlEx.getMessage());
+      }
+      */
+   	  prefix = "data/org/apache/xml/security/c14n/";
+   	  String basedir = System.getProperty("basedir");
+   	  if(basedir != null && !"".equals(basedir)) {
+   		prefix = basedir + "/" + prefix;
+      }
+      
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/c14n/implementations/ExclusiveC14NInterop.java b/src_unitTests/org/apache/xml/security/test/c14n/implementations/ExclusiveC14NInterop.java
new file mode 100644
index 0000000..50c94b7
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/c14n/implementations/ExclusiveC14NInterop.java
@@ -0,0 +1,218 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.c14n.implementations;
+
+
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.signature.Reference;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.test.interop.InteropTest;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.JavaUtils;
+import org.w3c.dom.Element;
+
+
+/**
+ * Interop test for exclusive canonical XML.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class ExclusiveC14NInterop extends InteropTest {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(ExclusiveC14NInterop.class.getName());
+
+    static {
+        org.apache.xml.security.Init.init();
+    }
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(ExclusiveC14NInterop.class);
+   }
+
+   /**
+    *  Constructor ExclusiveC14NInterop
+    *
+    *  @param Name_
+    */
+   public ExclusiveC14NInterop(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                ExclusiveC14NInterop.class.getName() };
+
+      org.apache.xml.security.Init.init();
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method test_Y1
+    *
+    * @throws Exception
+    */
+   public void test_Y1() throws Exception {
+
+      String success = t("data/interop/c14n/Y1", "exc-signature.xml");
+
+      assertTrue(success, success == null);
+   }
+
+   /**
+    * Method test_Y2
+    *
+    * @throws Exception
+    */
+   public void test_Y2() throws Exception {
+
+      String success = t("data/interop/c14n/Y2", "signature-joseph-exc.xml");
+
+      assertTrue(success, success == null);
+   }
+
+   /**
+    * Method test_Y3
+    *
+    * @throws Exception
+    */
+   public void test_Y3() throws Exception {
+
+      String success = t("data/interop/c14n/Y3", "signature.xml");
+
+      assertTrue(success, success == null);
+   }
+
+   /**
+    * Method test_Y4
+    *
+    * @throws Exception
+    */
+   public void test_Y4() throws Exception {
+
+      String success = t("data/interop/c14n/Y4", "signature.xml");
+
+      assertTrue(success, success == null);
+   }
+
+   public void test_xfilter2() throws Exception {
+
+      String success = t("data/interop/xfilter2/merlin-xpath-filter2-three", "sign-spec.xml");
+
+      assertTrue(success, success == null);
+   }
+
+   /**
+    * Method t
+    *
+    * @param directory
+    * @param file
+    *
+    * @throws Exception
+    */
+   public String t(String directory, String file) throws Exception
+   {
+   	  String basedir = System.getProperty("basedir");
+   	  if(basedir != null && !"".equals(basedir)) {
+   	  	directory = basedir + "/" + directory;
+   	  }
+
+      File f = new File(directory + "/" + file);
+      javax.xml.parsers.DocumentBuilderFactory dbf =
+         javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.parse(f);
+      long start = System.currentTimeMillis();
+
+      //XMLUtils.circumventBug2650(doc);
+
+      long end = System.currentTimeMillis();
+
+      log.debug("fixSubtree took " + (int) (end - start));
+
+      Element sigElement =
+         (Element) doc.getElementsByTagNameNS(Constants.SignatureSpecNS,
+                                              Constants._TAG_SIGNATURE).item(0);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+      boolean verify =
+         signature.checkSignatureValue(signature.getKeyInfo().getPublicKey());
+
+      log.debug("   signature.checkSignatureValue finished: " + verify);
+
+      int failures = 0;
+
+      // if (!verify) {
+      if (true) {
+         StringBuffer sb = new StringBuffer();
+
+         for (int i = 0; i < signature.getSignedInfo().getLength(); i++) {
+            boolean refVerify =
+               signature.getSignedInfo().getVerificationResult(i);
+            JavaUtils.writeBytesToFilename(directory + "/c14n-" + i + ".apache.html", signature.getSignedInfo().item(i).getHTMLRepresentation().getBytes());
+
+            if (refVerify) {
+               log.debug("Reference " + i + " was OK");
+            } else {
+               failures++;
+
+               sb.append(i + " ");
+
+               JavaUtils.writeBytesToFilename(directory + "/c14n-" + i + ".apache.txt", signature.getSignedInfo().item(i).getContentsAfterTransformation().getBytes());
+               JavaUtils.writeBytesToFilename(directory + "/c14n-" + i + ".apache.html", signature.getSignedInfo().item(i).getHTMLRepresentation().getBytes());
+
+               Reference reference = signature.getSignedInfo().item(i);
+               int length = reference.getTransforms().getLength();
+               String algo = reference.getTransforms().item(length
+                  - 1).getURI();
+
+               log.debug("Reference " + i + " failed: " + algo);
+            }
+         }
+
+         String r = sb.toString().trim();
+
+         if (r.length() == 0) {
+            return null;
+         } else {
+            return r;
+         }
+      } else {
+         return null;
+      }
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/encryption/BaltimoreEncTest.java b/src_unitTests/org/apache/xml/security/test/encryption/BaltimoreEncTest.java
new file mode 100644
index 0000000..0754735
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/encryption/BaltimoreEncTest.java
@@ -0,0 +1,706 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.encryption;
+
+import java.io.File;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+import java.security.spec.PKCS8EncodedKeySpec;
+
+import javax.crypto.Cipher;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import junit.framework.Assert;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.encryption.EncryptedData;
+import org.apache.xml.security.encryption.EncryptedKey;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.keys.content.KeyName;
+import org.apache.xml.security.keys.content.X509Data;
+import org.apache.xml.security.keys.content.x509.XMLX509Certificate;
+import org.apache.xml.security.keys.keyresolver.KeyResolver;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Interop test for XML Encryption
+ *
+ * @author Berin Lautenbach
+ */
+
+/*
+
+Tests for merlin-xmlenc-five not currently done
+
+bad-encrypt-content-aes128-cbc-kw-aes192.xml
+decryption-transform-except.xml 
+decryption-transform.xml        
+encrypt-content-aes192-cbc-dh-sha512.xml
+encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
+encrypt-element-aes256-cbc-carried-kw-aes256.xml
+encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
+encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
+encsig-hmac-sha256-dh.xml
+encsig-hmac-sha256-kw-tripledes-dh.xml
+encsig-hmac-sha256-rsa-1_5.xml
+encsig-hmac-sha256-rsa-oaep-mgf1p.xml
+encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
+encsig-sha256-hmac-sha256-kw-aes128.xml
+encsig-sha384-hmac-sha384-kw-aes192.xml
+encsig-sha512-hmac-sha512-kw-aes256.xml
+
+*/
+public class BaltimoreEncTest extends TestCase {
+
+	private static String cardNumber;
+	private static String rsaCertSerialNumber;
+	private static String testDecryptString;
+	private static int nodeCount = 0;
+	private static byte[] jebBytes;
+	private static byte[] jobBytes;
+	private static byte[] jedBytes;
+	private static PrivateKey rsaKey;
+	private boolean haveISOPadding;
+	private boolean haveKeyWraps;
+
+	/** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(BaltimoreEncTest.class.getName());
+	
+	/**
+	 * Method suite
+	 *
+	 *
+	 */
+	public static Test suite() throws Exception {
+		return new TestSuite(BaltimoreEncTest.class);
+	}
+
+	/**
+	 *  Constructor BaltimoreEncTest
+	 *
+	 *  @param Name_
+	 */
+	public BaltimoreEncTest(String Name_) {
+		super(Name_);
+	}
+	
+	/**
+	 * Method setUp
+	 */
+	protected void setUp() throws Exception {
+		// Create the comparison strings
+	
+		DocumentBuilderFactory dbf =
+			DocumentBuilderFactory.newInstance();
+		dbf.setNamespaceAware(true);
+		dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+		
+		String filename = 
+			"data/ie/baltimore/merlin-examples/merlin-xmlenc-five/plaintext.xml";
+		String basedir = System.getProperty("basedir");
+		if(basedir != null && !"".equals(basedir)) {
+			filename = basedir + "/" + filename;
+		}
+		File f = new File(filename);
+	
+		DocumentBuilder db = dbf.newDocumentBuilder();
+		Document doc = db.parse(new java.io.FileInputStream(f));
+	
+		cardNumber = retrieveCCNumber(doc);
+	
+		// Test decrypt
+		testDecryptString = new String("top secret message\n");
+	
+		// Count the nodes in the document as a secondary test
+		nodeCount = countNodes(doc);
+	
+		// Create the keys
+		jebBytes =
+			"abcdefghijklmnopqrstuvwx".getBytes("ASCII");
+		jobBytes = 
+			"abcdefghijklmnop".getBytes("ASCII");
+		jedBytes = 
+			"abcdefghijklmnopqrstuvwxyz012345".getBytes("ASCII");
+	
+		// Certificate information
+		rsaCertSerialNumber = new String("1014918766910");
+	
+		// rsaKey
+		filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/rsa.p8";
+		if(basedir != null && !"".equals(basedir)) {
+			filename = basedir + "/" + filename;
+		}
+		
+		byte[] pkcs8Bytes = JavaUtils.getBytesFromFile(filename);
+	
+		PKCS8EncodedKeySpec pkcs8Spec = 
+			new PKCS8EncodedKeySpec(pkcs8Bytes);
+	
+		// Create a key factory 
+		KeyFactory keyFactory = 
+			KeyFactory.getInstance("RSA");
+		rsaKey = keyFactory.generatePrivate(pkcs8Spec);
+	
+		// Initialise the library
+	
+		org.apache.xml.security.Init.init();
+	
+		// Register our key resolver
+		KeyResolver.register("org.apache.xml.security.test.encryption.BobKeyResolver");
+
+		// Check what algorithms are available
+
+		haveISOPadding = false;
+		String algorithmId = 
+			JCEMapper.translateURItoJCEID(org.apache.xml.security.utils.EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128);
+
+		if (algorithmId != null) {
+			try {
+				if (Cipher.getInstance(algorithmId) != null)
+					haveISOPadding = true;
+			} catch (NoSuchAlgorithmException nsae) {
+			} catch (NoSuchPaddingException nspe) {
+			}
+		}
+
+		haveKeyWraps = (JCEMapper.translateURItoJCEID(org.apache.xml.security.utils.EncryptionConstants.ALGO_ID_KEYWRAP_AES128) != null);
+	}
+
+	/**
+	 * Method retrieveCCNumber
+	 *
+	 * Retrieve the credit card number from the payment info document
+	 *
+	 * @param doc The document to retreive the card number from
+	 * @return The retrieved credit card number
+	 */
+
+	public static String retrieveCCNumber (Document doc) 
+		throws javax.xml.transform.TransformerException {
+
+		Element nscontext =
+			XMLUtils.createDSctx(doc, "x",
+                              "urn:example:po");
+		Node ccnumElt = 
+			XPathAPI.selectSingleNode(doc, "//x:Number/text()", nscontext);
+		
+		if (ccnumElt != null)
+			return ccnumElt.getNodeValue();
+
+		return null;
+
+	}
+
+	/*
+	 * Check we have retrieved a Credit Card number and that it is OK
+	 * Check that the document has the correct number of nodes
+	 */
+
+	private void checkDecryptedDoc(Document d, boolean doNodeCheck) throws Exception {
+
+		String cc = retrieveCCNumber(d);
+		log.debug("Retrieved Credit Card : " + cc);
+		assertTrue(cc, ((cc!= null) && (cc.equals(cardNumber))));
+
+		// Test cc numbers
+
+		if (doNodeCheck) {
+			int myNodeCount = countNodes(d);
+
+			assertTrue("Node count mismatches", 
+					   ((myNodeCount > 0) && myNodeCount == nodeCount));
+		}
+	}
+
+	/**
+	 * Check a decrypt of data was OK
+	 */
+
+	private void checkDecryptedData(byte [] data) throws Exception {
+
+		String input = new String(data, "ASCII");
+        Assert.assertEquals(testDecryptString, input);
+	}
+
+	/**
+	 * Method test_five_content_3des_cbc
+	 *
+	 * Check the merlin-enc-five element content test for 3DES
+	 *
+	 */
+
+
+	public void test_five_content_3des_cbc() throws Exception {
+
+		if (haveISOPadding) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml";
+
+			Document dd = decryptElement(filename);
+			checkDecryptedDoc(dd, true);
+		}
+		else {
+			log.warn("Skipping test test_five_content_3des_cbs as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_content_aes256_cbc
+	 *
+	 * Check the merlin-enc-five element content test for AES256
+	 *
+	 */
+
+	public void test_five_content_aes256_cbc() throws Exception {
+
+		if (haveISOPadding) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml";
+
+			Document dd = decryptElement(filename);
+			checkDecryptedDoc(dd, true);
+		}
+		else {
+			log.warn("Skipping test test_five_content_aes256_cbc as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_content_aes128_cbc_kw_aes192
+	 *
+	 * Check the merlin-enc-five element content test for AES128 with
+	 * AES 192 key wrap
+	 *
+	 */
+
+	public void test_five_content_aes128_cbc_kw_aes192() throws Exception {
+
+		if (haveISOPadding && haveKeyWraps) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml";
+
+			Document dd = decryptElement(filename);
+			checkDecryptedDoc(dd, true);
+		}
+		else {
+			log.warn("Skipping test test_five_content_aes128_cbc_kw_aes192 as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_content_3des_cbc_kw_aes128
+	 *
+	 * Check the merlin-enc-five element content test for 3DES with
+	 * AES 128 key wrap
+	 *
+	 */
+
+	public void test_five_content_3des_cbc_kw_aes128() throws Exception {
+
+		if (haveISOPadding && haveKeyWraps) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml";
+
+			Document dd = decryptElement(filename);
+			checkDecryptedDoc(dd, true);
+		}
+		else {
+			log.warn("Skipping test test_five_content_3des_cbc_kw_aes128 as necessary crypto algorithms are not available");
+		}
+
+    }
+
+	/**
+	 * Method test_five_content_aes128_cbc_kw_rsa_15
+	 *
+	 * Check the merlin-enc-five element content test for AES128 with
+	 * RSA key wrap (PKCS 1.5 padding)
+	 *
+	 */
+
+	public void test_five_content_aes128_cbc_rsa_15() throws Exception {
+
+		if (haveISOPadding) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml";
+
+			Document dd = decryptElement(filename);
+			checkDecryptedDoc(dd, true);
+		}
+		else {
+			log.warn("Skipping test test_five_content_aes128_cbc_rsa_15 as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_element_aes192_cbc_ref
+	 *
+	 * Check the merlin-enc-five element data test for AES192 with
+	 * a CipherReference element
+	 *
+	 */
+
+	public void test_five_element_aes192_cbc_ref() throws Exception {
+
+		if (haveISOPadding) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml";
+
+			Document dd = decryptElement(filename);
+			// Note - we don't check the node count, as it will be different
+			// due to the encrypted text remainin in the reference nodes
+			checkDecryptedDoc(dd, false);
+		}
+		else {
+			log.warn("Skipping test test_five_element_aes192_cbc_ref as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_data_aes128_cbc
+	 *
+	 * Check the merlin-enc-five element data test for AES128 with no
+	 * key wrap
+	 *
+	 */
+
+	public void test_five_data_aes128_cbc() throws Exception {
+
+		if (haveISOPadding) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml";
+
+			byte[] decrypt = decryptData(filename);
+			checkDecryptedData(decrypt);
+		}
+		else {
+			log.warn("Skipping test test_five_data_aes128_cbc as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_data_aes256_cbc_3des
+	 *
+	 * Check the merlin-enc-five element data test for AES256 with 3DES
+	 * key wrap
+	 *
+	 */
+
+	public void test_five_data_aes256_cbc_3des() throws Exception {
+
+		if (haveISOPadding && haveKeyWraps) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml";
+
+			byte[] decrypt = decryptData(filename);
+			checkDecryptedData(decrypt);
+		}
+		else {
+			log.warn("Skipping test test_five_data_aes256_cbc_3des as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_data_aes192_cbc_aes256
+	 *
+	 * Check the merlin-enc-five element data test for AES192 with AES256
+	 * key wrap
+	 *
+	 */
+
+	public void test_five_data_aes192_cbc_aes256() throws Exception {
+
+		if (haveISOPadding && haveKeyWraps) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml";
+
+			byte[] decrypt = decryptData(filename);
+			checkDecryptedData(decrypt);
+		}
+		else {
+			log.warn("Skipping test test_five_data_aes192_cbc_aes256 as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method test_five_data_3des_cbc_rsa_oaep
+	 *
+	 * Check the merlin-enc-five element data test for 3DES with
+	 * RSA key wrap (OAEP and no parameters)
+	 *
+	 */
+
+	public void test_five_data_3des_cbc_rsa_oaep() throws Exception {
+
+                // Work-around for the fact that BC currently doesn't support
+                // the standard JCE name for oaep padding
+                java.security.Provider bc = java.security.Security.getProvider("BC");
+                if (bc != null)
+                    bc.put("Alg.Alias.Cipher.RSA/ECB/OAEPWithSHA1AndMGF1Padding","RSA/OAEP");
+
+		if (haveISOPadding) {
+			String filename = "data/ie/baltimore/merlin-examples/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml";
+
+			byte[] decrypt = decryptData(filename);
+			checkDecryptedData(decrypt);
+		}
+		else {
+			log.warn("Skipping test test_five_data_3des_cbc_rsa_oaep as necessary crypto algorithms are not available");
+		}
+    }
+
+	/**
+	 * Method decryptElement
+	 *
+	 * Take a key, encryption type and a file, find an encrypted element
+	 * decrypt it and return the resulting document
+	 *
+	 * @param filename File to decrypt from
+	 */
+
+	public Document decryptElement (String filename) 
+		throws Exception {
+
+		XMLCipher cipher;
+		
+		// Parse the document in question
+
+		javax.xml.parsers.DocumentBuilderFactory dbf =
+			javax.xml.parsers.DocumentBuilderFactory.newInstance();
+		dbf.setNamespaceAware(true);
+		dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+		String basedir = System.getProperty("basedir");
+		if(basedir != null && !"".equals(basedir)) {
+			filename = basedir + "/" + filename;
+		}
+		File f = new File(filename);
+
+		DocumentBuilder db = dbf.newDocumentBuilder();
+		
+		Document doc = db.parse(new java.io.FileInputStream(f));
+		
+		// Now we have the document, lets build the XMLCipher element
+
+		Element ee = null;
+		
+		// Create the XMLCipher element
+		
+		cipher = XMLCipher.getInstance();
+
+		// Need to pre-load the Encrypted Data so we can get the key info
+
+		ee = (Element) doc.getElementsByTagName("EncryptedData").item(0);
+		cipher.init(XMLCipher.DECRYPT_MODE, null);
+		EncryptedData encryptedData = cipher.loadEncryptedData(doc, ee);
+   
+		Key key = findKey(encryptedData);
+		cipher.init(XMLCipher.DECRYPT_MODE, key);
+		Document dd = cipher.doFinal(doc, ee);
+
+		return dd;
+			
+    }
+
+	/**
+	 * Method decryptData
+	 *
+	 * Take a file, find an encrypted element decrypt it and return the 
+	 * resulting byte array
+	 *
+	 * @param filename File to decrypt from
+	 */
+
+	public byte[] decryptData (String filename) 
+		throws Exception {
+
+		XMLCipher cipher;
+		
+		// Parse the document in question
+
+		javax.xml.parsers.DocumentBuilderFactory dbf =
+			javax.xml.parsers.DocumentBuilderFactory.newInstance();
+		dbf.setNamespaceAware(true);
+		dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
+		String basedir = System.getProperty("basedir");
+		if(basedir != null && !"".equals(basedir)) {
+			filename = basedir + "/" + filename;
+		}
+		File f = new File(filename);
+
+		DocumentBuilder db = dbf.newDocumentBuilder();
+		
+		Document doc = db.parse(new java.io.FileInputStream(f));
+		
+		// Now we have the document, lets build the XMLCipher element
+
+		Element ee = null;
+		
+		// Create the XMLCipher element
+		
+		cipher = XMLCipher.getInstance();
+
+		// Need to pre-load the Encrypted Data so we can get the key info
+
+		ee = (Element) doc.getElementsByTagName("EncryptedData").item(0);
+		cipher.init(XMLCipher.DECRYPT_MODE, null);
+		EncryptedData encryptedData = cipher.loadEncryptedData(doc, ee);
+
+		Key key = findKey(encryptedData);
+		
+		cipher.init(XMLCipher.DECRYPT_MODE, key);
+               
+		byte[] dd = cipher.decryptToByteArray(ee);
+
+		return dd;
+			
+    }
+
+	/** 
+	 * Method mapKeyName
+	 *
+	 * Create a secret key from a key name for merlin-five
+	 *
+	 * @param name Name to map a key from
+	 */
+
+	public SecretKey mapKeyName(String name) throws Exception {
+
+        if (name.equals("job")) {
+
+			// Jeb is a AES-128 key
+	        SecretKey key = new SecretKeySpec(jobBytes, "AES");
+			return key;
+		}
+		if (name.equals("jeb")) {
+
+			// Jeb is a AES-192 key
+	        SecretKey key = new SecretKeySpec(jebBytes, "AES");
+			return key;
+		}
+		if (name.equals("jed")) {
+
+			// Jeb is a AES-256 key
+	        SecretKey key = new SecretKeySpec(jedBytes, "AES");
+			return key;
+		}
+
+		return null;
+
+	}
+
+	/**
+	 * Method findKey
+	 *
+	 * Given an encryptedData structure, return the key that will decrypt
+	 * it
+	 *
+	 * @param encryptedData EncryptedData to get key for
+	 */
+
+	public Key findKey(EncryptedData encryptedData) throws Exception {
+
+		KeyInfo ki = encryptedData.getKeyInfo();
+   
+		Key key = null;
+		Key kek = null;
+
+		if (ki == null)
+			return null;
+		
+
+		// First check for a known key name
+		KeyName keyName = ki.itemKeyName(0);
+		if (keyName != null) {
+			return (mapKeyName(keyName.getKeyName()));
+		}
+
+		// Decrypt any encryptedKey structures
+		EncryptedKey encryptedKey = ki.itemEncryptedKey(0);
+		
+		if (encryptedKey == null)
+			return null;
+	 
+		KeyInfo kiek = encryptedKey.getKeyInfo();
+		if (kiek == null) {
+			return null;
+		}
+
+		KeyName kekKeyName = kiek.itemKeyName(0);
+		if (kekKeyName != null) {
+			kek = mapKeyName(kekKeyName.getKeyName());
+		}
+		else {
+
+			X509Data certData = kiek.itemX509Data(0);
+			XMLX509Certificate xcert = certData.itemCertificate(0);
+			X509Certificate cert = xcert.getX509Certificate();
+
+			if (cert != null) {
+
+				if (cert.getSerialNumber().toString().equals(rsaCertSerialNumber)) {
+
+					kek = rsaKey;
+					
+				}
+			}
+		}
+		if (kek != null) {
+			XMLCipher cipher = XMLCipher.getInstance();
+			cipher.init(XMLCipher.UNWRAP_MODE, kek);
+			key = cipher.decryptKey(encryptedKey,
+									encryptedData.
+									getEncryptionMethod().
+									getAlgorithm());
+		}
+		
+		return key;
+	}
+	/**
+	 * Method countNodes
+	 *
+	 * Recursively count the number of nodes in the document
+	 *
+	 * @param n Node to count beneath
+	 */
+
+	private static int countNodes(Node n) {
+
+		if (n == null)
+			return 0;  // Paranoia
+
+		int count = 1;  // Always count myself
+		Node c = n.getFirstChild();
+
+		while (c != null) {
+
+			count += countNodes(c);
+			c = c.getNextSibling();
+
+		}
+
+		return count;
+
+	}
+}
diff --git a/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java b/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java
new file mode 100644
index 0000000..481574e
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/encryption/BobKeyResolver.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.encryption;
+
+import java.security.cert.X509Certificate;
+import java.security.PublicKey;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESedeKeySpec;
+
+import org.apache.xml.security.keys.content.KeyName;
+import org.apache.xml.security.keys.keyresolver.KeyResolverException;
+import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
+import org.apache.xml.security.keys.storage.StorageResolver;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.w3c.dom.Element;
+
+/**
+ * Test resolver - simply maps a key name to the appropriate key
+ *
+ * @author Berin Lautenbach
+ */
+
+public class BobKeyResolver extends KeyResolverSpi {
+	
+	/** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(BobKeyResolver.class.getName());
+	
+	KeyName _kn = null;
+
+	/**
+	 * Method engineCanResolve
+	 *
+	 * @param element
+	 * @param BaseURI
+	 * @param storage
+	 *
+	 */
+
+	public boolean engineCanResolve(Element element, String BaseURI,
+									StorageResolver storage) {
+
+		log.debug("Can I resolve " + element.getTagName());
+
+		if (element == null) {
+			return false;
+		}
+
+		boolean isKeyName = XMLUtils.elementIsInSignatureSpace(element,
+									   Constants._TAG_KEYNAME);
+
+		try {
+			if (isKeyName) {
+				_kn = new KeyName(element, "");
+				if (_kn.getKeyName().equals("bob")) {
+					return true;
+				}
+			}
+		}
+		catch (Exception e) {
+			// Do nothing
+		}
+		
+		return false;
+	}
+
+	/**
+	 * Method engineResolvePublicKey
+	 *
+	 * @param element
+	 * @param BaseURI
+	 * @param storage
+	 * @return null if no {@link PublicKey} could be obtained
+	 * @throws KeyResolverException
+	 */
+	public PublicKey engineResolvePublicKey(
+		  Element element, String BaseURI, StorageResolver storage)
+              throws KeyResolverException {
+
+		return null;
+	}
+
+	/**
+	 * Method engineResolveX509Certificate
+	 *
+	 * @param element
+	 * @param BaseURI
+	 * @param storage
+	 *
+	 * @throws KeyResolverException
+	 */
+	public X509Certificate engineResolveX509Certificate(
+			   Element element, String BaseURI, StorageResolver storage)
+		throws KeyResolverException {
+		return null;
+	}
+
+	/**
+	 * Method engineResolveSecretKey
+	 *
+	 * @param element
+	 * @param BaseURI
+	 * @param storage
+	 *
+	 * @throws KeyResolverException
+	 */
+	public javax.crypto.SecretKey engineResolveSecretKey(
+           Element element, String BaseURI, StorageResolver storage)
+		throws KeyResolverException {
+
+		if (engineCanResolve(element, BaseURI, storage)) {
+			try {
+				DESedeKeySpec keySpec = new DESedeKeySpec(
+					"abcdefghijklmnopqrstuvwx".getBytes("ASCII"));
+				SecretKeyFactory keyFactory = 
+					SecretKeyFactory.getInstance("DESede");
+				SecretKey key = keyFactory.generateSecret(keySpec);
+					
+				return key;
+			}
+			catch (Exception e) {
+				throw new KeyResolverException("Something badly wrong in creation of bob's key");
+			}
+		}
+
+		return null;
+	}
+}
+
diff --git a/src_unitTests/org/apache/xml/security/test/encryption/XMLCipherTester.java b/src_unitTests/org/apache/xml/security/test/encryption/XMLCipherTester.java
new file mode 100644
index 0000000..722a0fa
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/encryption/XMLCipherTester.java
@@ -0,0 +1,683 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.encryption;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.security.Key;
+import java.security.KeyPairGenerator;
+import java.security.KeyPair;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESedeKeySpec;
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.xml.security.algorithms.JCEMapper;
+import org.apache.xml.security.c14n.Canonicalizer;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.encryption.EncryptedData;
+import org.apache.xml.security.encryption.EncryptedKey;
+import org.apache.xml.security.encryption.EncryptionMethod;
+import org.apache.xml.security.encryption.CipherData;
+import org.apache.xml.security.transforms.params.XPathContainer;
+import org.apache.xml.security.utils.IdResolver;
+import org.apache.xml.security.keys.KeyInfo;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ *
+ * @author  Axl Mattheus
+ * @author  Berin Lautenbach
+ */
+public class XMLCipherTester extends TestCase {
+
+	/** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLCipherTester.class.getName());
+    
+    private String documentName;
+    private String elementName;
+    private String elementIndex;
+    private XMLCipher cipher;
+
+	private boolean haveISOPadding;
+	private boolean haveKeyWraps;
+
+	private String tstBase64EncodedString;
+
+    public XMLCipherTester(String test) {
+       super(test);
+    }
+
+    protected void setUp() {
+        documentName = System.getProperty("org.apache.xml.enc.test.doc",
+            "./build.xml");
+        elementName = System.getProperty("org.apache.xml.enc.test.elem",
+            "path");
+        elementIndex = System.getProperty("org.apache.xml.enc.test.idx",
+            "0");
+
+		tstBase64EncodedString = new String("YmNkZWZnaGlqa2xtbm9wcRrPXjQ1hvhDFT+EdesMAPE4F6vlT+y0HPXe0+nAGLQ8");
+
+		// Determine if we have ISO 10126 Padding - needed for Bulk AES or
+		// 3DES encryption
+
+		haveISOPadding = false;
+		String algorithmId = 
+			JCEMapper.translateURItoJCEID(org.apache.xml.security.utils.EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128);
+
+		if (algorithmId != null) {
+			try {
+				if (Cipher.getInstance(algorithmId) != null)
+					haveISOPadding = true;
+			} catch (NoSuchAlgorithmException nsae) {
+			} catch (NoSuchPaddingException nspe) {
+			}
+		}
+
+		haveKeyWraps = (JCEMapper.translateURItoJCEID(org.apache.xml.security.utils.EncryptionConstants.ALGO_ID_KEYWRAP_AES128) != null);
+
+    }
+
+    protected void tearDown() {
+    }
+
+    private Document document() {
+        Document d = null;
+        try {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            File f = new File(documentName);
+            d = db.parse(f);
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.exit(-1);
+        }
+
+        return (d);
+    }
+
+    private String element() {
+        return (elementName);
+    }
+
+    private int index() {
+        int result = -1;
+
+        try {
+            result = Integer.parseInt(elementIndex);
+        } catch (NumberFormatException nfe) {
+            nfe.printStackTrace();
+            System.exit(-1);
+        }
+
+        return (result);
+    }
+
+	/**
+	 * Test encryption using a generated AES 128 bit key that is
+	 * encrypted using a AES 192 bit key.  Then reverse using the KEK
+	 */
+
+	public void testAES128ElementAES192KWCipherUsingKEK() throws Exception {
+
+		Document d = document(); // source
+		Document ed = null;
+		Document dd = null;
+		Element e = (Element) d.getElementsByTagName(element()).item(index());
+		Element ee = null;
+
+		String source = null;
+		String target = null;
+
+        if (haveISOPadding && haveKeyWraps) {
+
+			source = toString(d);
+
+			// Set up a Key Encryption Key
+			byte[] bits192 = "abcdefghijklmnopqrstuvwx".getBytes();
+			Key kek = new SecretKeySpec(bits192, "AES");
+
+			// Generate a traffic key
+			KeyGenerator keygen = KeyGenerator.getInstance("AES");
+			keygen.init(128);
+			Key key = keygen.generateKey();
+
+            cipher = XMLCipher.getInstance(XMLCipher.AES_192_KeyWrap);
+			cipher.init(XMLCipher.WRAP_MODE, kek);
+			EncryptedKey encryptedKey = cipher.encryptKey(d, key);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+			EncryptedData builder = cipher.getEncryptedData();
+
+			KeyInfo builderKeyInfo = builder.getKeyInfo();
+			if (builderKeyInfo == null) {
+				builderKeyInfo = new KeyInfo(d);
+				builder.setKeyInfo(builderKeyInfo);
+			}
+
+			builderKeyInfo.add(encryptedKey);
+
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+			key = null;
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
+            cipher.init(XMLCipher.DECRYPT_MODE, null);
+			cipher.setKEK(kek);
+			dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testAES128ElementAES192KWCipherUsingKEK skipped as necessary algorithms not available");
+		}
+    }
+  
+	/**
+	 * Test encryption using a generated AES 256 bit key that is
+	 * encrypted using an RSA key.  Reverse using KEK
+	 */
+
+	public void testAES128ElementRSAKWCipherUsingKEK() throws Exception {
+
+		Document d = document(); // source
+		Document ed = null;
+		Document dd = null;
+		Element e = (Element) d.getElementsByTagName(element()).item(index());
+		Element ee = null;
+
+		String source = null;
+		String target = null;
+
+        if (haveISOPadding) {
+
+			source = toString(d);
+
+            // Generate an RSA key
+            KeyPairGenerator rsaKeygen = KeyPairGenerator.getInstance("RSA");
+            KeyPair kp = rsaKeygen.generateKeyPair();
+            PrivateKey priv = kp.getPrivate();
+            PublicKey pub = kp.getPublic();
+            
+			// Generate a traffic key
+			KeyGenerator keygen = KeyGenerator.getInstance("AES");
+			keygen.init(256);
+			Key key = keygen.generateKey();
+
+            
+            cipher = XMLCipher.getInstance(XMLCipher.RSA_v1dot5);
+			cipher.init(XMLCipher.WRAP_MODE, pub);
+			EncryptedKey encryptedKey = cipher.encryptKey(d, key);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_256);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+			EncryptedData builder = cipher.getEncryptedData();
+
+			KeyInfo builderKeyInfo = builder.getKeyInfo();
+			if (builderKeyInfo == null) {
+				builderKeyInfo = new KeyInfo(d);
+				builder.setKeyInfo(builderKeyInfo);
+			}
+
+			builderKeyInfo.add(encryptedKey);
+
+            ed = cipher.doFinal(d, e);
+            log.debug("Encrypted document");
+            log.debug(toString(ed));
+
+
+            //decrypt
+			key = null;
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
+            cipher.init(XMLCipher.DECRYPT_MODE, null);
+			cipher.setKEK(priv);
+			dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+            log.debug("Output document");
+            log.debug(target);
+
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testAES128ElementRSAKWCipherUsingKEK skipped as necessary algorithms not available");
+		}
+    }
+
+	/**
+	 * Test encryption using a generated AES 192 bit key that is
+	 * encrypted using a 3DES key.  Then reverse by decrypting 
+	 * EncryptedKey by hand
+	 */
+
+	public void testAES192ElementAES256KWCipher() throws Exception {
+
+		Document d = document(); // source
+		Document ed = null;
+		Document dd = null;
+		Element e = (Element) d.getElementsByTagName(element()).item(index());
+		Element ee = null;
+
+		String source = null;
+		String target = null;
+
+        if (haveISOPadding && haveKeyWraps) {
+
+			source = toString(d);
+
+			// Set up a Key Encryption Key
+			byte[] bits192 = "abcdefghijklmnopqrstuvwx".getBytes();
+            DESedeKeySpec keySpec = new DESedeKeySpec(bits192);
+            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
+            Key kek = keyFactory.generateSecret(keySpec);
+
+			// Generate a traffic key
+			KeyGenerator keygen = KeyGenerator.getInstance("AES");
+			keygen.init(192);
+			Key key = keygen.generateKey();
+
+            cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES_KeyWrap);
+			cipher.init(XMLCipher.WRAP_MODE, kek);
+			EncryptedKey encryptedKey = cipher.encryptKey(d, key);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_192);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+			EncryptedData builder = cipher.getEncryptedData();
+
+			KeyInfo builderKeyInfo = builder.getKeyInfo();
+			if (builderKeyInfo == null) {
+				builderKeyInfo = new KeyInfo(d);
+				builder.setKeyInfo(builderKeyInfo);
+			}
+
+			builderKeyInfo.add(encryptedKey);
+
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+			key = null;
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+            cipher = XMLCipher.getInstance();
+            cipher.init(XMLCipher.DECRYPT_MODE, null);
+
+			EncryptedData encryptedData = cipher.loadEncryptedData(ed, ee);
+			
+			if(encryptedData == null) {
+				System.out.println("ed is null");
+			}
+			else if (encryptedData.getKeyInfo() == null) {
+				System.out.println("ki is null");
+			}
+			EncryptedKey ek = encryptedData.getKeyInfo().itemEncryptedKey(0);
+
+			if (ek != null) {
+				XMLCipher keyCipher = XMLCipher.getInstance();
+				keyCipher.init(XMLCipher.UNWRAP_MODE, kek);
+				key = keyCipher.decryptKey(ek, encryptedData.getEncryptionMethod().getAlgorithm());
+			}
+
+			// Create a new cipher just to be paranoid
+			XMLCipher cipher3 = XMLCipher.getInstance();
+			cipher3.init(XMLCipher.DECRYPT_MODE, key);
+            dd = cipher3.doFinal(ed, ee);
+
+            target = toString(dd);
+
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testAES192ElementAES256KWCipher skipped as necessary algorithms not available");
+		}
+    }
+
+    public void testTrippleDesElementCipher() throws Exception {
+        Document d = document(); // source
+        Document ed = null;      // target
+        Document dd = null;      // target
+        Element e = (Element) d.getElementsByTagName(element()).item(index());
+        Element ee = null;
+
+        String source = null;
+        String target = null;
+
+        if (haveISOPadding) {
+
+			source = toString(d);
+
+            // prepare for encryption
+            byte[] passPhrase = "24 Bytes per DESede key!".getBytes();
+            DESedeKeySpec keySpec = new DESedeKeySpec(passPhrase);
+            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
+            SecretKey key = keyFactory.generateSecret(keySpec);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+            cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
+            cipher.init(XMLCipher.DECRYPT_MODE, key);
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+			EncryptedData encryptedData = cipher.loadEncryptedData(ed, ee);
+			Assert.assertEquals(encryptedData.getEncryptionMethod().getAlgorithm(), 
+								XMLCipher.TRIPLEDES);
+            dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testTrippleDesElementCipher skipped as necessary algorithms not available");
+		}
+    }
+
+    public void testAes128ElementCipher() throws Exception {
+        byte[] bits128 = {
+            (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13,
+            (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,
+            (byte) 0x18, (byte) 0x19, (byte) 0x1A, (byte) 0x1B,
+            (byte) 0x1C, (byte) 0x1D, (byte) 0x1E, (byte) 0x1F};
+        Key key = new SecretKeySpec(bits128, "AES");
+
+        Document d = document(); // source
+        Document ed = null;      // target
+        Document dd = null;      // target
+        Element e = (Element) d.getElementsByTagName(element()).item(index());
+        Element ee = null;
+
+        String source = null;
+        String target = null;
+
+        if (haveISOPadding) {
+
+			source = toString(d);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
+            cipher.init(XMLCipher.DECRYPT_MODE, key);
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+			EncryptedData encryptedData = cipher.loadEncryptedData(ed, ee);
+			Assert.assertEquals(encryptedData.getEncryptionMethod().getAlgorithm(), 
+								XMLCipher.AES_128);
+            dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testAes128ElementCipher skipped as necessary algorithms not available");
+		}
+    }
+
+    public void testAes192ElementCipher() throws Exception {
+        byte[] bits192 = {
+            (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B,
+            (byte) 0x0C, (byte) 0x0D, (byte) 0x0E, (byte) 0x0F,
+            (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13,
+            (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,
+            (byte) 0x18, (byte) 0x19, (byte) 0x1A, (byte) 0x1B,
+            (byte) 0x1C, (byte) 0x1D, (byte) 0x1E, (byte) 0x1F};
+        Key key = new SecretKeySpec(bits192, "AES");
+
+        Document d = document(); // source
+        Document ed = null;      // target
+        Document dd = null;      // target
+        Element e = (Element) d.getElementsByTagName(element()).item(index());
+        Element ee = null;
+
+        String source = null;
+        String target = null;
+
+        if (haveISOPadding) {
+
+			source = toString(d);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_192);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_192);
+            cipher.init(XMLCipher.DECRYPT_MODE, key);
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+			EncryptedData encryptedData = cipher.loadEncryptedData(ed, ee);
+			Assert.assertEquals(encryptedData.getEncryptionMethod().getAlgorithm(), 
+								XMLCipher.AES_192);
+            dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testAes192ElementCipher skipped as necessary algorithms not available");
+		}
+    }
+
+    public void testAes265ElementCipher() throws Exception {
+        byte[] bits256 = {
+            (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03,
+            (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
+            (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B,
+            (byte) 0x0C, (byte) 0x0D, (byte) 0x0E, (byte) 0x0F,
+            (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13,
+            (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,
+            (byte) 0x18, (byte) 0x19, (byte) 0x1A, (byte) 0x1B,
+            (byte) 0x1C, (byte) 0x1D, (byte) 0x1E, (byte) 0x1F};
+        Key key = new SecretKeySpec(bits256, "AES");
+
+        Document d = document(); // source
+        Document ed = null;      // target
+        Document dd = null;      // target
+        Element e = (Element) d.getElementsByTagName(element()).item(index());
+        Element ee = null;
+
+        String source = null;
+        String target = null;
+
+        if (haveISOPadding) {
+
+			source = toString(d);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_256);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+            cipher = XMLCipher.getInstance(XMLCipher.AES_256);
+            cipher.init(XMLCipher.DECRYPT_MODE, key);
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+			EncryptedData encryptedData = cipher.loadEncryptedData(ed, ee);
+			Assert.assertEquals(encryptedData.getEncryptionMethod().getAlgorithm(), 
+								XMLCipher.AES_256);
+            dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testAes265ElementCipher skipped as necessary algorithms not available");
+		}
+    }
+
+    /*
+	 * Test case for when the entire document is encrypted and decrypted
+	 * In this case the EncryptedData becomes the root element of the document
+	 */
+
+    public void testTrippleDesDocumentCipher() throws Exception {
+        Document d = document(); // source
+        Document ed = null;      // target
+        Document dd = null;      // target
+        Element e = d.getDocumentElement();
+        Element ee = null;
+
+        String source = null;
+        String target = null;
+
+        if (haveISOPadding) {
+
+			source = toString(d);
+
+            // prepare for encryption
+            byte[] passPhrase = "24 Bytes per DESede key!".getBytes();
+            DESedeKeySpec keySpec = new DESedeKeySpec(passPhrase);
+            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
+            SecretKey key = keyFactory.generateSecret(keySpec);
+
+            // encrypt
+            cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
+            cipher.init(XMLCipher.ENCRYPT_MODE, key);
+            ed = cipher.doFinal(d, e);
+
+            //decrypt
+            cipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
+            cipher.init(XMLCipher.DECRYPT_MODE, key);
+            ee = (Element) ed.getElementsByTagName("xenc:EncryptedData").item(0);
+            dd = cipher.doFinal(ed, ee);
+
+            target = toString(dd);
+
+			Assert.assertEquals(source, target);
+		}
+		else {
+			log.warn("Test testTrippleDesDocumentCipher skipped as necessary algorithms not available");
+		}
+    }
+
+	/*
+	 * Test a Cipher Reference
+	 */
+
+	public void testSameDocumentCipherReference() throws Exception {
+
+        if (haveISOPadding) {
+			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+			DocumentBuilder db = dbf.newDocumentBuilder();
+
+			Document d = db.newDocument();
+
+			Element docElement = d.createElement("EncryptedDoc");
+			d.appendChild(docElement);
+
+			// Create the XMLCipher object
+			cipher = XMLCipher.getInstance();
+
+			EncryptedData ed = 
+				cipher.createEncryptedData(CipherData.REFERENCE_TYPE,
+									   "#CipherTextId");
+			EncryptionMethod em =
+				cipher.createEncryptionMethod(XMLCipher.AES_128);
+
+			ed.setEncryptionMethod(em);
+
+			org.apache.xml.security.encryption.Transforms xencTransforms =
+				cipher.createTransforms(d);
+			ed.getCipherData().getCipherReference().setTransforms(xencTransforms);
+			org.apache.xml.security.transforms.Transforms dsTransforms =
+				xencTransforms.getDSTransforms();
+
+			// An XPath transform
+			XPathContainer xpc = new XPathContainer(d);
+			xpc.setXPath("self::text()[parent::CipherText[@Id=\"CipherTextId\"]]");
+			dsTransforms.addTransform(org.apache.xml.security.transforms.Transforms.TRANSFORM_XPATH, 
+									  xpc.getElementPlusReturns());
+
+			// Add a Base64 Transforms
+			dsTransforms.addTransform(
+									  org.apache.xml.security.transforms.Transforms.TRANSFORM_BASE64_DECODE);
+
+			Element ee = cipher.martial(d, ed);
+
+			docElement.appendChild(ee);
+
+			// Add the cipher text
+			Element encryptedElement = d.createElement("CipherText");
+			encryptedElement.setAttributeNS(null, "Id", "CipherTextId");
+			IdResolver.registerElementById(encryptedElement, "CipherTextId");
+			encryptedElement.appendChild(d.createTextNode(tstBase64EncodedString));
+			docElement.appendChild(encryptedElement);
+			// dump(d);
+
+			// Now the decrypt, with a brand new cipher
+			XMLCipher cipherDecrypt = XMLCipher.getInstance();
+			Key key = 
+				new SecretKeySpec("abcdefghijklmnop".getBytes("ASCII"), "AES");
+
+			cipherDecrypt.init(XMLCipher.DECRYPT_MODE, key);
+			byte[] decryptBytes = cipherDecrypt.decryptToByteArray(ee);
+
+			Assert.assertEquals(new String(decryptBytes, "ASCII"), 
+								new String("A test encrypted secret"));
+		}
+		else {
+			log.warn("Test testSameDocumentCipherReference skipped as necessary algorithms not available");
+		}
+
+	}
+
+	private String toString (Node n)
+		throws Exception {
+
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		Canonicalizer c14n = Canonicalizer.getInstance
+			(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+
+		byte[] serBytes = c14n.canonicalizeSubtree(n);
+		baos.write(serBytes);
+		baos.close();
+
+		return baos.toString("UTF-8");
+
+	}
+		
+   static {
+      org.apache.xml.security.Init.init();
+   }
+
+}
diff --git a/src_unitTests/org/apache/xml/security/test/external/org/apache/xalan/XPathAPI/AttributeAncestorOrSelfTest.java b/src_unitTests/org/apache/xml/security/test/external/org/apache/xalan/XPathAPI/AttributeAncestorOrSelfTest.java
new file mode 100644
index 0000000..1580980
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/external/org/apache/xalan/XPathAPI/AttributeAncestorOrSelfTest.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.external.org.apache.xalan.XPathAPI;
+
+
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.apache.xpath.objects.XObject;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * This test is to ensure that the owner element of an Attribute is on the
+ * ancestor-or-self axis.
+ *
+ * @author $Author$
+ */
+public class AttributeAncestorOrSelfTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    AttributeAncestorOrSelfTest.class.getName());
+
+   /** Field xercesVerStr */
+   static String xercesVerStr = XMLUtils.getXercesVersion();
+
+   /** Field xalanVerStr */
+   static String xalanVerStr = XMLUtils.getXalanVersion();
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(AttributeAncestorOrSelfTest.class);
+   }
+
+   /**
+    * Constructor AttributeAncestorOrSelf
+    *
+    * @param Name_
+    */
+   public AttributeAncestorOrSelfTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                AttributeAncestorOrSelfTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Process input args and execute the XPath.
+    *
+    * @param xmlString
+    * @param ctxNodeStr
+    * @param evalStr
+    *
+    * @throws Exception
+    */
+   static private boolean isAncestorOf(
+           String xmlString, String ctxNodeStr, String evalStr)
+              throws Exception {
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setValidating(false);
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      Document document =
+         db.parse(new ByteArrayInputStream(_nodeSetInput1.getBytes()));
+      Element nscontext = document.createElementNS(null, "nscontext");
+
+      nscontext.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ds", "http://www.w3.org/2000/09/xmldsig#");
+
+      Node ctxNode = XPathAPI.selectSingleNode(document, ctxNodeStr, nscontext);
+      XObject include = XPathAPI.eval(ctxNode, evalStr, nscontext);
+
+      return include.bool();
+   }
+
+   //J-
+   static final String _nodeSetInput1 =
+     "<?xml version=\"1.0\"?>\n"
+   + "<ds:Signature xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>" + "\n"
+   + "<ds:Object Id='id1'>" + "\n"
+   + "<!-- the comment -->and text"
+   + "</ds:Object>" + "\n"
+   + "</ds:Signature>";
+   //J+
+
+   /**
+    * Method test01
+    *
+    * @throws Exception
+    */
+   public static void test01() throws Exception {
+
+      String ctxNodeStr = "/ds:Signature/ds:Object";
+      String evalStr = "ancestor-or-self::ds:Signature";
+
+      assertTrue("Bad " + ctxNodeStr + " " + evalStr + "  " + xalanVerStr,
+                 isAncestorOf(_nodeSetInput1, ctxNodeStr, evalStr));
+   }
+
+   /**
+    * Method test02
+    *
+    * @throws Exception
+    */
+   public static void test02() throws Exception {
+
+      String ctxNodeStr = "/ds:Signature/ds:Object/text()";
+      String evalStr = "ancestor-or-self::ds:Signature";
+
+      assertTrue("Bad " + ctxNodeStr + " " + evalStr + "  " + xalanVerStr,
+                 isAncestorOf(_nodeSetInput1, ctxNodeStr, evalStr));
+   }
+
+   /**
+    * Method test03
+    *
+    * @throws Exception
+    */
+   public static void test03() throws Exception {
+
+      String ctxNodeStr = "/ds:Signature/ds:Object/@Id";
+      String evalStr = "ancestor-or-self::ds:Object";
+
+      assertTrue("Bad " + ctxNodeStr + " " + evalStr + "  " + xalanVerStr,
+                 isAncestorOf(_nodeSetInput1, ctxNodeStr, evalStr));
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/external/org/apache/xalan/XPathAPI/XalanBug1425Test.java b/src_unitTests/org/apache/xml/security/test/external/org/apache/xalan/XPathAPI/XalanBug1425Test.java
new file mode 100644
index 0000000..c2d9b6e
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/external/org/apache/xalan/XPathAPI/XalanBug1425Test.java
@@ -0,0 +1,260 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.external.org.apache.xalan.XPathAPI;
+
+
+
+// This file uses 4 space indents, no tabs.
+import java.io.ByteArrayInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.traversal.NodeIterator;
+
+
+/**
+ * Testcase for testing the <A HREF="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=1425">Xalan Bug 1425</A>.
+ *
+ * This fails with Xalan v2.1.0 and works with Xalan v2.2D6.
+ */
+public class XalanBug1425Test extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    XalanBug1425Test.class.getName());
+
+   /** Field xercesVerStr */
+   static String xercesVerStr = XMLUtils.getXercesVersion();
+
+   /** Field xalanVerStr */
+   static String xalanVerStr = XMLUtils.getXalanVersion();
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(XalanBug1425Test.class);
+   }
+
+   /**
+    * Constructor XalanBug1425Test
+    *
+    * @param Name_
+    */
+   public XalanBug1425Test(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                XalanBug1425Test.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Process input args and execute the XPath.
+    *
+    * @param xmlString
+    * @param xpath
+    *
+    * @throws Exception
+    */
+   static private boolean containsDocumentElement(
+           String xmlString, String xpath) throws Exception {
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      Document doc = db.parse(new ByteArrayInputStream(xmlString.getBytes()));
+
+      // Set up an identity transformer to use as serializer.
+      Transformer serializer =
+         TransformerFactory.newInstance().newTransformer();
+
+      serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+
+      // Use the simple XPath API to select a nodeIterator.
+      // System.out.println("Querying DOM using " + xpath);
+      NodeIterator nl = XPathAPI.selectNodeIterator(doc, xpath);
+
+      // Serialize the found nodes to System.out.
+      // System.out.println("<output>");
+      String[] nodeTypeString = new String[]{ "", "ELEMENT", "ATTRIBUTE",
+                                              "TEXT_NODE", "CDATA_SECTION",
+                                              "ENTITY_REFERENCE", "ENTITY",
+                                              "PROCESSING_INSTRUCTION",
+                                              "COMMENT", "DOCUMENT",
+                                              "DOCUMENT_TYPE",
+                                              "DOCUMENT_FRAGMENT", "NOTATION" };
+      Node n;
+
+      while ((n = nl.nextNode()) != null) {
+
+         // System.out.println("<node" + ++i + " nodeType=\"" + nodeTypeString[n.getNodeType()] + "\">");
+         // serializer.transform(new DOMSource(n), new StreamResult(System.out));
+         // System.out.println("</node" + i + ">");
+         // System.out.println();
+         if (n == doc.getDocumentElement()) {
+            return true;
+         }
+      }
+
+      // System.out.println("</output>");
+      return false;
+   }
+
+   /**
+    * Method testBad01
+    *
+    * @throws Exception
+    */
+   public static void testBad01() throws Exception {
+
+      String xml = "<doc><a /> </doc><!-- -->";
+      String desc = " # mixed content and following comment";
+      String xpath = "(//.)";
+
+      assertTrue("Bad " + xml + desc + "  " + xalanVerStr,
+                 containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testBad02
+    *
+    * @throws Exception
+    */
+   public static void testBad02() throws Exception {
+
+      String xml = "<doc><a /> </doc><?pi?>";
+      String desc = " # mixed content and following PI";
+      String xpath = "(//.)";
+
+      assertTrue("Bad " + xml + desc + "  " + xalanVerStr,
+                 containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testBad03
+    *
+    * @throws Exception
+    */
+   public static void testBad03() throws Exception {
+
+      String xml = "<doc><a /><b /></doc><!-- -->";
+      String desc = " # mixed content and following comment";
+      String xpath = "(//.)";
+
+      assertTrue("Bad " + xml + desc + "  " + xalanVerStr,
+                 containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testGood01
+    *
+    * @throws Exception
+    */
+   public static void testGood01() throws Exception {
+
+      String xml = "<doc><a /></doc><!-- -->";
+      String desc = " # 'clean' content and following comment";
+      String xpath = "(//.)";
+
+      assertTrue("Good " + xml + desc, containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testGood02
+    *
+    * @throws Exception
+    */
+   public static void testGood02() throws Exception {
+
+      String xml = "<doc><a /> </doc>";
+      String desc = " # mixed content and nothing follows";
+      String xpath = "(//.)";
+
+      assertTrue("Good " + xml + desc, containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testGood03
+    *
+    * @throws Exception
+    */
+   public static void testGood03() throws Exception {
+
+      String xml = "<!-- --><doc><a /> </doc>";
+      String desc = " # mixed content and preceding comment";
+      String xpath = "(//.)";
+
+      assertTrue("Good " + xml + desc, containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testGood04
+    *
+    * @throws Exception
+    */
+   public static void testGood04() throws Exception {
+
+      String xml = "<?pi?><doc><a /> </doc>";
+      String desc = " # mixed content and preceding PI";
+      String xpath = "(//.)";
+
+      assertTrue("Good " + xml + desc, containsDocumentElement(xml, xpath));
+   }
+
+   /**
+    * Method testGood05
+    *
+    * @throws Exception
+    */
+   public static void testGood05() throws Exception {
+
+      String xml = "<doc><a /><b /></doc>";
+      String desc = " # mixed ElemContent";
+      String xpath = "(//.)";
+
+      assertTrue("Good " + xml + desc, containsDocumentElement(xml, xpath));
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/interop/BaltimoreTest.java b/src_unitTests/org/apache/xml/security/test/interop/BaltimoreTest.java
new file mode 100644
index 0000000..68329ae
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/interop/BaltimoreTest.java
@@ -0,0 +1,578 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.interop;
+
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.test.utils.resolver.OfflineResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+
+
+/**
+ * This test is to ensure interoperability with the examples provided by Merlin Huges
+ * from Baltimore using KeyTools XML. These test vectors are located in the directory
+ * <CODE>data/ie/baltimore/merlin-examples/</CODE>.
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.baltimore.com/keytools/xml/index.html">The KeyTools XML Website</A>
+ */
+public class BaltimoreTest extends InteropTest {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(BaltimoreTest.class.getName());
+
+   /** Field merlinsDir15           */
+   static String merlinsDir15 =
+      "data/ie/baltimore/merlin-examples/merlin-xmldsig-fifteen/";
+   static String merlinsDir16 =
+   	"data/ie/baltimore/merlin-examples/merlin-xmldsig-sixteen";
+   static String merlinsDir23 =
+   	"data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/";
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      TestSuite suite = new TestSuite(BaltimoreTest.class);
+
+      return suite;
+   }
+   /**
+    * Constructor BaltimoreTest
+    *
+    * @param Name_
+    */
+   public BaltimoreTest(String Name_) {
+      super(Name_);
+   }
+
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", BaltimoreTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method test_fifteen_enveloping_hmac_sha1
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_enveloping_hmac_sha1() throws Exception {
+
+      String filename = merlinsDir15 + "signature-enveloping-hmac-sha1.xml";
+      boolean verify = this.verifyHMAC(filename, new OfflineResolver(), false,
+                                       "secret".getBytes("ASCII"));
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_enveloping_hmac_sha1_40
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_enveloping_hmac_sha1_40() throws Exception {
+
+      String filename = merlinsDir15 + "signature-enveloping-hmac-sha1-40.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      byte[] hmacKey = "secret".getBytes("ASCII");
+      boolean verify = false;
+
+      try {
+         verify = this.verifyHMAC(filename, resolver, followManifests, hmacKey);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_enveloped_dsa
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_enveloped_dsa() throws Exception {
+
+      String filename = merlinsDir15 + "signature-enveloped-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_enveloping_b64_dsa
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_enveloping_b64_dsa() throws Exception {
+
+      String filename = merlinsDir15 + "signature-enveloping-b64-dsa.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_enveloping_dsa
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_enveloping_dsa() throws Exception {
+
+      String filename = merlinsDir15 + "signature-enveloping-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_enveloping_rsa
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_enveloping_rsa() throws Exception {
+
+      String filename = merlinsDir15 + "signature-enveloping-rsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_external_b64_dsa
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_external_b64_dsa() throws Exception {
+
+      String filename = merlinsDir15 + "signature-external-b64-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_fifteen_external_dsa
+    *
+    * @throws Exception
+    */
+   public void test_fifteen_external_dsa() throws Exception {
+
+      String filename = merlinsDir15 + "signature-external-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_sixteen_external_dsa
+    *
+    * @throws Exception
+    */
+   public void test_sixteen_external_dsa() throws Exception {
+
+      String filename =
+         merlinsDir16 + "/signature.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_sixteen_bad_signature. This tests make sure that an
+    * invalid signature is not valid. This is validating merlin's 16
+    * signature but some of the referenced content has been modified so
+    * some of the references should be invalid.
+    *
+    * @throws Exception
+    */
+   public void test_sixteen_bad_signature() throws Exception {
+
+      String filename =
+         merlinsDir16 + "/bad-signature.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (verify) {
+         log.error("Verification passed (should have failed) for " + filename);
+      }
+
+      assertFalse(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_enveloping_hmac_sha1
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_enveloping_hmac_sha1() throws Exception {
+
+      String filename = merlinsDir23 + "signature-enveloping-hmac-sha1.xml";
+      boolean verify = this.verifyHMAC(filename, new OfflineResolver(), false,
+                                       "secret".getBytes("ASCII"));
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_enveloping_hmac_sha1_40
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_enveloping_hmac_sha1_40() throws Exception {
+
+      String filename = merlinsDir23 + "signature-enveloping-hmac-sha1-40.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      byte[] hmacKey = "secret".getBytes("ASCII");
+      boolean verify = false;
+
+      try {
+         verify = this.verifyHMAC(filename, resolver, followManifests, hmacKey);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_enveloped_dsa
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_enveloped_dsa() throws Exception {
+
+      String filename = merlinsDir23 + "signature-enveloped-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_enveloping_b64_dsa
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_enveloping_b64_dsa() throws Exception {
+
+      String filename = merlinsDir23 + "signature-enveloping-b64-dsa.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_enveloping_dsa
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_enveloping_dsa() throws Exception {
+
+      String filename = merlinsDir23 + "signature-enveloping-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_enveloping_rsa
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_enveloping_rsa() throws Exception {
+
+      String filename = merlinsDir23 + "signature-enveloping-rsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_external_b64_dsa
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_external_b64_dsa() throws Exception {
+
+      String filename = merlinsDir23 + "signature-external-b64-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_external_dsa
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_external_dsa() throws Exception {
+
+      String filename = merlinsDir23 + "signature-external-dsa.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_twenty_three_external_dsa_2
+    *
+    * @throws Exception
+    */
+   public void test_twenty_three_external_dsa_2() throws Exception {
+
+      String filename =
+         merlinsDir23 + "signature.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   static {
+   	
+   	  String basedir = System.getProperty("basedir");
+   	  if(basedir != null && !"".equals(basedir)) {
+   		merlinsDir15 = basedir + "/" + merlinsDir15;
+   		merlinsDir16 = basedir + "/" + merlinsDir16;
+        merlinsDir23 = basedir + "/" + merlinsDir23;
+   	  }
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/interop/IAIKTest.java b/src_unitTests/org/apache/xml/security/test/interop/IAIKTest.java
new file mode 100644
index 0000000..38b5e24
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/interop/IAIKTest.java
@@ -0,0 +1,435 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.interop;
+
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.test.utils.resolver.OfflineResolver;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.apache.xml.security.utils.resolver.implementations.ResolverAnonymous;
+
+
+/**
+ * This test is to ensure interoperability with the examples provided by the IAIK
+ * XML Signature implementation. Thanks to Gregor Karlinger who provided these
+ * test vectors. They are located in the directory <CODE>data/at/iaik/ixsil/</CODE>.
+ *
+ * @author $Author$
+ * @see <A HREF="http://jcewww.iaik.at/products/ixsil/index.php">The IAIK IXSIL Website</A>
+ */
+public class IAIKTest extends InteropTest {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    IAIKTest.class.getName());
+
+   /** Field gregorsDir */
+   static String gregorsDir = "data/at/iaik/ixsil/";
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+
+      TestSuite suite = new TestSuite(IAIKTest.class);
+
+      return suite;
+   }
+
+   /**
+    * Constructor IAIKTest
+    *
+    * @param Name_
+    */
+   public IAIKTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", IAIKTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method test_signatureAlgorithms_signatures_hMACShortSignature
+    *
+    * @throws Exception
+    */
+   public void test_signatureAlgorithms_signatures_hMACShortSignature()
+           throws Exception {
+
+      String filename =
+         gregorsDir + "signatureAlgorithms/signatures/hMACShortSignature.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      byte[] hmacKey = "secret".getBytes("ASCII");
+      boolean verify = false;
+
+      try {
+         verify = this.verifyHMAC(filename, resolver, followManifests, hmacKey);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_signatureAlgorithms_signatures_hMACSignature
+    *
+    * @throws Exception
+    */
+   public void test_signatureAlgorithms_signatures_hMACSignature()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "signatureAlgorithms/signatures/hMACSignature.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      byte[] hmacKey = "secret".getBytes("ASCII");
+      boolean verify = false;
+
+      try {
+         verify = this.verifyHMAC(filename, resolver, followManifests, hmacKey);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_coreFeatures_signatures_manifestSignature
+    *
+    * @throws Exception
+    */
+   public void test_coreFeatures_signatures_manifestSignature_core()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "coreFeatures/signatures/manifestSignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Core validation crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Core validation failed for " + filename);
+      }
+
+      assertTrue("Core validation failed for " + filename, verify);
+   }
+
+   /**
+    * Method test_coreFeatures_signatures_manifestSignature_manifest
+    *
+    * @throws Exception
+    */
+   public void test_coreFeatures_signatures_manifestSignature_manifest()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "coreFeatures/signatures/manifestSignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = true;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Following the ds:Manifest failed for " + filename);
+      }
+
+      assertTrue("Following the ds:Manifest failed for " + filename, verify);
+   }
+
+   /**
+    * Method test_coreFeatures_signatures_signatureTypesSignature
+    *
+    * @throws Exception
+    */
+   public void test_coreFeatures_signatures_signatureTypesSignature()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "coreFeatures/signatures/signatureTypesSignature.xml";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue("Verification failed for " + filename, verify);
+   }
+
+   /**
+    * Method test_coreFeatures_signatures_anonymousReferenceSignature
+    *
+    * @throws Exception
+    */
+   public void test_coreFeatures_signatures_anonymousReferenceSignature()
+           throws Exception {
+
+      String filename =
+         gregorsDir + "coreFeatures/signatures/anonymousReferenceSignature.xml";
+      String anonymousRef =
+         gregorsDir + "coreFeatures/samples/anonymousReferenceContent.xml";
+      ResourceResolverSpi resolver = new ResolverAnonymous(anonymousRef);
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_signatureAlgorithms_signatures_dSASignature
+    *
+    * @throws Exception
+    */
+   public void test_signatureAlgorithms_signatures_dSASignature()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "signatureAlgorithms/signatures/dSASignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_signatureAlgorithms_signatures_rSASignature
+    *
+    * @throws Exception
+    */
+   public void test_signatureAlgorithms_signatures_rSASignature()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "signatureAlgorithms/signatures/rSASignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_transforms_signatures_base64DecodeSignature
+    *
+    * @throws Exception
+    */
+   public void test_transforms_signatures_base64DecodeSignature()
+           throws Exception {
+
+      String filename = gregorsDir
+                        + "transforms/signatures/base64DecodeSignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_transforms_signatures_c14nSignature
+    *
+    * @throws Exception
+    */
+   public void test_transforms_signatures_c14nSignature() throws Exception {
+
+      String filename = gregorsDir + "transforms/signatures/c14nSignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_transforms_signatures_envelopedSignatureSignature
+    *
+    * @throws Exception
+    */
+   public void test_transforms_signatures_envelopedSignatureSignature()
+           throws Exception {
+
+      String filename =
+         gregorsDir + "transforms/signatures/envelopedSignatureSignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_transforms_signatures_xPathSignature
+    *
+    * @throws Exception
+    */
+   public void test_transforms_signatures_xPathSignature() throws Exception {
+
+      String filename = gregorsDir + "transforms/signatures/xPathSignature.xml";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   static {
+   	String basedir = System.getProperty("basedir");
+   	if(basedir != null && !"".equals(basedir)) {
+   		gregorsDir = basedir + "/" + gregorsDir;
+   	}
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/interop/IBMTest.java b/src_unitTests/org/apache/xml/security/test/interop/IBMTest.java
new file mode 100644
index 0000000..80d9368
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/interop/IBMTest.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.interop;
+
+
+
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.test.utils.resolver.OfflineResolver;
+import org.apache.xml.security.utils.JavaUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+
+
+/**
+ * This test is to ensure interoperability with the examples provided by the IBM
+ * XML Security Suite. They have to be located in the directory
+ * <CODE>data/com/ibm/xss4j-20030127/</CODE>.
+ * <BR />
+ * For license issues, the vectors are not included in the distibution. See
+ * <A HREF="../../../../../../../interop.html">the interop page</A> for more on this.
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.alphaworks.ibm.com/tech/xmlsecuritysuite">The IBM alphaWorks Website</A>
+ */
+public class IBMTest extends InteropTest {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(IBMTest.class.getName());
+
+   /** Field kentsDir           */
+   static final String kentsDir = "data/com/ibm/xss4j-20030127/";
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+
+      TestSuite suite = new TestSuite(IBMTest.class);
+
+      return suite;
+   }
+
+   /**
+    * Constructor IBMTest
+    *
+    * @param Name_
+    */
+   public IBMTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", IBMTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method test_enveloping_hmac
+    *
+    * @throws Exception
+    */
+   public void test_enveloping_hmac() throws Exception {
+
+      String filename = kentsDir + "enveloping-hmac.sig";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      byte[] hmacKey = JavaUtils.getBytesFromFile(kentsDir + "enveloping-hmac.key");
+      boolean verify = false;
+
+      try {
+         verify = this.verifyHMAC(filename, resolver, followManifests, hmacKey);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_detached_dsa
+    *
+    * @throws Exception
+    */
+   public void test_detached_dsa() throws Exception {
+      String filename = kentsDir + "detached-dsa.sig";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_detached_rsa
+    *
+    * @throws Exception
+    */
+   public void test_detached_rsa() throws Exception {
+      String filename = kentsDir + "detached-rsa.sig";
+      ResourceResolverSpi resolver = new OfflineResolver();
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_enveloped_dsa
+    *
+    * @throws Exception
+    */
+   public void test_enveloped_dsa() throws Exception {
+      String filename = kentsDir + "enveloped-dsa.sig";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_enveloped_rsa
+    *
+    * @throws Exception
+    */
+   public void test_enveloped_rsa() throws Exception {
+      String filename = kentsDir + "enveloped-rsa.sig";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_enveloping_dsa
+    *
+    * @throws Exception
+    */
+   public void test_enveloping_dsa() throws Exception {
+      String filename = kentsDir + "enveloping-dsa.sig";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_enveloping_rsa
+    *
+    * @throws Exception
+    */
+   public void test_enveloping_rsa() throws Exception {
+      String filename = kentsDir + "enveloping-rsa.sig";
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = false;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   /**
+    * Method test_enveloping_dsa_soaped_broken
+    *
+    * @throws Exception
+    */
+   public void test_enveloping_dsa_soaped_broken() throws Exception {
+      String filename = kentsDir + "enveloping-dsa-soaped-broken.sig";
+      if(!new File(filename).exists() ) {
+        System.err.println("Couldn't find: " + filename + " and couldn't do the test");
+        return;
+      }
+      ResourceResolverSpi resolver = null;
+      boolean followManifests = false;
+      boolean verify = true;
+
+      try {
+         verify = this.verify(filename, resolver, followManifests);
+      } catch (RuntimeException ex) {
+         log.error("Verification crashed for " + filename);
+         throw ex;
+      }
+
+      if (verify) {
+         log.error("Verification failed for " + filename + ", had to be broken but was successful");
+      }
+
+      assertTrue(filename, !verify);
+   }
+
+   /**
+    * Method test_enveloping_exclusive
+    *
+    * @throws Exception
+    * $todo$ implement exclusive-c14n
+    */
+   public void _not_active_test_enveloping_exclusive() throws Exception {
+     // exclusive c14n not supported yet
+   }
+
+   /**
+    * Method test_enveloping_exclusive_soaped
+    *
+    * @throws Exception
+    * $todo$ implement exclusive-c14n
+    */
+   public void _not_active_test_enveloping_exclusive_soaped() throws Exception {
+     // exclusive c14n not supported yet
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/interop/InteropTest.java b/src_unitTests/org/apache/xml/security/test/interop/InteropTest.java
new file mode 100644
index 0000000..d5d0678
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/interop/InteropTest.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.xml.security.test.interop;
+
+
+import java.io.File;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+
+import junit.framework.TestCase;
+
+import org.apache.xml.security.keys.KeyInfo;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author $Author$
+ */
+
+
+public class InteropTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(BaltimoreTest.class.getName());
+
+   /** Field xercesVerStr */
+   static String xercesVerStr = XMLUtils.getXercesVersion();
+
+   /** Field xalanVerStr */
+   static String xalanVerStr = XMLUtils.getXalanVersion();
+
+   /** Field dbf */
+   static javax.xml.parsers.DocumentBuilderFactory dbf = null;
+
+   public InteropTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method setUp
+    *
+    */
+   protected void setUp() {
+
+      dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance();
+
+      dbf.setNamespaceAware(true);
+   }
+
+
+   /**
+    * Method verifyHMAC
+    *
+    * @param filename
+    * @param resolver
+    * @param hmacKey
+    *
+    * @throws Exception
+    */
+   public boolean verifyHMAC(
+           String filename, ResourceResolverSpi resolver, boolean followManifests, byte[] hmacKey)
+              throws Exception {
+
+      File f = new File(filename);
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream(f));
+      Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                               Constants.SignatureSpecNS);
+      Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                              "//ds:Signature[1]", nscontext);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+
+      if (resolver != null) {
+         signature.addResourceResolver(resolver);
+      }
+      signature.setFollowNestedManifests(followManifests);
+
+      byte keybytes[] = hmacKey;
+      javax.crypto.SecretKey sk = signature.createSecretKey(keybytes);
+
+      return signature.checkSignatureValue(sk);
+   }
+
+   /**
+    * Method verify
+    *
+    * @param filename
+    * @param resolver
+    *
+    * @throws Exception
+    */
+  public boolean verify(String filename, ResourceResolverSpi resolver, boolean followManifests)
+           throws Exception {
+
+      File f = new File(filename);
+      javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
+      org.w3c.dom.Document doc = db.parse(f);
+      Element nscontext = XMLUtils.createDSctx(doc, "ds",
+                                               Constants.SignatureSpecNS);
+      Element sigElement = (Element) XPathAPI.selectSingleNode(doc,
+                              "//ds:Signature[1]", nscontext);
+      XMLSignature signature = new XMLSignature(sigElement,
+                                                f.toURL().toString());
+
+      if (resolver != null) {
+         signature.addResourceResolver(resolver);
+      }
+      signature.setFollowNestedManifests(followManifests);
+
+
+      KeyInfo ki = signature.getKeyInfo();
+
+      if (ki != null) {
+         X509Certificate cert = ki.getX509Certificate();
+
+         if (cert != null) {
+            return signature.checkSignatureValue(cert);
+         } else {
+            PublicKey pk = ki.getPublicKey();
+
+            if (pk != null) {
+               return signature.checkSignatureValue(pk);
+            } else {
+               throw new RuntimeException(
+                  "Did not find a public key, so I can't check the signature");
+            }
+         }
+      } else {
+         throw new RuntimeException("Did not find a KeyInfo");
+      }
+   }
+}
\ No newline at end of file
diff --git a/src_unitTests/org/apache/xml/security/test/interop/RSASecurityTest.java b/src_unitTests/org/apache/xml/security/test/interop/RSASecurityTest.java
new file mode 100644
index 0000000..be189b2
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/interop/RSASecurityTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.interop;
+
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+
+
+/**
+ * This test is to ensure interoperability with the examples provided by Blake Dournaee
+ * from RSA Security using Cert-J 2.01. These test vectors are located in the directory
+ * <CODE>data/com/rsasecurity/bdournaee/</CODE>.
+ *
+ * @author $Author$
+ * @see <A HREF="http://www.rsasecurity.com/products/bsafe/certj.html">RSA BSAFE Cert-J</A>
+ */
+public class RSASecurityTest extends InteropTest {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(RSASecurityTest.class.getName());
+
+   /** Field blakesDir           */
+   static String blakesDir =
+      "data/com/rsasecurity/bdournaee/";
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      TestSuite suite = new TestSuite(RSASecurityTest.class);
+
+      return suite;
+   }
+   /**
+    * Constructor RSASecurityTest
+    *
+    * @param Name_
+    */
+   public RSASecurityTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", RSASecurityTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   public void test_enveloping() throws Exception {
+
+      String filename = blakesDir + "certj201_enveloping.xml";
+      boolean followManifests = false;
+      ResourceResolverSpi resolver = null;
+      boolean verify = this.verify(filename, resolver, followManifests);
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+
+   public void test_enveloped() throws Exception {
+
+      String filename = blakesDir + "certj201_enveloped.xml";
+      boolean followManifests = false;
+      ResourceResolverSpi resolver = null;
+      boolean verify = this.verify(filename, resolver, followManifests);
+
+      if (!verify) {
+         log.error("Verification failed for " + filename);
+      }
+
+      assertTrue(filename, verify);
+   }
+
+   static {
+   	  String basedir = System.getProperty("basedir");
+   	  if(basedir != null && !"".equals(basedir)) {
+   		blakesDir = basedir + "/" + blakesDir;
+   	  }
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/interop/package.html b/src_unitTests/org/apache/xml/security/test/interop/package.html
new file mode 100644
index 0000000..748eaec
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/interop/package.html
@@ -0,0 +1,3 @@
+<HTML><HEAD></HEAD><BODY><P>
+contains unit tests for checking interop against XML instances creatind with other implementations.
+</P></BODY></HTML>
\ No newline at end of file
diff --git a/src_unitTests/org/apache/xml/security/test/package.html b/src_unitTests/org/apache/xml/security/test/package.html
new file mode 100644
index 0000000..d52e588
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/package.html
@@ -0,0 +1,8 @@
+<HTML> 
+<HEAD> </HEAD> 
+<BODY> 
+<P>
+{@link org.apache.xml.security.test} JUnit test cases.
+</P>
+</BODY> 
+</HTML>
diff --git a/src_unitTests/org/apache/xml/security/test/resource/TestVectorResolver.java b/src_unitTests/org/apache/xml/security/test/resource/TestVectorResolver.java
new file mode 100644
index 0000000..89d401a
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/resource/TestVectorResolver.java
@@ -0,0 +1,227 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.resource;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+
+
+/**
+ * This package is responsible for retrieving test vectors for our unit tests.
+ *
+ * @author Christian Geuer-Pollmann
+ * $todo$ Currently, the test vectors are in the file system under the data/ directory. It is planned to put them all into a single jar/zip which is deployed with the library.
+ */
+public class TestVectorResolver implements EntityResolver {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+			TestVectorResolver.class.getName());
+
+   /** Field _firstEntityResolved */
+   boolean _firstEntityResolved = false;
+
+   /** Field _firstEntitySystemId */
+   String _firstEntitySystemIdDirectory = null;
+
+   /**
+    * Method getCurrentDir
+    *
+    *
+    * @throws IOException
+    */
+   private String getCurrentDir() throws IOException {
+
+      String currentDir = new java.io.File(".").getCanonicalPath();
+
+      currentDir = currentDir.replace(File.separatorChar, '/');
+      currentDir = "file:///" + currentDir + "/";
+
+      return currentDir;
+   }
+
+   /**
+    * Method getFileName
+    *
+    * @param systemId
+    *
+    * @throws IOException
+    */
+   private String getFileName(String systemId) throws IOException {
+
+      // clean up file name
+      String currentDir = getCurrentDir();
+
+      if (systemId.startsWith(currentDir)) {
+         return systemId.substring(currentDir.length());
+      } else {
+         return systemId;
+      }
+   }
+
+   /**
+    * Method getFilePath
+    *
+    * @param systemId
+    *
+    * @throws IOException
+    */
+   private String getFilePath(String systemId) throws IOException {
+
+      String t = new File(systemId).getCanonicalPath();
+
+      t = t.replace(File.separatorChar, '/');
+      t = "file:///" + t;
+
+      String currentDir = getCurrentDir();
+
+      if (t.startsWith(currentDir)) {
+         t = t.substring(currentDir.length());
+      }
+
+      t = t.substring(0, t.lastIndexOf("/"));
+
+      return t;
+   }
+
+   /**
+    * Method set1stSystemId
+    *
+    * @param systemId
+    * @throws IOException
+    */
+   private void set1stSystemId(String systemId) throws IOException {
+
+      this._firstEntitySystemIdDirectory = getFilePath(systemId);
+
+      log.debug("this._firstEntitySystemIdDirectory = "
+                + this._firstEntitySystemIdDirectory);
+   }
+
+   /**
+    * Method getInputSource
+    *
+    * @param systemId
+    *
+    */
+   private InputStream getInputStream(String systemId) {
+
+      log.debug("getInputStream(" + systemId + ")");
+
+      // we don't use the file system but the ZIP resource
+      // return new InputSource(new FileInputStream(systemId));
+      byte result[] = (byte[]) TestVectorResolver.vectors.get(systemId);
+
+      if (result == null) {
+         log.fatal("requested " + systemId + " resulted in null");
+      }
+
+      return new ByteArrayInputStream(result);
+   }
+
+   /**
+    * Method resolveEntity
+    *
+    * @param publicId
+    * @param systemId
+    *
+    */
+   public InputSource resolveEntity(String publicId, String systemId) {
+
+      try {
+         if (!this._firstEntityResolved) {
+            this.set1stSystemId(systemId);
+         }
+
+         systemId = this.getFileName(systemId);
+
+         log.debug("publicId=\"" + publicId + "\" systemId=\"" + systemId
+                   + "\"");
+
+         // InputStream result = this.getInputStream(systemId);
+         // return new InputSource(result);
+         return new InputSource(new FileInputStream(systemId));
+      } catch (FileNotFoundException ex) {
+         return null;
+      } catch (IOException ex) {
+         return null;
+      }
+   }
+
+   /** Field alreadyInitialized */
+   static boolean alreadyInitialized = false;
+
+   /** Field zis */
+   static java.util.zip.ZipInputStream zis = null;
+
+   /** Field vectors */
+   static java.util.HashMap vectors = null;
+
+   /**
+    * Method init
+    *
+    */
+   public static void init() {
+
+      String thisClass =
+         "org.apache.xml.security.test.resource.TestVectorResolver";
+      String testVectorFile = "testvectors.zip";
+
+      if (!TestVectorResolver.alreadyInitialized) {
+         TestVectorResolver.alreadyInitialized = true;
+         TestVectorResolver.vectors = new java.util.HashMap(30);
+
+         try {
+            zis = new java.util.zip
+               .ZipInputStream(Class.forName(thisClass)
+                  .getResourceAsStream(testVectorFile));
+
+            java.util.zip.ZipEntry ze = null;
+
+            while ((ze = zis.getNextEntry()) != null) {
+               if (!ze.isDirectory()) {
+                  byte data[] =
+                     org.apache.xml.security.utils.JavaUtils
+                        .getBytesFromStream(zis);
+
+                  TestVectorResolver.vectors.put(ze.getName(), data);
+                  log.debug("Contents of " + thisClass + "/" + testVectorFile
+                            + "#" + ze.getName() + " " + data.length
+                            + " bytes");
+               }
+            }
+         } catch (java.lang.ClassNotFoundException e) {}
+         catch (java.io.IOException e) {}
+      }
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+      TestVectorResolver.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/resource/testvectors.zip b/src_unitTests/org/apache/xml/security/test/resource/testvectors.zip
new file mode 100644
index 0000000..35ce2d5
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/resource/testvectors.zip
Binary files differ
diff --git a/src_unitTests/org/apache/xml/security/test/signature/XMLSignatureInputTest.java b/src_unitTests/org/apache/xml/security/test/signature/XMLSignatureInputTest.java
new file mode 100644
index 0000000..875bae6
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/signature/XMLSignatureInputTest.java
@@ -0,0 +1,378 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.signature;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.CachedXPathAPI;
+import org.w3c.dom.Comment;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Unit test for {@link org.apache.xml.security.signature.XMLSignatureInput}
+ *
+ * @author Christian Geuer-Pollmann
+ * @see <A HREF="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4336">Bug 4336</A>
+ */
+public class XMLSignatureInputTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(XMLSignatureInputTest.class.getName());
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(XMLSignatureInputTest.class);
+   }
+
+   //J-
+   static final String _octetStreamTextInput = "Kleiner Test";
+   //J+
+
+   /**
+    * Constructor XMLSignatureInputTest
+    *
+    *
+    * @param Name_
+    *
+    */
+   public XMLSignatureInputTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    *
+    * @param args
+    *
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                XMLSignatureInputTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method printNodeSet
+    *
+    * @param nl
+    */
+   private void printNodeSet(NodeList nl) {
+
+      for (int i = 0; i < nl.getLength(); i++) {
+         log.debug("Type "
+                   + XMLUtils.getNodeTypeString(nl.item(i).getNodeType()));
+      }
+   }
+
+   /**
+    * Method testSetOctetStreamGetOctetStream
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    */
+   public static void testSetOctetStreamGetOctetStream()
+           throws IOException, CanonicalizationException,
+                  InvalidCanonicalizerException {
+
+      InputStream inputStream =
+         new ByteArrayInputStream(_octetStreamTextInput.getBytes("UTF-8"));
+      XMLSignatureInput input = new XMLSignatureInput(inputStream);
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      InputStream res = input.getOctetStream();
+      int off = 0;
+
+      while (res.available() > 0) {
+         byte array[] = new byte[1024];
+         int len = res.read(array);
+
+         baos.write(array, off, len);
+
+         off += len;
+      }
+
+      byte resBytes[] = baos.toByteArray();
+      String resString = new String(resBytes, "UTF-8");
+
+      assertTrue(resString.equals(_octetStreamTextInput));
+   }
+
+   //J-
+   static final String _nodeSetInput1 =
+        "<?xml version=\"1.0\"?>\n"
+      + "<!DOCTYPE doc [\n"
+      + "<!ELEMENT doc (n+)>\n"
+      + "<!ELEMENT n (#PCDATA)>\n"
+      + "]>\n"
+      + "<!-- full document with decl -->"
+      + "<doc>"
+      + "<n>1</n>"
+      + "<n>2</n>"
+      + "<n>3</n>"
+      + "<n>4</n>"
+      + "</doc>";
+   // added one for xmlns:xml since Xalan 2.2.D11
+   static final int _nodeSetInput1Nodes = 11; // was 10
+   static final int _nodeSetInput1NodesWithComments = _nodeSetInput1Nodes + 1;
+   //J+
+   //J-
+   static final String _nodeSetInput2 =
+        "<?xml version=\"1.0\"?>\n"
+      + "<!-- full document -->"
+      + "<doc>"
+      + "<n>1</n>"
+      + "<n>2</n>"
+      + "<n>3</n>"
+      + "<n>4</n>"
+      + "</doc>";
+   // added one for xmlns:xml since Xalan 2.2.D11
+   static final int _nodeSetInput2Nodes = 11; // was 10
+   static final int _nodeSetInput2NodesWithComments = _nodeSetInput2Nodes + 1;
+   //J+
+   //J-
+   static final String _nodeSetInput3 =
+        "<!-- document -->"
+      + "<doc>"
+      + "<n>1</n>"
+      + "<n>2</n>"
+      + "<n>3</n>"
+      + "<n>4</n>"
+      + "</doc>";
+   // added one for xmlns:xml since Xalan 2.2.D11
+   static final int _nodeSetInput3Nodes = 11; // was 10
+   static final int _nodeSetInput3NodesWithComments = _nodeSetInput3Nodes + 1;
+   //J+
+
+   /**
+    * Method getNodeSet1
+    *
+    *
+    * @throws ParserConfigurationException
+    * @throws TransformerException
+    */
+   private static Set getNodeSet1()
+           throws ParserConfigurationException, TransformerException {
+
+      // This should build
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setValidating(false);
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      Document doc = db.newDocument();
+      Comment c1 = doc.createComment("Small Comment Test");
+
+      doc.appendChild(c1);
+
+      Element root = doc.createElementNS(null, "RootElement");
+      Element e1 = doc.createElementNS(null, "Element1");
+      Element e2 = doc.createElementNS(null, "Element2");
+      Element e3 = doc.createElementNS(null, "Element3");
+      Text e3t = doc.createTextNode("Text in Element3");
+
+      e3.appendChild(e3t);
+      root.appendChild(e1);
+      root.appendChild(e2);
+      root.appendChild(e3);
+      doc.appendChild(root);
+
+      String s1 =
+         "<!--Small Comment Test--><RootElement><Element1/><Element2/><Element3>Text in Element3</Element3></RootElement>";
+
+      //XMLUtils.circumventBug2650(doc);
+
+      CachedXPathAPI cXPathAPI = new CachedXPathAPI();
+      NodeList nl = cXPathAPI.selectNodeList(doc,
+                                             "(//. | //@* | //namespace::*)");
+
+      return XMLUtils.convertNodelistToSet(nl);
+   }
+
+   /**
+    * Method testSetNodeSetGetOctetStream1
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws UnsupportedEncodingException
+    */
+   public static void testSetNodeSetGetOctetStream1()
+           throws IOException, UnsupportedEncodingException,
+                  ParserConfigurationException, SAXException,
+                  CanonicalizationException, InvalidCanonicalizerException,
+                  TransformerException {
+
+      XMLSignatureInput input = new XMLSignatureInput(getNodeSet1());
+      String definedWithoutComments =
+         "<RootElement><Element1></Element1><Element2></Element2><Element3>Text in Element3</Element3></RootElement>";
+
+      {
+
+         // input.setCanonicalizerURI(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
+         String resultWithoutComments = new String(input.getBytes(), "UTF-8");
+
+         /* FileOutputStream fos = new FileOutputStream ("xResult.xml");
+            fos.write(resultWithoutComments.getBytes()); */
+         assertTrue("testSetNodeSetGetOctetStream(false)",
+                    resultWithoutComments.equals(definedWithoutComments));
+      }
+   }
+
+   /**
+    * Method testIsInitialized
+    *
+    * @throws IOException
+    */
+   public static void testIsInitializedWithOctetStream() throws IOException {
+
+      InputStream inputStream =
+         new ByteArrayInputStream(_octetStreamTextInput.getBytes());
+      XMLSignatureInput input = new XMLSignatureInput(inputStream);
+
+      assertTrue("Input is initialized", input.isInitialized());
+   }
+
+   /**
+    * Method testOctetStreamIsOctetStream
+    *
+    * @throws IOException
+    */
+   public static void testOctetStreamIsOctetStream() throws IOException {
+
+      InputStream inputStream =
+         new ByteArrayInputStream(_octetStreamTextInput.getBytes());
+      XMLSignatureInput input = new XMLSignatureInput(inputStream);
+
+      assertTrue("Input is octet stream", input.isOctetStream());
+   }
+
+   /**
+    * Method testOctetStreamIsNotNodeSet
+    *
+    * @throws IOException
+    */
+   public static void testOctetStreamIsNotNodeSet() throws IOException {
+
+      InputStream inputStream =
+         new ByteArrayInputStream(_octetStreamTextInput.getBytes());
+      XMLSignatureInput input = new XMLSignatureInput(inputStream);
+
+      assertTrue("Input is not node set", !input.isNodeSet());
+   }
+
+   /**
+    * Method testIsInitializedWithNodeSet
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws UnsupportedEncodingException
+    */
+   public static void testIsInitializedWithNodeSet()
+           throws IOException, UnsupportedEncodingException,
+                  ParserConfigurationException, SAXException,
+                  CanonicalizationException, TransformerException {
+
+      XMLSignatureInput input = new XMLSignatureInput(getNodeSet1());
+
+      assertTrue("Input is initialized", input.isInitialized());
+   }
+
+   /**
+    * Method testNodeSetIsNotOctetStream
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws UnsupportedEncodingException
+    */
+   public static void testNodeSetIsNotOctetStream()
+           throws IOException, UnsupportedEncodingException,
+                  ParserConfigurationException, SAXException,
+                  CanonicalizationException, TransformerException {
+
+      XMLSignatureInput input = new XMLSignatureInput(getNodeSet1());
+
+      assertTrue("Input is not octet stream", !input.isOctetStream());
+   }
+
+   /**
+    * Method testNodeSetIsNodeSet
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws ParserConfigurationException
+    * @throws SAXException
+    * @throws TransformerException
+    * @throws UnsupportedEncodingException
+    */
+   public static void testNodeSetIsNodeSet()
+           throws IOException, UnsupportedEncodingException,
+                  ParserConfigurationException, SAXException,
+                  CanonicalizationException, TransformerException {
+
+      XMLSignatureInput input = new XMLSignatureInput(getNodeSet1());
+
+      assertTrue("Input is node set", input.isNodeSet());
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/transforms/implementations/TransformBase64DecodeTest.java b/src_unitTests/org/apache/xml/security/test/transforms/implementations/TransformBase64DecodeTest.java
new file mode 100644
index 0000000..d4fe8da
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/transforms/implementations/TransformBase64DecodeTest.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.transforms.implementations;
+
+
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.c14n.CanonicalizationException;
+import org.apache.xml.security.c14n.InvalidCanonicalizerException;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.InvalidTransformException;
+import org.apache.xml.security.transforms.TransformationException;
+import org.apache.xml.security.transforms.Transforms;
+import org.apache.xml.security.transforms.implementations.TransformBase64Decode;
+import org.apache.xml.security.utils.Constants;
+import org.apache.xml.security.utils.XMLUtils;
+import org.apache.xpath.XPathAPI;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+/**
+ * Unit test for {@link org.apache.xml.security.transforms.implementations.TransformBase64Decode}
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class TransformBase64DecodeTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    TransformBase64DecodeTest.class.getName());
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(TransformBase64DecodeTest.class);
+   }
+
+   /**
+    * Constructor TransformBase64DecodeTest
+    *
+    * @param Name_
+    */
+   public TransformBase64DecodeTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    * Method main
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                TransformBase64DecodeTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+   }
+
+   private static Document createDocument() throws ParserConfigurationException {
+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+      Document doc = db.newDocument();
+
+      if (doc == null) {
+          throw new RuntimeException("Could not create a Document");
+      } else {
+         log.debug("I could create the Document");
+      }
+      return doc;
+   }
+
+   /**
+    * Method createElement
+    *
+    *
+    * @throws ParserConfigurationException
+    */
+   private static Element createElement() throws ParserConfigurationException {
+
+      Document doc = TransformBase64DecodeTest.createDocument();
+
+      Element element = XMLUtils.createElementInSignatureSpace(doc, Constants._TAG_TRANSFORMS);
+
+      return element;
+   }
+
+   /**
+    * Method test1
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws InvalidTransformException
+    * @throws NotYetImplementedException
+    * @throws ParserConfigurationException
+    * @throws TransformationException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public static void test1()
+           throws IOException, InvalidTransformException,
+                  CanonicalizationException, InvalidCanonicalizerException,
+                  TransformationException,
+                  XMLSignatureException, XMLSecurityException,
+                  ParserConfigurationException {
+
+      // base64 encoded
+      String s1 =
+         "VGhlIFVSSSBvZiB0aGUgdHJhbnNmb3JtIGlzIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1s\n"
+         + "ZHNpZyNiYXNlNjQ=";
+
+      // base64 encoded twice
+      String s2 =
+         "VkdobElGVlNTU0J2WmlCMGFHVWdkSEpoYm5ObWIzSnRJR2x6SUdoMGRIQTZMeTkzZDNjdWR6TXVi\n"
+         + "M0puTHpJd01EQXZNRGt2ZUcxcwpaSE5wWnlOaVlYTmxOalE9";
+      Document doc = TransformBase64DecodeTest.createDocument();
+      Transforms t = new Transforms(doc);
+      doc.appendChild(t.getElement());
+      t.addTransform(TransformBase64Decode.implementedTransformURI);
+
+      XMLSignatureInput in =
+         new XMLSignatureInput(new ByteArrayInputStream(s1.getBytes()));
+      XMLSignatureInput out = t.performTransforms(in);
+      String result = new String(out.getBytes());
+
+      assertTrue(
+         result.equals(
+            "The URI of the transform is http://www.w3.org/2000/09/xmldsig#base64"));
+   }
+
+   /**
+    * Method testTwice
+    *
+    * @throws CanonicalizationException
+    * @throws IOException
+    * @throws InvalidCanonicalizerException
+    * @throws InvalidTransformException
+    * @throws NotYetImplementedException
+    * @throws ParserConfigurationException
+    * @throws TransformationException
+    * @throws XMLSecurityException
+    * @throws XMLSignatureException
+    */
+   public static void test2()
+           throws IOException, InvalidTransformException,
+                  TransformationException, CanonicalizationException,
+                  InvalidCanonicalizerException,
+                  XMLSignatureException, XMLSecurityException,
+                  ParserConfigurationException {
+
+      // base64 encoded twice
+      String s2 =
+         "VkdobElGVlNTU0J2WmlCMGFHVWdkSEpoYm5ObWIzSnRJR2x6SUdoMGRIQTZMeTkzZDNjdWR6TXVi\n"
+         + "M0puTHpJd01EQXZNRGt2ZUcxcwpaSE5wWnlOaVlYTmxOalE9";
+      Document doc = TransformBase64DecodeTest.createDocument();
+      Transforms t = new Transforms(doc);
+      doc.appendChild(t.getElement());
+
+      t.addTransform(TransformBase64Decode.implementedTransformURI);
+
+      XMLSignatureInput in =
+         new XMLSignatureInput(new ByteArrayInputStream(s2.getBytes()));
+      XMLSignatureInput out = t.performTransforms(t.performTransforms(in));
+      String result = new String(out.getBytes());
+
+      assertTrue(
+         result.equals(
+            "The URI of the transform is http://www.w3.org/2000/09/xmldsig#base64"));
+   }
+
+   /**
+    * Method test3
+    *
+    * @throws Exception
+    */
+   public static void test3() throws Exception {
+      //J-
+      String input = ""
+         + "<Object xmlns:signature='http://www.w3.org/2000/09/xmldsig#'>\n"
+         + "<signature:Base64>\n"
+         + "VGhlIFVSSSBvZiB0aGU   gdHJhbn<RealText>Nmb  3JtIGlzIG<test/>h0dHA6</RealText>Ly93d3cudzMub3JnLzIwMDAvMDkveG1s\n"
+         + "ZHNpZyNiYXNlNjQ=\n"
+         + "</signature:Base64>\n"
+         + "</Object>\n"
+         ;
+      //J+
+      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+
+      dfactory.setNamespaceAware(true);
+
+      DocumentBuilder db = dfactory.newDocumentBuilder();
+
+      db.setErrorHandler(new org.apache.xml.security.utils
+         .IgnoreAllErrorHandler());
+
+      Document doc = db.parse(new ByteArrayInputStream(input.getBytes()));
+      //XMLUtils.circumventBug2650(doc);
+      Element nscontext = XMLUtils.createDSctx(doc, "ds", Constants.SignatureSpecNS);
+
+      Node base64Node = XPathAPI.selectSingleNode(doc, "//ds:Base64", nscontext);
+      XMLSignatureInput xmlinput = new XMLSignatureInput(base64Node);
+
+      Document doc2 = TransformBase64DecodeTest.createDocument();
+      Transforms t = new Transforms(doc2);
+      doc2.appendChild(t.getElement());
+      t.addTransform(Transforms.TRANSFORM_BASE64_DECODE);
+
+      XMLSignatureInput out = t.performTransforms(xmlinput);
+      String result = new String(out.getBytes());
+
+      assertTrue("\"" + result + "\"", result.equals(
+            "The URI of the transform is http://www.w3.org/2000/09/xmldsig#base64"));
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/utils/Base64Test.java b/src_unitTests/org/apache/xml/security/test/utils/Base64Test.java
new file mode 100644
index 0000000..81dea0e
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/utils/Base64Test.java
@@ -0,0 +1,150 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.utils;
+
+
+
+import java.io.ByteArrayOutputStream;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.Base64;
+
+
+/**
+ * Unit test for {@link org.apache.xml.security.utils.Base64}
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public class Base64Test extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(Base64Test.class.getName());
+
+   /**
+    * Method suite
+    * @return
+    *    
+    */
+   public static Test suite() {
+      return new TestSuite(Base64Test.class);
+   }
+
+   /**
+    *
+    * @param Name_
+    */
+   public Base64Test(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading", Base64Test.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+
+      // junit.swingui.TestRunner.main(testCaseName);
+   }    //public static void main(String[] args)
+
+   /**
+    * Method testA1
+    * @throws Exception
+    *
+    * @throws java.io.UnsupportedEncodingException
+    * $todo$ Extend more tests
+    */
+   public static void testA1() throws Exception {
+
+      String textData = "Hallo";
+      String result0 = Base64.encode(textData.getBytes("UTF-8"));
+
+      assertNotNull("Result of encoding result0", result0);
+
+      byte resultBytes[] = Base64.decode(result0);
+      String resultStr = new String(resultBytes, "UTF-8");
+
+      assertEquals("Result of decoding", 0, textData.compareTo(resultStr));
+      ByteArrayOutputStream os=new ByteArrayOutputStream();
+      Base64.decode(result0.getBytes(),os);
+      resultStr = new String(os.toByteArray(), "UTF-8");
+      assertEquals("Result of decoding", 0, textData.compareTo(resultStr));
+   }
+
+   /**
+    * Method testWrap1
+    *
+	* Test for correct line wrapping at end of an exactly 76 char string
+	*
+    * @throws java.io.UnsupportedEncodingException
+    * @throws Exception
+    */
+
+	public static void testWrap1() 
+		throws java.io.UnsupportedEncodingException,Exception {
+
+		String inputData = "The quick brown fox jumps over the lazy dog and some extr";
+		String expectedResult = "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZyBhbmQgc29tZSBleHRy";
+		String result = Base64.encode(inputData.getBytes("UTF-8"));
+		assertEquals("Result of encoding", result, expectedResult);
+
+		String result2 = new String(Base64.decode(result), "UTF-8");
+		assertEquals("Result of encoding", result2, inputData);
+        ByteArrayOutputStream os=new ByteArrayOutputStream();
+        Base64.decode(expectedResult.getBytes(),os);
+          result2 = new String(os.toByteArray(), "UTF-8");
+          assertEquals("Result of encoding", result2, inputData);
+
+	}
+
+   /**
+    * Method testWrap2
+    *
+	* Test for correct line wrapping after more than 76 characters
+	*
+    * @throws java.io.UnsupportedEncodingException
+    * @throws Exception
+    */
+
+	public static void testWrap2() 
+		throws java.io.UnsupportedEncodingException, Exception {
+
+		String inputData = "The quick brown fox jumps over the lazy dog and some extra text that will cause a line wrap";
+		String expectedResult = "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZyBhbmQgc29tZSBleHRy\nYSB0ZXh0IHRoYXQgd2lsbCBjYXVzZSBhIGxpbmUgd3JhcA==";
+		String result = Base64.encode(inputData.getBytes("UTF-8"));
+		assertEquals("Result of encoding", result, expectedResult);
+
+		String result2 = new String(Base64.decode(result), "UTF-8");
+		assertEquals("Result of encoding", result2, inputData);
+        ByteArrayOutputStream os=new ByteArrayOutputStream();
+        Base64.decode(expectedResult.getBytes(),os);
+          result2 = new String(os.toByteArray(), "UTF-8");
+          assertEquals("Result of encoding", result2, inputData);
+	}
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/utils/resolver/OfflineResolver.java b/src_unitTests/org/apache/xml/security/test/utils/resolver/OfflineResolver.java
new file mode 100644
index 0000000..788004c
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/utils/resolver/OfflineResolver.java
@@ -0,0 +1,176 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.utils.resolver;
+
+
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.ResourceResolverException;
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+import org.apache.xml.utils.URI;
+import org.w3c.dom.Attr;
+
+
+/**
+ * This class helps us home users to resolve http URIs without a network
+ * connection.
+ * <BR />
+ * The OfflineResolver is only needed for Unit testing. This is not needed for
+ * a production environment. It's a very simple cache/proxy to HTTP space
+ * so that I can do unit testing with http:// URIs even if I'm not connected
+ * to the internet.
+ *
+ * @author $Author$
+ */
+public class OfflineResolver extends ResourceResolverSpi {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(OfflineResolver.class.getName());
+
+   /**
+    * Method engineResolve
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    * @throws ResourceResolverException
+    */
+   public XMLSignatureInput engineResolve(Attr uri, String BaseURI)
+           throws ResourceResolverException {
+
+      try {
+         String URI = uri.getNodeValue();
+
+         if (OfflineResolver._uriMap.containsKey(URI)) {
+            String newURI = (String) OfflineResolver._uriMap.get(URI);
+
+            log.debug("Mapped " + URI + " to " + newURI);
+
+            InputStream is = new FileInputStream(newURI);
+
+            log.debug("Available bytes = " + is.available());
+
+            XMLSignatureInput result = new XMLSignatureInput(is);
+
+            // XMLSignatureInput result = new XMLSignatureInput(inputStream);
+            result.setSourceURI(URI);
+            result.setMIMEType((String) OfflineResolver._mimeMap.get(URI));
+
+            return result;
+         } else {
+            Object exArgs[] = {
+               "The URI " + URI + " is not configured for offline work" };
+
+            throw new ResourceResolverException("generic.EmptyMessage", exArgs,
+                                                uri, BaseURI);
+         }
+      } catch (IOException ex) {
+         throw new ResourceResolverException("generic.EmptyMessage", ex, uri,
+                                             BaseURI);
+      }
+   }
+
+   /**
+    * We resolve http URIs <I>without</I> fragment...
+    *
+    * @param uri
+    * @param BaseURI
+    *
+    */
+   public boolean engineCanResolve(Attr uri, String BaseURI) {
+
+      String uriNodeValue = uri.getNodeValue();
+
+      if (uriNodeValue.equals("") || uriNodeValue.startsWith("#")) {
+         return false;
+      }
+
+      try {
+         URI uriNew = new URI(new URI(BaseURI), uri.getNodeValue());
+
+         if (uriNew.getScheme().equals("http")) {
+            log.debug("I state that I can resolve " + uriNew.toString());
+
+            return true;
+         }
+
+         log.debug("I state that I can't resolve " + uriNew.toString());
+      } catch (URI.MalformedURIException ex) {}
+
+      return false;
+   }
+
+   /** Field _uriMap */
+   static Map _uriMap = null;
+
+   /** Field _mimeMap */
+   static Map _mimeMap = null;
+
+   /**
+    * Method register
+    *
+    * @param URI
+    * @param filename
+    * @param MIME
+    */
+   private static void register(String URI, String filename, String MIME) {
+      OfflineResolver._uriMap.put(URI, filename);
+      OfflineResolver._mimeMap.put(URI, MIME);
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+
+      OfflineResolver._uriMap = new HashMap();
+      OfflineResolver._mimeMap = new HashMap();
+      
+      String basedir = System.getProperty("basedir");
+      if(basedir == null) {
+      	basedir = "/";
+      }
+      else {
+      	basedir = basedir + "/";
+      }
+
+      OfflineResolver.register("http://www.w3.org/TR/xml-stylesheet",
+                               basedir + "data/org/w3c/www/TR/xml-stylesheet.html",
+                               "text/html");
+      OfflineResolver.register("http://www.w3.org/TR/2000/REC-xml-20001006",
+                               basedir + "data/org/w3c/www/TR/2000/REC-xml-20001006",
+                               "text/xml");
+      OfflineResolver.register("http://www.nue.et-inf.uni-siegen.de/index.html",
+                               basedir + "data/org/apache/xml/security/temp/nuehomepage",
+                               "text/html");
+      OfflineResolver.register(
+         "http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/id2.xml",
+         basedir + "data/org/apache/xml/security/temp/id2.xml", "text/xml");
+      OfflineResolver.register(
+         "http://xmldsig.pothole.com/xml-stylesheet.txt",
+         basedir + "data/com/pothole/xmldsig/xml-stylesheet.txt", "text/xml");
+      OfflineResolver.register(
+         "http://www.w3.org/Signature/2002/04/xml-stylesheet.b64",
+         basedir + "data/ie/baltimore/merlin-examples/merlin-xmldsig-twenty-three/xml-stylesheet.b64", "text/plain");
+   }
+}
diff --git a/src_unitTests/org/apache/xml/security/test/utils/resolver/ResourceResolverSpiTest.java b/src_unitTests/org/apache/xml/security/test/utils/resolver/ResourceResolverSpiTest.java
new file mode 100644
index 0000000..7d7097f
--- /dev/null
+++ b/src_unitTests/org/apache/xml/security/test/utils/resolver/ResourceResolverSpiTest.java
@@ -0,0 +1,135 @@
+
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.xml.security.test.utils.resolver;
+
+
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
+
+
+/**
+ *
+ *
+ *
+ *
+ * @author $Author$
+ *
+ */
+public class ResourceResolverSpiTest extends TestCase {
+
+   /** {@link org.apache.commons.logging} logging facility */
+    static org.apache.commons.logging.Log log = 
+        org.apache.commons.logging.LogFactory.getLog(
+                    ResourceResolverSpiTest.class.getName());
+
+   /**
+    * Method suite
+    *
+    *
+    */
+   public static Test suite() {
+      return new TestSuite(ResourceResolverSpiTest.class);
+   }
+
+   /**
+    *
+    * @param Name_
+    */
+   public ResourceResolverSpiTest(String Name_) {
+      super(Name_);
+   }
+
+   /**
+    *
+    * @param args
+    */
+   public static void main(String[] args) {
+
+      String[] testCaseName = { "-noloading",
+                                ResourceResolverSpiTest.class.getName() };
+
+      junit.textui.TestRunner.main(testCaseName);
+
+      // junit.swingui.TestRunner.main(testCaseName);
+   }
+
+   /**
+    * Method testExpandSystemId_1
+    *
+    * @throws Exception
+    */
+   public static void testExpandSystemId_1() throws Exception {
+
+      String systemId = "http://www.w3.org/1.xml";
+      String currentSystemId = "http://localhost/file.txt";
+      String expected = "http://www.w3.org/1.xml";
+      String result = ResourceResolverSpi.expandSystemId(systemId,
+                         currentSystemId);
+      String description = "systemId='" + systemId + "' currentSystemId='"
+                           + currentSystemId + "' expected='" + expected
+                           + "' but was: " + result;
+
+      assertTrue(description, result.equals(expected));
+   }
+
+   /**
+    * Method testExpandSystemId_2
+    *
+    * @throws Exception
+    */
+   public static void testExpandSystemId_2() throws Exception {
+
+      String systemId = "1.xml";
+      String currentSystemId = "http://www.w3.org/file.xml";
+      String expected = "http://www.w3.org/1.xml";
+      String result = ResourceResolverSpi.expandSystemId(systemId,
+                         currentSystemId);
+      String description = "systemId='" + systemId + "' currentSystemId='"
+                           + currentSystemId + "' expected='" + expected
+                           + "' but was: " + result;
+
+      assertTrue(description, result.equals(expected));
+   }
+
+   /**
+    * Method testExpandSystemId_3
+    *
+    * @throws Exception
+    */
+   public static void _testExpandSystemId_3() throws Exception {
+
+      String systemId = "1.xml";
+      String currentSystemId = "file:/Y:\\dir\\3.xml";
+      String expected = "file:/Y:/dir/1.xml";
+      String result = ResourceResolverSpi.expandSystemId(systemId,
+                         currentSystemId);
+      String description = "systemId='" + systemId + "' currentSystemId='"
+                           + currentSystemId + "' expected='" + expected
+                           + "' but was: " + result;
+
+      assertTrue(description, result.equals(expected));
+   }
+
+   static {
+      org.apache.xml.security.Init.init();
+   }
+}